bootsrapping stages overview list

This commit is contained in:
Shahar Dawn Or 2023-01-13 19:24:58 +07:00 committed by Tshepang Mbambo
parent ccef9cb8e1
commit 266ca693c0
1 changed files with 11 additions and 4 deletions

View File

@ -22,6 +22,13 @@ Note that this documentation mostly covers user-facing information. See
## Stages of bootstrapping ## Stages of bootstrapping
### Overview
- Stage 0: the pre-compiled compiler
- Stage 1: from current code, by an earlier compiler
- Stage 2: the truly current compiler
- Stage 3: the same-result test
Compiling `rustc` is done in stages. Here's a diagram, adapted from Joshua Nelson's Compiling `rustc` is done in stages. Here's a diagram, adapted from Joshua Nelson's
[talk on bootstrapping][rustconf22-talk] at RustConf 2022, with detailed explanations below. [talk on bootstrapping][rustconf22-talk] at RustConf 2022, with detailed explanations below.
@ -51,7 +58,7 @@ graph TD
classDef with-s1c fill: lightgreen; classDef with-s1c fill: lightgreen;
``` ```
### Stage 0 ### Stage 0: the pre-compiled compiler
The stage0 compiler is usually the current _beta_ `rustc` compiler The stage0 compiler is usually the current _beta_ `rustc` compiler
and its associated dynamic libraries, and its associated dynamic libraries,
@ -65,11 +72,11 @@ a compiler (with its set of dependencies)
and its 'target' or 'object' libraries (`std` and `rustc`). and its 'target' or 'object' libraries (`std` and `rustc`).
Both are staged, but in a staggered manner. Both are staged, but in a staggered manner.
### Stage 1 ### Stage 1: from current code, by an earlier compiler
The rustc source code is then compiled with the stage0 compiler to produce the stage1 compiler. The rustc source code is then compiled with the stage0 compiler to produce the stage1 compiler.
### Stage 2 ### Stage 2: the truly current compiler
We then rebuild our stage1 compiler with itself to produce the stage2 compiler. We then rebuild our stage1 compiler with itself to produce the stage2 compiler.
@ -92,7 +99,7 @@ For development, you usually only want the `stage1` compiler,
which you can build with `./x.py build library`. which you can build with `./x.py build library`.
See [Building the compiler](./how-to-build-and-run.html#building-the-compiler). See [Building the compiler](./how-to-build-and-run.html#building-the-compiler).
### Stage 3 ### Stage 3: the same-result test
Stage 3 is optional. To sanity check our new compiler, we Stage 3 is optional. To sanity check our new compiler, we
can build the libraries with the stage2 compiler. The result ought can build the libraries with the stage2 compiler. The result ought