flang the compiler proves your program cannot hang 0.7.29 GitHub Русский

Releases

A release is a vX.Y.Z tag, and behind it an archive and a package publication. This page is printed from the tags: as many entries as there are tags, and a release cannot be skipped.

There are three boxes: what appeared, what changed, what broke. An empty box is not printed — "broke: nothing" nine releases in a row tells the reader nothing.

The entries below are about the language, not about the work on it. What has landed on the trunk since the last release is shown by the merge journal (in Russian); every commit subject is in the commit journal.

0.7.29 — 18 October 2026

Prebuilt binaries and a one-command install, category laws are proved

What appeared

What changed

What broke

0.7.28 — 14 October 2026

Examples inside laws run, mistakes in categories are caught at compile time

What appeared

What changed

What broke

0.7.27 — 14 October 2026

Grown-up proofs: algebra, terminating recursion, LaTeX formulas; HTTPS without curl

What appeared

What changed

What broke

0.7.26 — 11 October 2026

TLS in the language, host entropy, cost before the run, a kernel cache and a second checker in Lean

What appeared

What changed

What broke

0.7.25 — 6 October 2026

Exact integer and exact fraction, a child's limit named by the order, the registry page

What appeared

What changed

What broke

0.7.24 — 3 October 2026

A linter in the language, a kernel memo, and three closed soundness holes

What appeared

What changed

What broke

0.7.23 — 29 September 2026

Record fields are checked against their type, and runs have a memory limit

What appeared

$ flang run runaway.flang --function «Раздуть» --args '{"текст":"а","раз":28}' --trust --memory-limit 32M
FLANG_MEMORY: прогон остановлен на пределе памяти 32 МиБ: занято 25 МиБ, просили ещё 25 165 880 байт
  считалась функция «Раздуть», шагов программы 544
                                                                    exit 5

Issue #160.

What changed

What broke

Migration: move the module into the project, import it by path (использует «Мера» из "../mera.flang"), or set FLANG_MODULE_ROOT.

0.7.22 — 26 September 2026

The следует syllogism and correct code points outside the BMP

What appeared

утверждение «все люди смертны»
  для всех кто: «Человек»
  утверждаем («Смертен» от кто)

следует «Сократ смертен»
  дано сократ: «Человек»
  утверждаем («Смертен» от сократ)
  по свойству «все люди смертны»
$ flang check socrates.flang --proof
утверждение «Сократ смертен» — доказано: терм принят ядром, 1 шаг, основания: утверждение «все люди смертны» — утверждение обо ВСЕХ входах

Without the по свойству line the conclusion is not proved:

FLANG_PROOF_STEP: теорема «Сократ смертен»: ни одного шага        exit 1

What changed

$ flang repl
» код символа "𝒜"
119964
» код символа "👍"
128077

Issue #103.

$ flang --step-limit 100000000 emit file.flang --target c
flang: неизвестная команда «--step-limit»              exit 2

What broke

wasnow
scripts/raskrutka.shscripts/bootstrap-reprint.sh
scripts/otpechatok-semeniscripts/seed-fingerprint

Migration: replace the names in your scripts and in your CI setup.

0.7.21 — 22 September 2026

Unproved code no longer runs by default

What appeared

вариант «Сделать» с поручение равным (вариант «Прочитать переменную среды» с имя равным "HOME")

The reply is «Значение среды» with field значение, or «Переменной среды нет» as its own variant — not an empty string. A plan's arguments are whatever follows --:

$ flang io script.fscript -- build --verbose

Deny with --no-env, --no-args.

вариант «Сделать» с поручение равным (вариант «Показать» с место равным "экран" и текст равным кадр)
вариант «Сделать» с поручение равным (вариант «Ждать событие» с срок равным 5000)

A key arrives as «Случилось» with fields откуда and значение; a timeout as «Срок вышел». Key names: ввод, пробел, таб, возврат, выход, вверх, вниз, влево, вправо; a printable character arrives as itself.

Working example: docs/examples/io/progress-bar-on-screen.flang. The frame goes to /dev/tty, not stdout — stdout carries the plan's JSON result. With no terminal (pipe, file, CI) the answer is the same FLANG_IO_NO_SCREEN as before. Ctrl-C still kills the program. Deny with --no-screen.

What changed

What broke

