flang 0.4.4 — языковой сервер, законы функтора, конкурентность
Установка без Node — в архиве компилятор, уже напечатанный в C99:
brew install digitable-lol/tap/flangПолный инструментарий — восемь целей печати, интерпретатор, оболочка flang repl, языковой сервер flang-lsp — через npm, ему Node нужен:
npm install -g @digitable-lol/ftsЯзыковой сервер
flang-lsp даёт в редакторе ровно ту проверку, что flang check: типы, завершаемость, разбор суждений, законы морфизмов и функторов. Дополнение берёт слова из таблицы лексера во время работы, а не из своего списка, — поэтому знает формы, добавленные вчера.
Попутно починено в самом языке: диагностика теперь несёт имя файла, и ошибка импортированного модуля подчёркивается в нём, а не в открытом буфере. Проставляется по просьбе — иначе разошлись бы две реализации связывания, и это поймала неподвижная точка в первый же час.
Функтор перестал быть словом без гарантии
Три закона, и все три доказываются, а не проверяются на сетке: согласование стрелки с объектами, сохранение композиции, сохранение единиц. Возможно это потому, что морфизм здесь объявление, а не значение, — тот самый отказ от функций первого класса платит обратно.
Законы не включаются по желанию: отображение, не сохраняющее композицию, функтором не является.
Конкурентность, шаг 1
Процесс — объявление, обработчик — чистая функция, действия описываются, а не выполняются. Обработчик атомарен в пределах своего процесса; процессы идут параллельно.
Чередование воспроизводится по семени, поэтому гонка предъявляется примером:
прогон «на семени 4172 первым успевает правый»
семя 4172
ожидается «Сборщик» равен (запись «Метки» с «строки» равным ["П1", "П2", "Л1", "Л2"])
Trojan Source закрыт целиком
Двунаправленные управляющие Unicode больше не уезжают в целевой код сырыми ни в одной из трёх поверхностей печати: восемь бэкендов flang, восемь ftsc и JIT виртуальной машины. До починки rustc и elixirc отказывались собирать такой вывод, а javac собирал молча — ради этого молчания атаку и придумали.
Тесты перебирают реестр целей, а не список в себе, и проверены на регресс подложенной девятой целью.
Ещё
Встроенная форма разложить … на символы — посимвольный проход стал доказуемым. Оболочка flang repl. Решения Rosetta Code. REST-пример examples/library-api и правила раскладки проекта. Описание языка docs/overview.ru.md.