Skip to content

Commit 42b0089

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 4bc77e8 commit 42b0089

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
@@ -144,17 +144,17 @@ built by `build --stage N compiler/rustc` -- that's 'stage N artifacts'
144144
('the compiler built by stage N').
145145

146146
In short, _stage 0 uses the stage0 compiler to create stage0 artifacts which
147-
will later be uplifted to stage1_.
147+
will later be uplifted to be the stage1 compiler_.
148148

149149
In each stage, two major steps are performed:
150150

151151
1. `std` is compiled by the stage N compiler.
152152
2. That `std` is linked to programs built by the stage N compiler, including
153-
the stage (N+1) compiler.
153+
the stage N artifacts (stage (N+1) compiler).
154154

155-
This is somewhat intuitive if one thinks of the stage (N+1) compiler as "just"
155+
This is somewhat intuitive if one thinks of the stage N artifacts as "just"
156156
another program we are building with the stage N compiler:
157-
`build --stage N compiler/rustc` is linking the stage (N+1) compiler to the `std`
157+
`build --stage N compiler/rustc` is linking the stage N artifacts to the `std`
158158
built by the stage N compiler.
159159

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

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

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

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

0 commit comments

Comments
 (0)