$ flang run price.flang --function 'Скидка' --args '{"цена": 100, "скидка": 150}'
не доказано: утверждений 1: доказано 0, сетка 1 — запуск только по явному согласию: --trust
exit 3

Migration: add --trust and the verdict is not computed at all.

Affected: scripts calling flang run or flang io on programs where обеспечивает is backed by examples only. Check in advance with flang check --proof <file> — a summary reading «доказано 0, сетка N» means the program falls under the new rule.

0.7.20 — 18 September 2026

The compiler's own proof is fully replayed: 650 places of 650

What appeared

What changed

What broke

0.7.19 — 13 September 2026

Quantifiers reached the built compiler

What appeared

What changed

What broke

0.7.18 — 12 September 2026

The checker got stricter, and the tree got clearer

What appeared

What changed

What broke

0.7.17 — 11 September 2026

The language passed its own provability check

What appeared

What changed

What broke

0.7.16 — 9 September 2026

The checker replays a derivation of a type fact; the road to the end is measured place by place

What appeared

What changed

What broke

0.7.15 — 8 September 2026

The calculator is gone from the checker: the independent-verification gate is closed

What appeared

What changed

What broke

0.7.14 — 7 September 2026

The checker replays termination proofs itself

What appeared

What changed

What broke

0.7.13 — 6 September 2026

The proof object: the checker verifies the kernel’s finished derivation instead of recomputing it

What appeared

What changed

What broke

0.7.12 — 6 September 2026

An install now carries the runtimes of all nine emit targets, not one

What appeared

What changed

What broke

0.7.11 — 5 September 2026

Supervision is back on dev, and guards prove by a run that they can redden

What appeared

What changed

What broke

0.7.10 — 4 September 2026

Hotfix: the live shell crashed on every line of input

What changed

What broke

0.7.9 — 4 September 2026

Tagged, publication stopped by the pipeline

What changed

0.7.8 — 4 September 2026

Tagged, publication stopped by the pipeline — deliberately

What changed

0.7.7 — 4 September 2026

Tagged, publication stopped by the pipeline — deliberately

What changed

0.7.6 — 4 September 2026

Tagged, publication stopped by the pipeline

What changed

0.7.5 — 4 September 2026

Tagged, publication stopped by the pipeline

What changed

0.7.4 — 4 September 2026

Tagged, publication stopped by the pipeline

What changed

0.7.3 — 3 September 2026

The version hotfix finally reached publication

What changed

0.7.2 — 3 September 2026

Tagged, but publication failed again

What changed

0.7.1 — 3 September 2026

Version hotfix — tagged, but publication didn't land

What changed

What broke

0.7.0 — 3 September 2026

The compiler was reprinted from scratch, and the release’s main work was finding our own self-deceptions

What appeared

What changed

What broke

0.6.2 — 22 August 2026

The Homebrew install is fixed: the archive shipped a directory nobody could enter

What appeared

What changed

What broke

0.6.1 — 22 August 2026

A compiler change that never reached the built compiler now goes red in half a second

What appeared

What changed

What broke

0.6.0 — 22 August 2026

Long computations no longer hit a memory wall: 15.98 GiB became 0.0135

What appeared

What changed

What broke

0.5.1 — 19 August 2026

The macOS install is fixed: 0.5.0 did not build there for anyone

What appeared

What changed

What broke

0.5.0 — 18 August 2026

The compiler measures itself, and the emitted code got faster and leaner

What appeared

What changed

What broke

0.4.8 — 9 August 2026

Subset and intersection: sets got words

What appeared

What changed

What broke

0.4.7 — 7 August 2026

Monad, failure as a value, polymorphism

What appeared

What changed

0.4.6 — 7 August 2026

The binary talks to a human: check, shell, help, man

What appeared

What changed

0.4.5 — 7 August 2026

A shell in the installed binary, input/output, and processes on BEAM

What appeared

What changed

0.4.4 — 6 August 2026

A language server, a functor with laws, concurrency

What appeared

What changed

0.4.3 — 6 August 2026

Vim highlighting ships in the package

What appeared

0.4.2 — 6 August 2026

Eight emission targets, and the compiler installs without Node

What appeared

What changed

0.4.1 — 5 August 2026

The package's commands answer after installation

What changed

0.4.0 — 5 August 2026

First publication

What appeared