quill is an experimental programming language compiler/interpreter. The implementation is
written in C# (.NET 10): src/ is the compiler, std/ the prelude source, test/ the
suite and the runners.
The earlier OCaml prototype was removed on 2026-09-25 once the port was measured as a
superset of it: port-fails: 0 over every program in the repo, with the 34 cases where the two
disagreed being ones the prototype got wrong. Its history is in git log (lib/, bin/, the
dune files) and in docs/wayfinder/tickets/, which was written while it was the reference.
The language is built around core_tt, a dependently typed core with
bidirectional elaboration, normalization by evaluation, implicit arguments, nominal
ADTs, structural records/modules, pattern matching, traits, algebraic effects,
mutable references, and a hygienic enforestation-based macro system.
dotnet build # the compiler
dotnet test test/Quill.Tests # xUnit: internals (shapes, unifier, machine, budget)
dotnet run --project test/Quill.Conformance # the shared language suitesrc/Quill.Cli is a stub (no REPL yet); run a single program through the suite instead.
Consistency > Flexibility > Correctness.
- Consistency: one construct for many roles (
struct= record / module / namespace), types are values, and the core type system carries the language model directly. - Flexibility: willing to trade theoretical properties such as parametricity
for practical power. Type-case on open
Typeis acceptable. - Correctness: still valued through bidirectional checking, normalization, unification, and regression tests — but not at the expense of the language's practical shape.
The pipeline is a single path from surface syntax to values:
source → reader → enforestation → expanded Syntax → elaboration → Core term → NbE → value
CLAUDE.md— how to work in this repo: build/test, source layout, conventions, and recurring gotchas.docs/STATUS.md— canonical snapshot of what is built. When another doc disagrees on completion status, STATUS wins.docs/wayfinder/— the direction map: what has been decided, what is still open (tickets), and what is still fog. Start at the Fun compiler design map. This is also where the design detail for every completed direction lives (undertopics/), plus the macro-system reference library (macro-system/).