@@ -20,22 +20,27 @@ rustc, then uses it to compile the new compiler.
20
20
21
21
Compiling ` rustc ` is done in stages. Here's a diagram, adapted from Joshua Nelson's
22
22
[ talk on bootstrapping] [ rustconf22-talk ] at RustConf 2022, with detailed explanations below.
23
+
23
24
The ` A ` , ` B ` , ` C ` , and ` D ` show the ordering of the stages of bootstrapping.
25
+ <span style =" background-color : yellow " >Yellow</span > nodes are built with the stage0 compiler, and
26
+ <span style =" background-color : lightgreen " >green</span > nodes are built with the stage1 compiler.
24
27
25
28
[ rustconf22-talk ] : https://rustconf.com/schedule#bootstrapping-the-once-and-future-compiler
26
29
27
30
``` mermaid
28
31
graph TD
29
- s0c["stage0 compiler (1.63)"] -->|A| s0l("stage0 std (1.64)");
32
+ s0c["stage0 compiler (1.63)"] -->|A| s0l("stage0 std (1.64)"):::with-s0c ;
30
33
s0c & s0l --- stepb[ ]:::empty;
31
- stepb -->|B| s0ca["stage0 compiler artifacts (1.64)"];
32
- s0ca -->|copy| s1c["stage1 compiler (1.64)"];
33
- s1c -->|C| s1l("stage1 std (1.64)");
34
+ stepb -->|B| s0ca["stage0 compiler artifacts (1.64)"]:::with-s0c ;
35
+ s0ca -->|copy| s1c["stage1 compiler (1.64)"]:::with-s0c ;
36
+ s1c -->|C| s1l("stage1 std (1.64)"):::with-s1c ;
34
37
s1c & s1l --- stepd[ ]:::empty;
35
- stepd -->|D| s1ca["stage1 compiler artifacts (1.64)"];
36
- s1ca -->|copy| s2c["stage2 compiler"];
38
+ stepd -->|D| s1ca["stage1 compiler artifacts (1.64)"]:::with-s1c ;
39
+ s1ca -->|copy| s2c["stage2 compiler"]:::with-s1c ;
37
40
38
41
classDef empty width:0px,height:0px;
42
+ classDef with-s0c fill: yellow;
43
+ classDef with-s1c fill: lightgreen, color: black;
39
44
```
40
45
41
46
### Stage 0
0 commit comments