LEVIATHAN v962456e · 962456eee1

leviathan-lang.com / docs / roadmap

Roadmap

The three phases between today's compiler and a self-hosted 1.0.

Leviathan is free to use. The source release is planned with 1.0.

The three phases

0.9: the final C++ compiler

The compiler is written in C++ today. This phase brings it to its final form as the bootstrap compiler: every in-flight compiler workstream is landed or dropped, the known serious bugs are fixed, the standard library is type-checked on every build, and the language surface is frozen. The result is tagged 0.9.

It is called 0.9 because it is the compiler you build from C++ source so that you never have to trust a Leviathan binary to get started. 1.0 is reserved for the first self-hosted release.

The quality epic

One large effort with no language changes: testing, bug fixing, code cleanup, removing technical debt, and optimizing the compiler's own code. Bugs are cheaper to fix in the C++ compiler than in a compiler that is itself built by a compiler with bugs, and this is the code that will be published. The phase ends when 0.9 is tagged and the code is in a state we are willing to publish.

Self-hosting and 1.0

The compiler's front end and lowering are rewritten in Leviathan, emitting LLVM IR. The new compiler is built in three stages: the 0.9 compiler builds a first Leviathan-written compiler, that compiler rebuilds itself, and the result is rebuilt once more and must match. The full test corpus must pass under the self-built compiler. The result is 1.0.

Release

0.9 and 1.0 are planned to be published together. 0.9 stays available as the compiler that builds from C++, so that 1.0 can be built from source without a Leviathan binary. See Downloads for the current state of binary releases.