Skip to content

flang 0.4.4 — языковой сервер, законы функтора, конкурентность

Choose a tag to compare

@the-homeless-god the-homeless-god released this 06 Aug 18:47
· 71 commits to main since this release

Установка без 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.