| The Scaly Programming Language | ||
|---|---|---|
| Prev | ||
Scaly is self-hosted. The normal way to build the compiler is from the committed seed, as described in the Section called Building from Source in Chapter 2, which needs only LLVM 18 and a C compiler. A single seed already covers every 64-bit little-endian target, so most platforms need no bootstrap at all. You need the C++ bootstrap in only two cases: refreshing the seed after changing the compiler, or bringing up a target with a different data model (32-bit, big-endian, or LLP64), which the seed does not cover.
The compiler that produced the seed was originally bootstrapped from a reference implementation written in C++. Building it needs a C++17 compiler, CMake, and openjade in addition to LLVM 18:
; macOS brew install llvm@18 cmake openjade ; Ubuntu 24.04 sudo apt install llvm-18-dev clang-18 cmake openjade zlib1g-dev libzstd-dev
./build.sh builds the C++ stage-0 compiler, and tools/seed.sh then bootstraps it into the self-hosted compiler and emits a fresh, fixed-point-verified seed. See RELEASING.md for the full seed-distribution process.
The C++ implementation is kept buildable on purpose: it is an independent compiler lineage, which preserves a diverse-double-compiling check against trusting-trust attacks, and it is the per-platform bootstrap root for new architectures. It is not part of the language or its everyday toolchain.