Appendix C
Bootstrap History and the Seed
Scaly is self-hosted, and the committed seed — the
compiler emitted as its own textual LLVM IR under
seed/ — is the sole bootstrap root. The normal way to
build the compiler is from that seed — it is what the installer of
Installing Scaly does on your machine; it needs only LLVM 21
and a C compiler. A
single seed covers every 64-bit little-endian (LP64) target, and a CI
matrix builds and verifies it natively on macOS and Linux, on both x86-64
and AArch64.
The seed is refreshed by tools/seed.sh: it
bootstraps a compiler from the committed seed, re-emits the compiler
sources with it, and verifies the fixed point — the
seed must reproduce itself byte-identically — before
tools/install-seed.sh installs the new files. Textual
IR is diffable and auditable, which is why Scaly ships it instead of opaque
per-platform binaries. See RELEASING.md in the
repository for the full seed-distribution checklist.
Historically, the self-hosted compiler was bootstrapped from a
reference implementation written in C++ (which had itself replaced an
earlier TypeScript bootstrapper). That C++ stage-0 compiler was retired in
July 2026, once the seed became self-sufficient: its sources are frozen
under retired/scalyc0/ as a historical reference, it
has no build, and it cannot parse the current language. No C++ toolchain
appears anywhere in today's build.
Targets with a different data model (32-bit, big-endian, or LLP64 such as Windows) are not covered by the seed; supporting one would mean generalizing the compiler's size and alignment emission off its fixed 64-bit constants and minting a seed for that data model.