OberonCore
https://forum.oberoncore.ru/

Fox как обычный консольный компилятор и минимальный рантайм
https://forum.oberoncore.ru/viewtopic.php?f=22&t=6918
Страница 2 из 2

Автор:  budden [ Среда, 27 Март, 2024 13:09 ]
Заголовок сообщения:  Re: Fox как обычный консольный компилятор и минимальный рант

Ещё раз посмотрел видео - здесь скомпилировано всего два файла. Однако они используют другие модули системы, поэтому и нужно подключать Release.Tool (я так думаю, во всяком случае).

Кроме того, здесь не показана полная сборка всего, что потом будет запускаться. Используется приложение oberon, которое в данном видео не собирается. Его сборка гораздо сложнее, я про это выше писал - она собирается во время пересборки A2, у меня в ЯОС есть для этого скрипты, и я дал на них ссылку. Как это делают в A2 - я сейчас не знаю, хотя когда-то Сергей или Ярослав мне это объясняли и на этом знании я и сделал свои скрипты. Описано ли это где-нибудь для A2 - тоже не знаю.

Соответственно, основное "мясо" в виде рантайм-среды находится в oberon. Другая часть мяса - это oberon.ini.

В данном же видео собирается только модуль (в переводе на обычный язык его можно считать как .so или .dll, а может быть, как объектный файл, который oberon умеет линковать). Далее запускается oberon, который с помощью механизма загрузки модулей загрузки модулей загружает этот модуль. Почему загружает? Видимо, это указано в oberon.ini. Oberon.ini - это набор команд на языке команд A2, но это Вы уже и без меня знаете.

Автор:  budden [ Среда, 27 Март, 2024 13:12 ]
Заголовок сообщения:  Re: Fox как обычный консольный компилятор и минимальный рант

Соответственно, к вопросу о "минимальности" рантайма. Поскольку на видео состав oberon не показан, вот команда линковки
для моей сборки Linux64. В A2 наверняка те же самые модули, и все они реально загружаются (они статически слинкованы в приложение oberon).

Код:
 Linker.Link -p=Linux64 --path=bin/ Builtins Trace Glue Unix Machine Кучи Modules Objects Kernel KernelLog Streams Commands Pipes StdIO TrapWriters Reflection Traps Files UnixFiles Clock Dates Reals Strings Diagnostics BitSets StringPool ObjectFile GenericLinker Loader System StdIOShell Shell


Можно ли отсюда что-то выкинуть? Думаю, максимум можно выкинуть последние два. Соответственно, ваше приложение - это oberon + ваша пара Hello.GofW, Hello.sym, плюс oberon.ini.

Автор:  budden [ Среда, 27 Март, 2024 13:15 ]
Заголовок сообщения:  Re: Fox как обычный консольный компилятор и минимальный рант

Наверное, можно добавить Ваш модуль прямо в команду линковки oberon, тогда можно будет выкинуть ещё и механизм динамической загрузки модулей (скорее всего, это минус два модуля, а может быть и больше), а вместо выполнения oberon.ini при старте вписать код инициализации Вашего кода прямо в код загрузки oberon (см. выше, как его изучать). В этом случае можно будет выкинуть и интерпретатор команд и получится просто одно приложение, которому не нужны всякие текстовые конфигурации. С другой стороны, сегодня компьютеры могущественны и можно усомниться в целесообразности такой минимизации. Люди вон на Питоне пишут - там есть интерпретатор Питона, библиотеки в виде pip и ещё пользовательский скрипт. Тоже много файлов.

Автор:  olenellus [ Четверг, 28 Март, 2024 02:50 ]
Заголовок сообщения:  Re: Fox как обычный консольный компилятор и минимальный рант

Спасибо! Пока не разобрался, но удалось запустить мой расчётный и прикладной модули, написанные для разных компиляторов Оберона-2, правда, пока только в режиме интерпретатора (через вызов oberon и команду). Пришлось, правда, переопределяемые процедуры связанные с типом POINTER TO RECORD связать с типом RECORD и передавать запись через VAR. На расширяемые указатели fox почему-то ругался.

Автор:  budden [ Четверг, 28 Март, 2024 10:53 ]
Заголовок сообщения:  Re: Fox как обычный консольный компилятор и минимальный рант

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

Страница 2 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/