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

Дорога до 1.0

Сейчас вышла версия 0.7.29. Ниже — что войдёт в 0.8, 0.9 и 1.0, в каком порядке и к какому сроку. Сроки — ориентир ведущего, а не обещание: каждая полоса закрывается прогоном, который можно повторить, и пока прогон не зелёный, полоса не считается закрытой. Что язык уже умеет, читают не здесь: Справочник конструкций, Установка, Выпуски.

полоса10.2611.2612.2601.2702.2703.2704.27состояние
0.7.25 — точные числа
точное целое и точное дробное без потолка 2^53██сделано
предел памяти и времени потомку называет программа██сделано
страница реестра пакетов██сделано
0.8 — прибор
готовые двоичные в выпуске: Linux и macOS, четыре тройки████в работе
один способ установки под каждый канал (brew, asdf, двоичный, исходники)████в очереди
оснастка на flang: оболочка и JavaScript уходят██████в работе
имена латиницей — английские слова, без транслита██в работе
законы поля над дробью; перебор, арифметика, переписывание в ядре████в работе
каждый приём проверки записи доказан в Lean████в работе
0.9 — доказательства
индукция в своём доказательстве; завершение по мере как теорема██████в очереди
кванторы внутри формул, существование без названного значения████в очереди
вторая, независимая проверка записи доказательства██████в работе
пакеты: установка, версии, замок зависимостей██████в очереди
законы категорий (моноид, монада) судит ядро████в очереди
1.0
две печати компилятора совпадают, и это проверяет CI████в очереди
форматы отказов и записи доказательства заморожены████в очереди
три настоящие службы работают месяцами██████████зависит от пользователей

Что значит 1.0

Семь условий, и каждое проверяется командой, а не словом:

  1. Компилятор собирает сам себя воспроизводимо. Две печати из одного дерева дают один и тот же C, и CI это сравнивает на каждом выпуске.
  2. Перепечатка дешёвая. Полная печать компилятора занимает меньше часа на обычной машине (сегодня — около 80 минут на сервере сборки).
  3. Ядро доказательств доказано. У каждого правила, которым ядро закрывает утверждение, есть теорема в Lean, проверяемая чужим ядром; и есть вторая, независимая проверка записи.
  4. Известных дыр типизации нет. Каждая найденная дыра либо закрыта, либо названа в справочнике отказов с номером.
  5. Форматы устойчивы. Коды отказов, запись доказательства и промежуточный вид не меняются без новой старшей версии.
  6. Пакеты полноценны. Поиск по имени, установка, разрешение версий, замок зависимостей.
  7. Язык в работе. Несколько настоящих служб, которые живут месяцами и которые чинят, когда они падают.

0.7.25 — точные числа (октябрь 2026, выходит)

0.8 — прибор (ноябрь 2026)

Что получит программист:

0.9 — доказательства (февраль 2027)

1.0 (весна 2027)

Что решено не делать

Как проверить любую строку выше: у каждой полосы есть задача в docs/tasks/ и решение в docs/adr/; закрытие — зелёный прогон, который называет страница Выпуски.