Как собрать компилятор "Лис"?

Только технические вопросы по ЯОС и MINOS. Терминология и прочее - в других форумах.
Ответить
Аватара пользователя
Лис [Вежливый]
Сообщения: 561
Зарегистрирован: 08.10.18 13:32

Как собрать компилятор "Лис"?

Сообщение Лис [Вежливый] » 01.11.20 14:55

1) Где у него репозиторий с исходными текстами?
(какие URL-ы использовать, какими командами скачивать)
2) Если эти тексты на русском языке, то какой программой их компилировать (или интерпретировать?)?
3) Где прочитать русскоязычную документацию на параметры командной строки (man?)
4) Где русскоязычные справочник и учебник по языку, являющемуся входным для компилятора.
5) Где прочитать спецификации на компилятор, под какие архитектуры он умеет собирать код? (POWER, Arm64, Amd64)
6) Какие рантаймы есть, и как их использовать при компиляции прикладной программы (интересует для ядра Linux)

(Я бы, теоретически, мог бы всё это сам найти, но...)

Кстати, ответы на вышенаписанные вопросы в сборе - это неплохая статья для Хабра бы вышла.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Как собрать компилятор "Лис"?

Сообщение БудДен » 01.11.20 16:34

ЯОС ещё не в том состоянии, чтобы её активно рекламировать. Текущими темпами осталось 3-5 месяцев. Отвечаю постепенно, по мере появления свободных минуток.

> 1) Где у него репозиторий с исходными текстами?
(какие URL-ы использовать, какими командами скачивать)

https://gitlab.com/budden/jaos - как скачивать - не напишу, но любой человек, знакомый с гитлабом, сможет это сделать. В репозитории имеется, помимо истории исходников, история сборок (с меньшей подробностью), и эти сборки можно просто запустить, скачав их.

> 2) Если эти тексты на русском языке, то какой программой их компилировать (или интерпретировать?)?
Пока что там мало русского языка, он всего лишь поддерживается. Компилятор находится в бинарных сборках, включённых в состав репозитория. Репозиторий хранит множество точек истории, именно поэтому он такой большой.

> 3) Где прочитать русскоязычную документацию на параметры командной строки (man?)

Ввиду недостатка ресурсов, основной документацией пока что всё же являются исходные тексты. В том, что касается запуска, это прежде всего скрипты сборки и тестирования. Кое-что (очень мало) есть вот тут:

https://gitlab.com/budden/jaos/-/blob/г ... /сборка.md

https://gitlab.com/budden/jaos/-/blob/г ... илятора.md

Есть скрипты для пересборки всей ЯОС. Однако на данный момент поддерживаются только скрипты для сборки, в которых "хостом" является сборка под Win32, соответственно, это может быть осуществлено только из Windows. При наличии спроса могу попробовать починить скрипт пересборки Linux64-iz-Linux64. Есть скрипт пересборки Linux32-iz-Linux32, но он будет удалён.

> 4) Где русскоязычные справочник и учебник по языку, являющемуся входным для компилятора.
Справочник тут, однако в нём не описан русскоязычный набор ключевых слов. Русскоязычный набор ключевых слов можно найти
только в исходных текстах.

https://gitlab.com/budden/jaos/-/blob/г ... е-языка.md

> 5) Где прочитать спецификации на компилятор
Нигде. Поддерживаются x86, AMD64. Теоретически поддерживается ARM32, но ввиду того, что железка Xilinx Zybo лежит на таможне, пока невозможно это протестировать. Других совместимых ARM машин тоже в наличии нет.

> 6) Есть рантаймы под x86, x64 в виде приложения под Windows, рантайм под железо x86, и рантайм под Linux64.
Теоретически любой из них может использоваться для (кросс)компиляции любого другого рантайма. Поскольку в рантайме содержится компилятор, то можно, взяв любой рантайм, скомпилировать прикладную программу под этот же рантайм, загрузить её и выполнить. На практике сейчас рантайм под Win32 является основным, который пересобирает сам себя и далее из него кросс-компилируются все остальные рантаймы. Выбор такого основного рантайма, с точностью до багов, произволен. Например, в исходной версии A2 основным рантаймом является рантайм под Linux64. В определённый период в ЯОС основным рантаймом был рантайм под Linux32. Также можно кросс-компилировать прикладную программу под любой другой рантайм - получится набор файлов, по 4 файла на каждый исходный, разложенные по директориям. Хотя кросс-компиляцией программ отдельно от рантайма я никогда не занимался - пока что не было нужды, и я даже не знаю, как это организовать - для такой компиляции нужно указать компилятору набор символьных файлов целевого рантайма.

Правда, я не совсем уверен, что термин рантайм тут подходит. Я называю это "сборкой". Сборка в виде приложения под какую-то ОС - это маленький исполняемый файл и набор файлов для каждого модуля - символьных с описанием интерфейсов, двоичных с кодом и вспомогательных для ИСР и отладчика - они загружаются динамически. Сборка в виде ОС - это образ диска, я его внутри не изучал, но, видимо, там есть маленькое загружаемое ядро и опять же набор файлов для каждого модуля.

Аватара пользователя
Лис [Вежливый]
Сообщения: 561
Зарегистрирован: 08.10.18 13:32

Re: Как собрать компилятор "Лис"?

Сообщение Лис [Вежливый] » 01.11.20 16:47

БудДен писал(а):Есть скрипты для пересборки всей ЯОС.
Но мне-то не это надо. Очевидно я увидел некую цель, достижимую от моей позиции (архитектуры, дистрибутива, предпочтений). Но по описанию понял, что пока не готово, надо подождать пару лет.

И начать я хочу конечно же со сборки частей в свою экосистему. Переход целиком на новую - это слишком резко.

Но пока там англоязычные исходники - чем это вообще отличается от компилятора Павиа? У него хотя бы релиз зафиксирован.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: Как собрать компилятор "Лис"?

Сообщение БудДен » 01.11.20 17:06

Ну вообще неочевидно. И если речь идёт о работе внутри Linux, то в этом случае прикладной программой является ЯОС в целом. Её и нужно собирать. Поскольку этот процесс длится несколько минут (например, две), то он не затруднителен. Также есть режим инкрементной разработки, когда достаточно поменять только один модуль - в этом случае перекомпиляция занимает секунды. Процесс в этом случае выглядит так:

* сделал изменения
* выгрузил данный модуль и зависимые от него
* перекомпилировал данный модуль, а если интерфейс поменялся - то и зависимые
* снова вызвал команду из своего модуля и он автоматически загрузился

В ЯОС можно добавить свои модули. Как это организовать в плане раздельного хранения кода - я пока не думал, т.к. не было такой задачи. Но там можно задавать пути поиска, поэтому можно хранить свои модули вне дерева исходников ЯОС и подключать свои файлы через пути поиска. В этом случае будет обеспечено раздельное развитие самой ЯОС и твоего приложения.

Однако нужно учесть, что этап перевода близится, после этого некоторые нынешние английские названия могут просто исчезнуть, они будут заменены на ныне несуществующие русские.

Русскоязычность уже сейчас состоит в том, что можно писать свои внутренние идентификаторы, а также именовать файлы на русском языке, а также использовать русские ключевые слова (да, это недокументировано, но при большом желании можно найти перевод в исходниках).

Ответить