Skip Navigation Links
Проект "Real Time Systems DD"
Сборка набора инструментов «GNAT Community 2018» для платформы MinGW-w64.

Не прошло и двадцати лет и, наконец-то, в мае 2018 года компания «AdaCore» выпустила 64-рязрадную среду программирования ADA под Windows «GNAT Community 2018». Но, как оказалось, этот набор инструментов очень плохо подходит для разработки приложений для Windows. В качестве основы взаимодействия приложений с пользователем была выбрана комбинация MINGW-пакетов Cairo и GTK+, которые не являются естественными для Windows и создают нагромождение интерфейсов. Эти пакеты необходимы для разработки и функционирования интегрированной среды программирования GPS, но разрабатывать приложения для Windows на их основе сложно и трудоёмко. Интегрированный редактор GPS также плохо приспособлен для разработки приложений для Windows. Поддерживаются реликтовые кодировки типа «Cyrillic (ISO-8859-5)», которые нигде не используются с начала 80-х годов прошлого века, а кодировки Windows-ANSI и Windows-OEM не поддерживаются, но эти кодировки необходимы для редактирования исходных текстов программ для Windows и файлов ресурсов Win32-приложений. Интегрированная среда GPS не является полностью 64-х разрядной. Утилита «explaunch.exe», осуществляющая перехват вызовов API консольного вывода подчинённых процессов, является 32-разрядным приложением и бесполезна для 64-разрядных процессов. Я разработал 64-разрядный вариант этой утилиты ещё в 2015 году. Утилита GPRINSTALL не устанавливает EXE-файлы (пытается установить исполняемые файлы без расширения, а их не существует). Я этот глюк исправил ещё в 2013 году. Разрабатывать COM-компоненты и COM-приложения на языке ADA вообще нет никакой возможности.

В конце 90-х и начале 2000-х годов интегрированной средой разработки под Windows систем GNAT GPL был редактор AdaGIDE, который поддерживал разработку Win32-приложений. Была возможность скачивания и установки пакета Win32Ada и пакетов GNATCOM и GWindos проекта GNAVI. Белорусский проект GNAT OEM был создан специально для разработок Win32-приложений на языке ADA. С появлением редактора GPS пакеты проекта GNAVI перестали поддерживаться, исходные тексты редактора AdaGIDE были утеряны, бинарные инсталляторы этого редактора перестали работать, проект GNAT OEM перестал развиваться. В редакциях GNAT GPL 2017 и GNAT Community 2018 исчез даже пакет Win32Ada, хотя, с самого начала, он был практически бесполезен, разрабатывать Win32-приложения с помощью этого пакета практически невозможно, а доступ к функциям Win32 API лучше осуществлять с помощью прагм Import в нужных местах и в нужном контексте.

Очень часто, при обсуждении технологий разработок программного обеспечения на языке ADA, затрагивается вопрос о переносимости ПО на уровне исходных текстов. Отсюда такие рекомендации, как использование переносимых графических оболочек GTK+ или QT. На самом деле, из-за сильнейшей зависимости ЮНИКС-подобных ОС от версий системных библиотек, настоящей переносимости на уровне исходных текстов не существует и никогда не существовало! Поставщики операционных систем уже давно перестали затрагивать вопрос о переносимости ПО, а вот в сфере ADA-технологий он почему-то постоянно всплывает. Кардинальным решением проблем переносимости ADA-программ, я думаю, было бы изменение стандарта ADA и внесение реализаций графических и консольных интерактивных интерфейсов в стандартную исполняющую библиотеку ADA. Что использовать для реализации этих интерфейсов – Win32 API, X-Win API, NCURSES или что-то ещё, определялось бы на стадии генерации компилятора и исполняющей библиотеки. Пример внесения графического интерактивного интерфейса в исполняющую библиотеку языка программирования: система программирования MODULA3. При этом, определения синтаксиса и семантики языка программирования, основных интерфейсов исполняющей системы оставались очень компактными и понятными. Другой пример переносимой среды программирования: популярная система программирования ДЕЛФИ.

В настоящее время надежным способом разработки переносимых интерактивных приложений на языке ADA является создание веб-приложений в системе AWS и использование для текстового и графического ввода/вывода возможностей современных веб-браузеров, которые, благодаря стандартам и рекомендациям W3C, примерно одинаковы для всех.


Главной особенностью предлагаемой сборки является наличие развитых средств и возможностей разработки Win32-приложений на языке ADA.

Сам процесс сборки подобен процессу сборки описанному в статье Сборка среды GNAT Ada GPL 2017 для платформы MinGW-w64 но только с несколько иным набором исходных текстов.

