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/