Skip to content

Commit 08838d9

Browse files
committed
Address some confusing points
- stage N+1 -> stage N artifacts - Use more likely examples of an ABI break - stage N -> stage N compiler
1 parent b0c0452 commit 08838d9

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/building/bootstrapping.md

+7-6
Original file line numberDiff line numberDiff line change
@@ -130,17 +130,17 @@ built by `build --stage N compiler/rustc` -- that's 'stage N artifacts'
130130
('the compiler built by stage N').
131131

132132
In short, _stage 0 uses the stage0 compiler to create stage0 artifacts which
133-
will later be uplifted to stage1_.
133+
will later be uplifted to be the stage1 compiler_.
134134

135135
In each stage, two major steps are performed:
136136

137137
1. `std` is compiled by the stage N compiler.
138138
2. That `std` is linked to programs built by the stage N compiler, including
139-
the stage (N+1) compiler.
139+
the stage N artifacts (stage (N+1) compiler).
140140

141-
This is somewhat intuitive if one thinks of the stage (N+1) compiler as "just"
141+
This is somewhat intuitive if one thinks of the stage N artifacts as "just"
142142
another program we are building with the stage N compiler:
143-
`build --stage N compiler/rustc` is linking the stage (N+1) compiler to the `std`
143+
`build --stage N compiler/rustc` is linking the stage N artifacts to the `std`
144144
built by the stage N compiler.
145145

146146
Here is a chart of a full build using `x.py`:
@@ -160,11 +160,12 @@ Note that there are two `std` libraries in play here:
160160
2. The library _used to compile programs_ with `stageN/rustc`, which was
161161
built by stage N (stage N `std`).
162162

163-
stage N `std` is pretty much necessary for any useful work with the compiler.
163+
stage N `std` is pretty much necessary for any useful work with the stage N compiler.
164164
Without it, you can only compile programs with `#![no_core]` -- not terribly useful!
165165

166166
The reason these need to be different is because they aren't necessarily ABI-compatible:
167-
there could be a new layout optimization on nightly that isn't present in `beta`.
167+
there could be a new layout optimizations, changes to MIR, or other changes
168+
to Rust metadata on nightly that aren't present in `beta`.
168169

169170
This is also where `--keep-stage 1 library/std` comes into play. Since most
170171
changes to the compiler don't actually change the ABI, once you've produced a

0 commit comments

Comments
 (0)