The stage-0 compiler for the Serene programming language, written in Idris2. Its only job is to compile enough of Serene to bootstrap the real, self-hosted compiler written in Serene itself.
All commands run from inside lscz2/ (use nix develop for the toolchain):
idris2 --build lscz.ipkg # fastest check
idris2 --build tests.ipkg # build the test suite
./build/exec/lscz-tests # run it
Serene.Reader — reads source text into Syntax (Serene is homoiconic, so
this is a Lisp reader).Serene.HighLevel / Serene.HighLevel.Semantic — desugar and resolve the
surface syntax into a high-level Expr.Serene.TT (TT.Term, TT.Checker) — the small dependently typed core
(Quantitative Type Theory) and its bidirectional type checker.Serene.Graph — namespaces as graph nodes; once a term is checked it is
evaluated and its value fed back into the graph.Serene.Compiler (Backend, Interpreter, Pipelines) — compile-time
evaluation and code generation.See the language report and the architecture overview for the bigger picture.