Вверх ↑
Ответов: 4611
Рейтинг: 745
#1: 2012-09-24 11:51:03 ЛС | профиль | цитата
Сборка компилятора FPC 3.2.2 и KOL 3.23 (32 и 64 бита, ANSI и Unicode режимы)



Компилятор и пакет Delphi (SVN rev. 2404), подготовленный для этого компилятора
https://dfiles.eu/files/a8xe8khaf

Установка
- создайте копию своей папки HiAsm. В названии не должно быть русских букв. Все дальнейшие шаги проводятся с этой новой папкой.
- создайте ярлык на HiAsm.exe из этой новой папки.
- удалите папку HiAsm\Elements\Delphi, а вместо неё поместите папку из архива "Delphi pack FPC 3.2.2 (SVN rev 2404) Unicode.rar"
- установите компилятор - запустите файл "FPC 3.2.2 Compiler Setup.exe", укажите папку HiAsm, которую вы выделили для нового компилятора на первом шаге. Следуйте указаниям установщика.
- при компиляции проектов выберите один из новых вариантов компилятора FPC


Отладочный режим
Кому нужно, может установить и настроить компилятор на подробный вывод ошибок с указанием исходных файлов, номеров строк и названий процедур.
1) Скачайте этот архив и распакуйте в каталог HiAsm (с сохранением структуры)
2) Перетащите файл "HiAsm\compiler\FPC2\Install Debug.his" в окно или на значок HiAsm
3) Выполните файлы "HiAsm\compiler\FPC2\src\_make_x32_dbg.bat" и "HiAsm\compiler\FPC2\src\_make_x64_dbg.bat"
В HiAsm появится два компилятора FPC-32dbg и FPC-64dbg.


1. Зачем всё это

Цель проведенной работы - проверить и показать, что возможно перейти на новый компилятор и KOL и поддерживать их в актуальном состоянии. В целом, за редкими исключениями, можно вообще отказаться от компилятора Delphi. Задача-максимум - убедить разработчиков отказаться от старого штатного компилятора FPC и делать компоненты, ориентируясь на новый.

2. Бочка мёда

- Все компоненты остаются совместимыми с текущими компиляторами. Совместимость с новым обеспечивается директивами условной компиляции в коде компонентов.

- Переход на новый компилятор позволит без особых трудностей регулярно обновлять его и библиотеку KOL.

- С новым FPC можно собирать истинные 64-битные приложения.

- Реализована поддержка Unicode.

- Поскольку используются полные, а не урезанные версии системных модулей, для HiAsm становится доступным весь код, который выпускается для FPC, а портирование компонентов Delphi, не завязанных на VCL, упрощается.

- На данный момент на новом компиляторе заработали компоненты StyleXP, PNG, FastMathParse, PlotDiffSeries, Jpeg, Zlib без DLL и компоненты из вкладки WMI

- В предложенном мной пакете я уже внес изменения во все компоненты, которые только смог, для обеспечения компилируемости новым компилятором. Хотя в работе пока не все протестированы.

3. Ложка дегтя

- Компоненты Флеш и Веб-браузер по-прежнему не работают. Но шансы адаптировать их или сделать аналоги сильно выросли.

- Проблемы со свойством Transparent (частино решение найдено); не работает VBScript, VBJScript; по-прежнему не работает UseActiveX. Есть некоторые проблемы с модальностью форм и уничтожением динамических контейнеров.

- Не все компоненты протестированы в работе с новым компилятором.

- Из-за того, что используются неурезанные системные модули, вырос размер исполняемого файла.

4. Что было сделано

- Был настроен компилятор и отобраны минимально необходимые модули для работы. Некоторые модули были незначительно изменены для использования с новыми настройками компилятора.

- Были переработаны файлы KOL для работы с новым компилятором в 64-битном и Unicode режимах.

- Самое глобальное изменение - в коде компонентов функция ToString() теперь должна писаться как Share.ToString(). Причина этого в том, что в корневом классе нового FPC уже есть метод ToString. Вызов этой функции из методов класса-наследника без уточнения модуля означает, что вызывается метод класса-предка. Также для поддержки Unicode в своих компонентах разработчики в коде должны использовать дополнительные функции по работе с кодировками и строками.

- Были переработаны практически все компоненты для работы с новым компилятором в 64-битном и Unicode режимах.

- Библиотеки make, draw, Codegen.dll были доработаны для компиляции новым FPC.

- Разработчикам компонентов: в коде можно использовать следующие дефайны:
{$ifdef F_P} - для кода, предназначенного для старого компилятора;
{$ifdef FPC_NEW}, {$ifdef KOL3XX} - код для нового компилятора. Необязательный второй вариант уточняет, что код характерен только для новой KOL
{$ifdef FPC} - код, работающий со старым и новым FPC, но не работающий с Delphi
{$ifndef FPC} - код только для Delphi.
WIN64, WIN32 - разрядность ОС.
Ну, и их вариации.

5. Что нужно сделать


- Нужно протестировать все компоненты с новым компилятором. Выявленные ошибки - исправить.

- Если разработчики примут решение официально поддерживать этот компилятор, нужно:
- внести изменения в компоненты на SVN. Готов выполнить первоначальные правки;
- разместить компилятор на SVN;
- оперативно вносить исправления в компоненты и файлы компилятора по мере обнаружения и решения возникающих ошибок.
- разработчикам новых компонентов также тестировать их на совместимость с новым компилятором.
- если новая KOL будет нормально оттестирована, её также можно пристроить к компилятору Delphi.
карма: 26

23
Голосовали:hitman249, CriDos, Ex_, iarspider, faniss, sаmakacd, sintet, vovs, Poputchik, login, Konst, laborpago, flint2, parara, Vaeltaja, rav, Joiner, Rysik, flud, lisnic, Gunta, ric, sla8a
Редактировалось 29 раз(а), последний 2022-12-13 19:00:13