Дорога до 1.0
Сейчас вышла версия 0.7.29. Ниже — что войдёт в 0.8, 0.9 и 1.0, в каком порядке и к какому сроку. Сроки — ориентир ведущего, а не обещание: каждая полоса закрывается прогоном, который можно повторить, и пока прогон не зелёный, полоса не считается закрытой. Что язык уже умеет, читают не здесь: Справочник конструкций, Установка, Выпуски.
| полоса | 10.26 | 11.26 | 12.26 | 01.27 | 02.27 | 03.27 | 04.27 | состояние |
|---|---|---|---|---|---|---|---|---|
| 0.7.25 — точные числа | ||||||||
| точное целое и точное дробное без потолка 2^53 | ██ | сделано | ||||||
| предел памяти и времени потомку называет программа | ██ | сделано | ||||||
| страница реестра пакетов | ██ | сделано | ||||||
| 0.8 — прибор | ||||||||
| готовые двоичные в выпуске: Linux и macOS, четыре тройки | ██ | ██ | в работе | |||||
| один способ установки под каждый канал (brew, asdf, двоичный, исходники) | ██ | ██ | в очереди | |||||
| оснастка на flang: оболочка и JavaScript уходят | ██ | ██ | ██ | в работе | ||||
| имена латиницей — английские слова, без транслита | ██ | в работе | ||||||
| законы поля над дробью; перебор, арифметика, переписывание в ядре | ██ | ██ | в работе | |||||
| каждый приём проверки записи доказан в Lean | ██ | ██ | в работе | |||||
| 0.9 — доказательства | ||||||||
| индукция в своём доказательстве; завершение по мере как теорема | ██ | ██ | ██ | в очереди | ||||
| кванторы внутри формул, существование без названного значения | ██ | ██ | в очереди | |||||
| вторая, независимая проверка записи доказательства | ██ | ██ | ██ | в работе | ||||
| пакеты: установка, версии, замок зависимостей | ██ | ██ | ██ | в очереди | ||||
| законы категорий (моноид, монада) судит ядро | ██ | ██ | в очереди | |||||
| 1.0 | ||||||||
| две печати компилятора совпадают, и это проверяет CI | ██ | ██ | в очереди | |||||
| форматы отказов и записи доказательства заморожены | ██ | ██ | в очереди | |||||
| три настоящие службы работают месяцами | ██ | ██ | ██ | ██ | ██ | зависит от пользователей |
Что значит 1.0
Семь условий, и каждое проверяется командой, а не словом:
- Компилятор собирает сам себя воспроизводимо. Две печати из одного дерева дают один и тот же C, и CI это сравнивает на каждом выпуске.
- Перепечатка дешёвая. Полная печать компилятора занимает меньше часа на обычной машине (сегодня — около 80 минут на сервере сборки).
- Ядро доказательств доказано. У каждого правила, которым ядро закрывает утверждение, есть теорема в Lean, проверяемая чужим ядром; и есть вторая, независимая проверка записи.
- Известных дыр типизации нет. Каждая найденная дыра либо закрыта, либо названа в справочнике отказов с номером.
- Форматы устойчивы. Коды отказов, запись доказательства и промежуточный вид не меняются без новой старшей версии.
- Пакеты полноценны. Поиск по имени, установка, разрешение версий, замок зависимостей.
- Язык в работе. Несколько настоящих служб, которые живут месяцами и которые чинят, когда они падают.
0.7.25 — точные числа (октябрь 2026, выходит)
точное целоеиточное дробное: сложение, вычитание, умножение, деление дроби и порядок без потолка 2^53;(1/10 + 1/5) + 3/10и1/10 + (1/5 + 3/10)дают одну и ту же дробь — то, чего надчисло(double) не бывает.- Предел памяти и времени дочернему процессу называет сама программа, а не оболочка.
- Страница реестра пакетов печатается из списка имён и выкладывается на сайт.
0.8 — прибор (ноябрь 2026)
Что получит программист:
- Установка без компилятора C. В выпуске лежат готовые двоичные для Linux (x86_64, aarch64) и macOS (arm64, x86_64) с контрольными суммами;
brew,asdfи прямая загрузка ставят один и тот же файл. - Оснастка на самом языке. Проверки репозитория, стенды и сборка сайта исполняются планами на flang, а не sh и JavaScript; оболочка остаётся там, где она судит сам компилятор, и это названо поимённо.
- Чистые имена. Ключи команд, коды отказов и имена в скриптах — английские слова.
- Ядро умеет больше. Законы поля над точным дробным; перебор конечного типа; линейная арифметика от допущений; переписывание цели по доказанным равенствам.
- Проверка записи доказана целиком. Для каждого приёма независимой проверки есть лемма в Lean, и отдельная проверка краснеет, если приём появился без леммы.
0.9 — доказательства (февраль 2027)
- Индукция по натуральным и по своим типам внутри доказательства; доказанное завершение по объявленной мере — как теорема, а не как объявление.
- Кванторы внутри формул и существование без названного свидетеля.
- Вторая реализация проверки записи доказательства, написанная не на C: расхождение двух проверок видно на каждом выпуске.
- Пакеты:
flang packageставит, разрешает версии и пишет замок. - Законы моноида и монады судит ядро, а не пример.
1.0 (весна 2027)
- Воспроизводимая самосборка в CI, печать меньше часа.
- Замороженные форматы отказов и записи доказательства.
- Три службы в работе месяцами — это условие закрывают пользователи, а не ведущий, поэтому оно единственное, у которого нет точной даты.
Что решено не делать
- Замыканий не будет. Захват окружения ломает доказательство завершения и прямую печать в C, Go и Rust; функции-значения есть, замыканий нет.
- Двух версий одной библиотеки в одной программе не будет — поднимается версия.
- Хранить код в базе вместо файлов (как Unison) не будем — берём только адресацию по содержимому.
Как проверить любую строку выше: у каждой полосы есть задача в docs/tasks/ и решение в docs/adr/; закрытие — зелёный прогон, который называет страница Выпуски.