flang 0.4.2 — две ветки сведены, память линейна, шаги считаются
Установка без Node — в архиве компилятор, уже напечатанный в C99:
brew install digitable-lol/tap/flangПолный инструментарий (восемь целей печати, интерпретатор, языковой сервер) — npm install -g @digitable-lol/fts, ему Node нужен.
Что изменилось
Две ветки разработки сведены. Полтора дня две сессии работали по одному контракту в разошедшихся ветках — общего предка не было вовсе. Где решения расходились, выбор делался измерением, а не старшинством: линейное «добавить» было сделано двумя способами, и тот, что не удержал 35 276 токенов в гигабайте, уступил тому, что удержал.
Лимит шагов в напечатанном C. Программа с незавершающейся рекурсией теперь останавливается с FLANG_RECURSION_LIMIT — тем же кодом и тем же текстом, что у интерпретатора, — а не висит. Сам компилятор печатается с пределом, который ему нужен: 40 · 10⁶ шагов против 10⁶ по умолчанию.
Проверка релиза стала настоящей. Раньше она спрашивала собранный бинарник о трёхстрочном модуле. Теперь даёт ему разобрать self/parser.flang — 372 функции, 35 тысяч токенов. Дефект, который трёхстрочный модуль не показывал, был бы виден сразу.
Теоркат, шаг 1. Морфизм как стрелка между объектами, композиция словом после, цепочка в порядке чтения, единица. Стыковка композиции проверяется компилятором и относится к доказанному.
Описание языка целиком — docs/overview.ru.md, с честной границей между «доказано» и «проверено на конечной сетке».
Предыдущий v0.4.1 работоспособен; замены не требует.