same C interpreter ships two ways: a single native binary that runs on every major OS, and a WebAssembly build that runs right here in your browser.The same lexer, parser, normalizer, and typechecker (src/*.c) build into two artifacts that cover the entire spectrum — from your terminal to a browser tab.
src/*.c — the interpreter · lexer · parser · normalize · typecheck · serialize · import ├─ src/main.c → cosmocc → dhall.com one binary, many OSes └─ src/wasm.c → emscripten → dhall.wasm zero-install, in your browser
A single self-contained ~1 MB Actually Portable Executable built with cosmocc. The same file runs natively on Linux, macOS, Windows, and the BSDs — no VM, no runtime, no recompile.
The same interpreter compiled to a 122 KB .wasm module. It runs 100% client-side — no server, no upload.
Precise Error: … at line N, col M diagnostics.
Normal forms re-parse and round-trip.
Unbounded Natural and Integer — no overflow, Natural subtraction saturates at 0.
Local file imports, env: imports, and http:// URLs with mandatory sha256: hashes and ? fallback.
One evaluated value tree renders to all three from the same shared representation.
Recursive /\ merge, right-biased //, with updates, and the empty record.
Enforced in every mode — typecheck, normalize, and all three serializers.
λ → ∀ ∧ ⫽ ≡ accepted alongside their ASCII spellings.