Open
Description
Location
https://blog.rust-lang.org/inside-rust/2025/05/29/redesigning-the-initial-bootstrap-sequence/
Summary
x check
has changed behavior since #119899. my understanding of the new behavior, as explained to me by @onur-ozkan, is:
x check --stage 0 std
is a noop (✅ this is already in the post).x check --stage 0
is the same as before, except it skipsx check --stage 0 std
. (❌ not in the post)x check
without arguments is equivalent tox check --stage 0 && x check --stage 1 library
. this is very surprising to me and i wish it did not imply the latter command. but if it does imply the latter, we should document that instead of silently changing behavior. (❌ not in the post)
we should also say what people should switch to. i do not think the default behavior (x check
without arguments) is good for all use cases; see in particular #141955 and #t-infra/bootstrap > Stage 0 std redesign support thread @ 💬).
i suggest the following docs:
- if you have modified only std, use
x check --stage 1 std --set rust.download-rustc=true
- if you have modified only compiler, use
x check --stage 0 compiler
- if you have modified neither and are on a tier 1 platform, we recommend only
x check --stage 0 compiler
. it is very unlikely for checking std to break for a tier 1 platform when the compiler has not been modified. - in all other cases, we recommend running both commands in sequence:
x check --stage 0 compiler && x check --stage 1 std --set rust.download-rustc=true
cc #t-infra/bootstrap > Stage 0 std redesign support thread @ 💬
@rustbot label T-bootstrap A-bootstrap-stages