OberonCore https://forum.oberoncore.ru/ |
|
Fox как обычный консольный компилятор и минимальный рантайм https://forum.oberoncore.ru/viewtopic.php?f=22&t=6918 |
Страница 1 из 1 |
Автор: | arisu [ Пятница, 17 Март, 2023 20:52 ] |
Заголовок сообщения: | Fox как обычный консольный компилятор и минимальный рантайм |
слушайте, а никто не пытался взять из A2 ядро, которое работает поверх ОС, стрипнуть всё остальное, взять компилятор, и запускать это из консоли? не обязательно генерировать монолитные родные бинари: этот же минимальный рантайм можно использовать и для прикладного софта. компилятор ведь хороший, умеет в кучу архитектур, мультипоточность в ядрах из коробки… финальные бинари можно делать как в BB: просто собирать все модули в кучку. зачем мучиться с транспилерами в си, если можно иметь полноценную оберон-систему со всей её модульной динамикой, всё сделано же уже? понятно, что придётся, по сути, сделать новый рантайм (тексты, файлы, etc.) и пристыковать его к фоксу. и научить фокс генерировать модули-импорты .so/.dll. не так уж сложно. если б в сутках было хотя бы часов пятьдесят-шестьдесят, я бы и сам занялся… |
Автор: | Oleg N. Cher [ Пятница, 17 Март, 2023 21:57 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
Так вроде в A2 уже давно не Fox в качестве компилера? |
Автор: | arisu [ Суббота, 18 Март, 2023 00:59 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
вы спутали Fox и PACO, кажется. прошлый был PACO, потом его заменили на Fox. |
Автор: | Sergej Durmanov [ Суббота, 18 Март, 2023 18:21 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
оно уже давно именно так и работает. https://t.me/A2OperatingSystem/19514 |
Автор: | arisu [ Суббота, 18 Март, 2023 18:51 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
простите, не имею ни малейшего понятия что там написано, увы: не имею фсбграма. если на свете существует возможность использовать Fox как обычный консольный комипилятор с небольшим рантаймом для написания софта не под A2, по сути — то это очень круто спрятаная фича. как, впрочем, и почти всё, что относится к A2, увы. очень жаль. так мы слона никогда не продадим. T_T |
Автор: | Sergej Durmanov [ Суббота, 18 Март, 2023 19:38 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
не знаю, что, куда и кем "спрятано", но достаточно задать себе вопрос, а как же а2 собирается из а2 и запускается в виде обычного приложения в других ОС? |
Автор: | arisu [ Суббота, 18 Март, 2023 20:26 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
я довольно криво пояснил, простите. я кагбэ понимаю, что это реализовано, однако я имел в виду совсем не то. или как минимум не совсем то. я имел в виду готовый к использованию пакет, в котором от A2 только ядро и наиминимальнейший рантайм для чтения и компиляции текстовых файлов (ну, и для складывания получившихся артефактов в заданое место). то есть, чтобы выглядело как классический консольный компилятор софта для host os, с биндингами к другим библиотекам, и так далее. плюс минимальный рантайм без подвязок к текстовой и оконной системе A2. ну, то есть, чтобы взять этот пакет — и просто писать софт под целевую ос (а не под A2), используя минимум из A2 как рантайм. то есть, ядро, чтение текстовых файлов, запись артефактов, динамическая загрузка модулей — и всё. и дальше бинды к «родным» библиотекам. я понимаю, что это можно оформить из того, что уже есть — но готового-то нет. а жаль. у меня, в общем, не особо праздный интерес: я бы это применил для нескольких своих проектов. но категорически не хватает длины суток, чтобы попытаться это оформить; особенно с учётом того, что с A2 я знаком весьма шапочно. |
Автор: | Sergej Durmanov [ Суббота, 18 Март, 2023 21:53 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
a2 как приложение запускается в виде консольной программы-командной оболочки, из которой стартует gui (или не стартует, если соответствующие команды отсутствуют). Куда уж меньше ужимать? Код: module Hello;
import StdIO, Commands, Options; procedure Run( context: Commands.Context ); var options: Options.Options; var str: array 256 of char; begin if ~context.arg.GetString( str ) then (* skip app name *) context.error.String("Critical error: no arg"); context.error.Update; context.result := Commands.CommandError; return; end; new( options ); options.Add( "s", "show", Options.String ); if options.Parse( context.arg, context.error ) & options.GetString( "show", str ) then context.out.String( str ); context.out.Ln; context.out.Update; end; end Run; begin trace("Hello, World!"); Run( StdIO.env ); end Hello. компиляция oberon.exe --config=oberon.ini compile Hello.mod линковка для вин64 oberon.exe --config=oberon.ini link --fileName=hello.exe --fileFormat=PE64CUI --extension=GofWw --displacement=401000H Trace Traps Hello |
Автор: | arisu [ Суббота, 18 Март, 2023 22:10 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
Sergej Durmanov писал(а): a2 как приложение запускается в виде консольной программы-командной оболочки, из которой стартует gui (или не стартует, если соответствующие команды отсутствуют). Куда уж меньше ужимать? если я верно понимаю — то там вся среда почти заводится, просто без гуёв. то есть, вся механика: текстовые модели, fs translation layer, интерпретаторы команд, etc., etc. то есть, по факту, весь фрэймворк — который в принкладном софте (лично мне) не нужен.а я бы хотел, чтобы там было только ядро, загрузчик модулей, Files, и Reader для plain text, чтобы кормить компилятор. и всё. а, ну и сам компилятор, конечно. ;-) остальное выкусить и выкинуть. то есть, совсем-совсем минимальный рантайм. а я поверх построю свой, без всего, что делает A2 хорошей. ;-) если именно это уже есть, и так можно — то руководство бы какое, чтобы выдернуть вот нужные пять-семь модулей и всё. или скрипт для создания такой штуки бы. |
Автор: | arisu [ Воскресенье, 19 Март, 2023 22:41 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
собственно, до меня дошло, что я опять ни разу не пояснил, зачем оно мне надо. во-первых, я хочу делать индюшатные видеоигори. хитрый план: поставлять вместе с ними тот же компилер, который был использован для написания, и все модули игоря. соответственно, любой игорь автоматически поставляется с SDK для модов, причём полноценным. минимальные изменения в компилере (запрет на импорт SYSTEM и ещё мелочи для ограничения доступа к другим опасным модулям) — и SDK становится безопасным, хоть и компилируемым в машинный код. причём не надо делать никаких скриптовых языков, JIT, обвязок для экспорта кишок игры в скрипты… киллер фича, ни у кого такой нет. соответственно, для этой задачи мне не нужно ничего из A2 кроме ядра и минимальной читалки plain text, чтобы завести компилятор. остальное я себе сделаю сам, под конкретные нужды. а во-вторых, если приделать к фоксу парзер компонентного паскаля, то на это ядро можно пересадить BlackBox. и получить столь желаемую поддержку кучи архитектур в нём. а парзер CP можно будет вернуть обратно в основную A2, он там никому ж не помешает. |
Автор: | Sergej Durmanov [ Четверг, 23 Март, 2023 05:42 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
Fox работает со Streams, а не с Texts. Поэтому и отвязывать ничего не нужно. |
Автор: | arisu [ Четверг, 23 Март, 2023 06:16 ] |
Заголовок сообщения: | Re: Fox как обычный консольный компилятор и минимальный рант |
понял. я довольно давно смотрел в A2, простите. в любом случае: я ваш пример линковки себе схоронил, спасибо. когда появится возможность — полезу разбираться нормально. если у меня хватит терпения хотя бы на PoC, то обязательно сообщу на форуме. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |