flang компилятор доказывает, что программа не зациклится 0.6.2 GitHub English

Каталог примеров

Все примеры-программы на flang лежат в одном каталоге — examples/: 190 файлов в двадцати одном наборе и одном полноразмерном проекте. Второго каталога с примерами в репозитории нет: до 24 августа 2026 полторы сотни программ стояли этажом ниже, и найти их с первого взгляда было нельзя.

Число пересчитывается одной командой: git ls-files examples | grep -c '\.flang$' → 190 (замер 29 августа 2026).

Наборы

КаталогФайлов .flangПро что
leetcode/82решения задач LeetCode; каждый файл самодостаточен нарочно — почему, сказано в index.json. Разбор этого набора — 82 задачи
rosetta/28канонические задачи Rosetta Code
cat/12теория категорий на прикладных задачах: стрелки со своими обещаниями, законы, слияние CRDT
web/13HTTP: служба заказов, сокращатель ссылок и API маркетплейса из трёх служб — каталог, корзина, заказы
io/8поручения ввода-вывода: двоичный файл туда и обратно, октеты по проводу, потомок, запрос по HTTPS, временный каталог, разбор пакета
crypto/8AES, ECDSA, X25519, X.509, список отзыва, привет TLS — на настоящих контрольных векторах, которые лежат рядом
library-api/7предметная половина REST-сервиса библиотеки: выдача книг, каталог, штрафы. Единственный набор, показывающий раскладку проекта целиком
db/4разговор с PostgreSQL (в том числе SCRAM), с Redis и чтение файла SQLite
service-on-processes/4служба на процессах, а не пример на три функции: заявление о своей замене OTP, проверенное в полный рост
https/3TLS: записи RFC 8448, системное хранилище доверия, привет настоящему узлу
proof-probes/3пробы самого ядра доказательств: дверь к типизированному дереву, отказ от общего спуска, вариант с полями
driver/2драйверы железа там, где каждая функция обязана доказано завершаться: UART и MSI
measure/3завершаемость по объявленной мере: Евклид, двоичный поиск, натуральные числа
errors/2отказ значением, а не падением: итог столбца пришедших строками чисел, разбор чисел
surfaces/2факториал на китайской и эсперанто-поверхности языка
wal/2журнал упреждающей записи: разбор, печать, восстановление после обрыва
monad/1итог заказа на форме в монаде
money/1деньги на точном десятичном типе сотых
paths/1кратчайший путь по сети с недостижимыми узлами
allocator/1распределитель памяти как чистый автомат: можно ли написать malloc на flang и что про него возьмёт ядро
host-boundary/1стык: flang считает решение, хозяин на C исполняет — напечатано в C, собрано системным cc, прогнано целиком
service/1обращение к службе
import-check.flang1проба связывания модулей по имени

Как прогонять

Примеры объявлены внутри функций, а не в отдельных файлах проверок, и прогоняются двоичным:

bootstrap/flang test examples/rosetta/   # один набор
bootstrap/flang test examples/           # весь каталог, 190 файлов

Наборы считаются очень по-разному, и это стоит знать до запуска. Прогон 24 августа 2026: leetcode — 82 файла, 804 примера, 12 секунд (сегодня в этом наборе 806 примеров); crypto — 8 файлов, 1223 примера, 39 минут, потому что считает настоящие контрольные векторы AES и ECDSA. Файл, который двоичный не взял, он называет вместе с кодом отказа, а не пропускает молча.

Про library-api

library-api стоит в этом ряду особняком, и это единственное, чем наборы здесь друг от друга отличаются. Остальные двадцать один — программы: файл, а в нём объявления со своими примерами. library-api — проект: семь модулей на flang, из них один свой, со своей раскладкой каталогов. Пример показывает не HTTP, а границу: что уезжает в язык, где у куска логики есть выполняемый пример, и что остаётся хозяину. Хозяин здесь был на Node и снят 20 августа 2026 вместе с остальной оснасткой на JavaScript; половина на flang осталась и проверяется командой. Правила, выведенные из этой раскладки, собраны в Раскладке репозитория.

Куда идти дальше