The Scaly Programming Language

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.