One runnable result per milestone.
Each milestone ends with an exit test that must pass before the next starts. The 1.0 stability promise is the last step of M8.
- M0Done
Design
The language reference, the grammar, and example programs.
- Exit test
- Documents and examples exist.
- M1Done
Hello world
Lexer and parser for the full grammar, diagnostics with codes and JSON, a Cranelift JIT,
lucid runandlucid check.- Exit test
lucid runprintsHello, world!, and every example parses.
- M2Done
Core language
Numbers with overflow traps,
letandvar,if,while,for, tasks and recursion, and type checking.- Exit test
- FizzBuzz and recursive Fibonacci run.
- M3Done
Data
Text, lists, maps, sets,
type,choice,match, unions and narrowing, generics, traits,any, lambdas, parameter modes, and reference counting.- Exit test
examples/hello.lcdruns, and golden tests cover every feature with no leaks.
- M4Done
Ownership performance
Moves on last use, static text, fewer count operations,
lucid check --costs, and a benchmark suite.- Exit test
- The benchmark suite is measured against the speed and memory targets.
- M5Done
A usable language
tryandelse, tests,unsafe, modules, packages, permissions, the firststdmodules, and thebuild,test,explain,context,fix, andfmtcommands.- Exit test
examples/todo.lcdbuilds to a standalone.exeand works.
- M6Done
Browser
A WebAssembly backend,
lucid build --target web, andstd.domfor interactive pages.- Exit test
- An interactive page written only in Lucid runs in a browser.
- M7Done
Concurrency and servers
Bit operators, threads with
spawn, channels, locks and a deadlock trap,std.net, an HTTP/1.1 server and client with TLS, andstd.html.- Exit test
examples/website.lcdserves pages under a load test.
- M8In progress
Ecosystem
Linux, cryptography, SQLite, a package registry, a language server, and the 1.0 stability promise.
- Done:Prelude text tasks:
starts_with,ends_with,contains,find,trim - Done:Compile only reachable tasks
- To do:Linux x86-64:
run,test, andbuild - To do:
std.crypto - To do:
std.sqland thesqltype - To do:Orphan rule for tasks with
self - To do:Registry,
lucid package, version selection, andlucid.lock - To do:
lucid lsp - To do:Spec review, then the version 1.0 promise
- Exit test
- A package that uses a registry package with
std.sqlandstd.cryptobuilds and passeslucid teston Windows and Linux, and an editor shows its diagnostics throughlucid lsp.
- Done:Prelude text tasks:
- M9Planned
Self-hosted front end
The lexer, parser, checker, and ownership pass ported to Lucid, one stage at a time. Starts after the 1.0 promise.
- Exit test
- The compiler written in Lucid builds itself, and a second build is byte-identical.
Not planned yet: macOS, an LLVM release backend, plain types stored inline, and compile-time evaluation.