Джентльмены, прошу консультации по продукту.
Ситуация такова: есть старое приложение, написанное на Delphi, с большим количеством скриптового кода, исполняемого через полусамодельный интерпретатор. Скрипты активно используют VCL: строят и наполняют формы итп. Это приложение готовится к кардинальной переделке, в частности, стоит задача ускорения работы скриптов.
Проблему ускорения хочется решить кардинально, перейдя к runtime компиляции. Для этого рассматриваются разные варианты, натыкающиеся на разные проблемы. Один из вариантов - остаться на W32, найдя или доработав подходящий встраиваемый компилятор.
Собственно вопрос: может ли Free Pascal выступить в таком качестве? Cможет ли он сгенерировать код, совместимый с дельфовым, обращающийся к дельфовым компонентом, наследующийся от дельфовых форм итп? Подразумевается возможность применения некоторого разумного количества сил - скажем, в пределах человеко-месяца - на "доработку напильником".
Бинарная совместимость Free Pascal с Delphi
Модератор: Модераторы
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Интересный вопрос... Ответ "в лоб" - нет. У FPC отличается структура RTTI и совершенно другой рантайм.
С другой стороны - если оставить в стороне лицензионную чистоту вопроса - то VCL компилируется из исходников с помощью FPC после буквально получасовой доработки. И потом работает.
С третьей стороны - структура RTTI Дельфей не является тайной за семью печатями, и, например, в JVCL есть модули, которые занимаются построением RTTI в рантайме.
Наконец - лично я вообще с трудом представляю себе использование полноценного компилятора для работы со скриптами. Ему ведь надо, считай, всю VCL плюс исходники собственной программы на вход скормить, чтобы он сгенерировал правильный код для чего-то типа Form1.Visible := True
С другой стороны - если оставить в стороне лицензионную чистоту вопроса - то VCL компилируется из исходников с помощью FPC после буквально получасовой доработки. И потом работает.
С третьей стороны - структура RTTI Дельфей не является тайной за семью печатями, и, например, в JVCL есть модули, которые занимаются построением RTTI в рантайме.
Наконец - лично я вообще с трудом представляю себе использование полноценного компилятора для работы со скриптами. Ему ведь надо, считай, всю VCL плюс исходники собственной программы на вход скормить, чтобы он сгенерировал правильный код для чего-то типа Form1.Visible := True
Sergei I. Gorelkin писал(а):С другой стороны - если оставить в стороне лицензионную чистоту вопроса
Оставить ее в стороне не удастся. Да и полностью переходить на новый компилятор - вопрос, требующий аккуратности; более вероятно, что в этом случае перейдем на Delphi for .NET
Sergei I. Gorelkin писал(а):С третьей стороны - структура RTTI Дельфей не является тайной за семью печатями,
Не является. Но у меня большие сомнения в том, что я смогу взять исходники незнакомого компилятора и быстро перепилить его на полностью совместимый интерфейс, ничего не сломав.
Sergei I. Gorelkin писал(а):Наконец - лично я вообще с трудом представляю себе использование полноценного компилятора для работы со скриптами.
Альтернативы не лучше. Транслятор - такая вещь, что надо или садиться и делать хорошо, или не делать. Со "сделанным быстро" здесь уже помучались.
Sergei I. Gorelkin писал(а):Ему ведь надо, считай, всю VCL плюс исходники собственной программы на вход скормить,
Ну, не всю VCL, только интерфейсы нужных частей.
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Softwarer писал(а):Sergei I. Gorelkin писал(а):С третьей стороны - структура RTTI Дельфей не является тайной за семью печатями,
Не является. Но у меня большие сомнения в том, что я смогу взять исходники незнакомого компилятора и быстро перепилить его на полностью совместимый интерфейс, ничего не сломав.
Нууу... перепилить компилятор не реально, понятное дело. Я имел в виду создание прослойки, которую можно будет использовать как из FPC, так и из VCL.
Softwarer писал(а):Альтернативы не лучше. Транслятор - такая вещь, что надо или садиться и делать хорошо, или не делать. Со "сделанным быстро" здесь уже помучались.
Сложно рассуждать, не имея представления о том, с какой скоростью работает сейчас, и о том, какую хочется получить. К примеру, тот же Перл не компилирует в машинный код, но при этом обладает вполне приемлемым (для своих задач) быстродействием. Если подобный подход приемлем для данного случая, то от FPC можно взять front-end (парсер + анализатор, они достаточно хорошо отделены от кодогенератора).