В предлагаемой сборке реализованы почти все пакеты из списка пакетов для сборки «GNAT Community 2018» на платформе Windows от компании «AdaCore». В результате получилась, пожалуй, самая навороченная сборка MINGW64 версии 7.3.1. Построенная сборка включает компиляторы языков программирования Ada, C, C++, Fortran, ObjC, Obj-C++; интерпретаторы Python, Perl, Tcl/Tk, Ruby; интерактивный отладчик gdb v.8.0; систему управления проектами CMake, утилиту скачивания CUrl с широким набором поддерживаемых протоколов и возможностей; системы управления базами данных "Berkeley DB", "SQLite3", "PostgreSQL"; библиотеку двумерного графического вывода Cairo v.1.15.4; библиотеку оконного ввода/вывода GTK+ v.3.14.15; мощный редактор исходных текстов программ "GPS Community 2018 (GNAT Programming Studio)" с широкими возможностями построения проектов, компиляции и отладки программ, доступа к документации по программированию; 64-разрядную реализацию Ada-библиотек XmlAda, GtkAda, GNATColl, Win32Ada.

Для обеспечения возможностей разработки Win32-приложений реализованы следующие Ada-проекты:
  • Unicode_ConsoleAda-библиотека ввода/вывода MINGW-консоли;
  • AdaCursesWAda-обёртка для Wide-варианта MINGW-пакета «ncurses 6.0» (статья Ada2012 Unicode NCURSES);
  • GNATCOMФреймворк для разработок COM-приложений на языке ADA;
  • GWindowsФреймворк для разработок интерактивных графических Win32-приложений на языке ADA;
  • GMSHTMLAda-библиотека поддержки HTML-форм на языке ADA;

Все указанные выше пакеты поддерживают UNICODE-программирование и, по сложности и объёму исходных кодов при разработке приложений, соответствуют программированию на языке C++ с использованием фреймворков ATL и MFC от компании «Microsoft»!

Для обеспечения возможностей разработки Win32-приложений в сборку включены также следующие сторонние утилиты:
  • ResEdit – мощный, свободный редактор ресурсов Win32-приложений разработки «resedit.net».
  • Midl – компилятор IDL-файлов из пакета «Windows SDK» компании «Microsoft». Необходимость включения этой утилиты продиктована тем, что MINGW-компилятор IDL-файлов Widl неработоспособен.
В связи с особенностями разработок 64-разрядных Win32-приложений в модули редактора GPS внесены некоторые изменения:
  • Существенным переделкам подверглись коды утилиты explaunch.exe, осуществляющей перехват консольного вывода подчинённого процесса. Так как эти коды в существующем пакете были существенно 32-разрядными пришлось потрудиться, чтобы перевести их в 64-разрядный код.
  • В список кодировок окна редактирования введены две новые кодировки: локальная кодировка ANSI и локальная кодировка OEM, кодовые страницы которых берутся из Windows. Вообще то, при программировании под Windows, нужны только три кодировки: ANSI, OEM и UTF-8.
  • При запуске приложения gps.exe переменная окружения LANG получает значение «en_US.UTF-8», что предотвращает вывод нечитаемых не английских строк в окно сообщений.
  • В строку запуска процесса отладчика gdb.exe добавляется ещё один обязательный параметр '-iex "set new-console on"', что позволяет отлаживать в среде GPS консольные приложения.

Инсталляция сборки и исходников производится при помощи Inno Setup инсталлятора rtsdd_gnat_2018.exe со скачиванием выбранных компонент инсталляции с моего сайта.

* Windows Defender теперь стал определять инсталлятор "rtsdd_gnat_2018.exe" как опасное для безопасности приложение (неизвестный издатель). Но никакой приватной информации на сервер не посылается и данный файл можно запукать.

После инсталляции компонент нужно установить владельцем каталогов C:\ADAPROJECTS, C:\msys64 и всех их подкаталогов, и файлов текущего пользователя, дать этому пользователю полный доступ к этим каталогам, подкаталогам и файлам. А также, если вы планируете в дальнейшем модернизировать сборку, сделать тоже самое для каталога C:\MinGW64\7.3.1.

Если вы хотите самостоятельно произвести сборку из исходников, то в каталогах C:\ADAPROJECTS\MINGW731\build\Debug и C:\ADAPROJECTS\MINGW731\build\Release имеются файлы gcc-7.3.1.txt, содержащие команды сборки соответствующих типов.


Ну вот пока и всё! Наслаждайтесь жизнью в мире программирования GNAT Community 2018 для Windows!!

Сергей Дюков
Адрес Skype



Таблица комментариев и пожеланий:
Добавте новый комментарий или пожелание:
Имя создателя комментария:   
Адрес электронной почты создателя комментария:   
Текст комментария:   
   
«RTSDD Web-Site» v 1.0.0000.0001 β Системы Реального Времени DD © 2019
Главный архитектор систем Сергей Дюков
Готово Статус исполнения