Тем, кто делает язык
Эта страница нужна, если вы хотите править сам flang, а не писать на нём. Если писать — вам Установка → Первая программа → Учебник.
Дерево написано по-русски: имена, сообщения коммитов, большая часть прозы. Английская поверхность языка есть и разбирается в те же имена; правка, присланная по-английски, принимается — писать по-русски никто не попросит.
Соберите
Компилятор здесь один, написан на самом flang и собирается без Node. В дереве лежит точка раскрутки — тот же компилятор, напечатанный в C99. Весь список зависимостей — компилятор C и make:
git clone https://github.com/digitable-lol/flang && cd flang
make -C bootstrap
bootstrap/flang --version
flang 0.6.2
Собранный двоичный — это то, что вы дальше запускаете:
bootstrap/flang check examples/rosetta/towers-of-hanoi.flang
Пакет объявляет ноль зависимостей: npm install нечего скачивать. На Node работает только языковой сервер — node flang/bin/flang-lsp.mjs.
Проверьте
Три проверки идут на собранном двоичном и Node не требуют:
sh flang/проверки/обход.sh
sh flang/проверки/обход-примеров.sh
sh scripts/raskrutka.sh --check
Первая обходит дерево компилятором, вторая прогоняет примеры всех программ дерева, третья сверяет напечатанный C с тем, что лежит в bootstrap/: правка в flang/self/ обязана дать байт в байт тот же файл раскрутки.
Если вы правили страницы сайта, добавьте:
node docs/site/build.mjs --check
Она краснеет на ссылке в никуда, на странице без английской пары и на подстановке без значения.
Пришлите правку
- Отведите ветку от ствола:
git switch -c моя-правка. - Правьте. Пишите примеры прямо в функции — они прогоняются той же командой
flang test, что и всё остальное. - Прогоните проверки выше. Красная проверка — не повод для объяснительной записки: правка не готова.
- Сообщение коммита — одной строкой, что изменилось и почему.
- Откройте pull request на github.com/digitable-lol/flang.
Об ошибке без правки — issue в том же репозитории. Приложите текст программы и дословный вывод команды с кодом возврата: этого хватает, чтобы повторить.
Что читать, прежде чем править язык
- Спецификация языка — формы, значения, типы, коды диагностик.
- Категории и функторы — что двоичный судит и чего не судит.
- Процессы и устойчивость — модель процессов целиком.
- Спецификация ядра — что ядро доказательств принимает.
- Раскладка репозитория — что где лежит.
- Как развивают язык — как добавляется новое.
- Известные ограничения — чего язык не умеет и знает об этом.