How Rust is Bootstrapped
The Rust compiler (rustc) is written in Rust. To bootstrap Rust from scratch, you need a prior version of rustc — the compiler bootstraps itself through a stage-based process.
The Rust Bootstrap Process
Rust uses a multi-stage bootstrap:
- Stage 0: Download a pre-compiled rustc binary (the "beta" channel release)
- Stage 1: Use Stage 0 to compile the current rustc source code
- Stage 2: Use Stage 1 to compile rustc again — this is the final compiler
Stage 2 is used because it ensures the compiler was compiled by the same-version compiler, catching any bootstrap-specific bugs.
Historical Bootstrap
Rust's original compiler (before it was rewritten in Rust) was written in OCaml. The transition to self-hosting happened around 2011–2012. The OCaml compiler was phased out once the Rust-in-Rust compiler was stable.
mrustc: An Alternative Bootstrap Path
mrustc is an alternative Rust compiler written in C++ that can compile older Rust code. It provides a bootstrap path that does not require a pre-compiled rustc binary, which is important for reproducible builds.
View Rust in Graph →