Про Ofront —
продолжение разговора с Ильёй Ермаковым в привате.
Илья Ермаков писал(а):
Добрый день, Олег!
Здравствуйте, Илья Евгеньевич.
Илья Ермаков писал(а):
Любопытно про Оминк... Непонятно только, когда выложат.
Да сам жду не дождусь.
Но может и не выложат никогда, не хотят порочить своё имя сырым продуктом, видимо. У них мало интереса делать что-то серьёзное безплатно. У меня больше надежды на профессора K John Gough с его GPCP for LLVM.
Илья Ермаков писал(а):
А как вообще Офронт, насколько применимая и не-сырая вещь?
Офронт по моим субъективным ощущениям очень продуман и вылизан, Йозеф Темпл реализовал его в духе Оберонов — чрезвычайно гибким в настройках и широко функциональным. Если с ooc надо шаманить с бубном, чего не выдержали мои нервы, то вся установка Ofront'а сводится к распаковке архива. В целом, получился стабильный продукт, но с некотрыми "но.".
Во-первых, это Оберон-2. Т.е. юникодовые строки в чистом виде не присутствуют. Но работать с ними можно, объявив в файле настроек строковый тип как двухбайтовый (при этом теряя возможность работы с однобайтовыми строками). Можно иметь 32-битный INTEGER и 64-битный LONGINT, это всё настраивается.
Изначально, как я понимаю, Ofront разрабатывался для портирования системы ETH Oberon на новые архитектуры через Си. Из-за чего он весьма завязан на библиотеке libOberonV4.so, реализующей Оберон-рантайм и различные библиотечные модули в стиле ETH Oberon. Насколько хорошо это получилось — смотрите эту ссылку:
Цитата:
Oberon System V4 (Kepler version, Linz, Austria) translated by Ofront and running on tablet PC Nokia N810 —
http://norayr.arnet.am/weblog/?p=668Благодаря кастомизабельности Офронта его можно отучить и от ядра, и от Оберон-рантаймов, и работать в весьма минималистичном стиле через libc или ещё как-то иначе.
Ofront есть в виде подсистемы BlackBox и для командной строки Linux, но целевая платформа для разработанного приложения — по задумке Linux, с подключением к целевому приложению библиотеки libOberonV4.so, так что платформа Win32 остаётся неподдержанной (что не мешает всё-таки разрабатывать для неё на Офронте без libOberonV4.so). Можно ли поддержать Windows? Несомненно да. Просто Темплу это не было нужно, как и собирать консольную версию Офронта для Windows.
Илья Ермаков писал(а):
У них есть метаинформация во время выполнения? Т.е. могу ли я реализовать дин. модульность, например? По типу Борланд BPL - когда несколько модулей собираются в DLL, имеющую предопределённые специальные точки входа (типа ДатьСписокМодулей(), ДатьСекциюКодаМодуляХ(), ДатьСекциюДанныхМодуляХ()).
Метаинформация во время исполнения есть, даже регистрация процедур без параметров как команд (средствами ядра). Динамическая модульность тоже есть. Сборка мусора, само собой, есть.
Цитата:
The following list and the subsequent explanations give an overview of the most important highlights of Ofront.
• full Oberon-2 language support
• extensible module interfaces
• fast translation
• parameterization for arbitrary C compilers, ANSI and K&R
• highly compact and efficient run-time system
• automatic precise garbage collection
• advanced heap management (growth on demand, finalization)
• commands and modules preserved
• dynamic loading of modules or subsystems
• interfacing with C or other foreign languages
• clean and human-readable C code, no warnings
• information hiding preserved in the generated header files
• multiple libraries available
• command-line version and integrated development environment
Для серьёзной работы с Офронтом не помешает хорошее знание языка Си. Чего по моему мнению больше всего не хватает Офронту — творческого подхода к нему со стороны коммьюнити. Тем более, Темпл отпустил его в широкое плавание, чего нельзя сказать, например, про XDS-C.
В принципе, читайте вот эту доку, вопросы отпадут:
https://github.com/Oleg-N-Cher/BB-XDev/ ... ntUser.doc