bootstrap: Split the Step trait into multiple traits#159638
Open
Zalathar wants to merge 1 commit into
Open
Conversation
Collaborator
|
This PR changes how LLVM is built. Consider updating src/bootstrap/download-ci-llvm-stamp. This PR changes how GCC is built. Consider updating src/bootstrap/download-ci-gcc-stamp. |
Kobzol
reviewed
Jul 21, 2026
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Member
Author
|
(Rebased over import conflicts, no changes.) |
jieyouxu
approved these changes
Jul 25, 2026
Collaborator
|
This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed. Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers. |
Steps that can be selected from the command-line implement the full `CommandLineStep` trait, which also provides an implementation of `Step`. Helper tasks implement the smaller `Step` trait directly. They still participate in step-caching and step-tracing, but don't interact with command-line selectors.
Member
Author
|
Addressed nits: (diff) |
Member
Author
|
@bors r=jieyouxu |
Contributor
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Jul 26, 2026
bootstrap: Split the `Step` trait into multiple traits - Revised version of rust-lang#159423 - [#t-infra/bootstrap > Terminology consistency of the important concepts](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Terminology.20consistency.20of.20the.20important.20concepts/with/611795947) - [#t-infra/bootstrap > Path filters in bootstrap](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Path.20filters.20in.20bootstrap/with/611415742) --- An awkward thing about bootstrap's Step trait is that several of its implementations represent “helper tasks” that participate in bootstrap's internal caching system, but can't be explicitly selected via command-line arguments. Those tasks need to supply dummy implementations for some Step methods related to command-line processing. This PR tries to reduce that tension by splitting the `Step` trait into two traits. --- Steps that can be selected from the command-line implement the full `CommandLineStep` trait, which also provides an implementation of `Step`. Helper tasks implement the smaller `Step` trait directly. They still participate in step-caching and step-tracing, but don't interact with command-line selectors. r? jieyouxu
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Jul 26, 2026
bootstrap: Split the `Step` trait into multiple traits - Revised version of rust-lang#159423 - [#t-infra/bootstrap > Terminology consistency of the important concepts](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Terminology.20consistency.20of.20the.20important.20concepts/with/611795947) - [#t-infra/bootstrap > Path filters in bootstrap](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Path.20filters.20in.20bootstrap/with/611415742) --- An awkward thing about bootstrap's Step trait is that several of its implementations represent “helper tasks” that participate in bootstrap's internal caching system, but can't be explicitly selected via command-line arguments. Those tasks need to supply dummy implementations for some Step methods related to command-line processing. This PR tries to reduce that tension by splitting the `Step` trait into two traits. --- Steps that can be selected from the command-line implement the full `CommandLineStep` trait, which also provides an implementation of `Step`. Helper tasks implement the smaller `Step` trait directly. They still participate in step-caching and step-tracing, but don't interact with command-line selectors. r? jieyouxu
rust-bors Bot
pushed a commit
that referenced
this pull request
Jul 26, 2026
…uwer Rollup of 24 pull requests Successful merges: - #159638 (bootstrap: Split the `Step` trait into multiple traits) - #159774 (rustc_trait_selection: fix trait solver hang caused by degenerate obligations) - #159837 (line-tables-only test: check that the line number matches the function name) - #159946 (Update Enzyme submodule to imporve llvm-cov) - #159617 (Fix up `#[linkage]` target checking) - #159733 (std: Switch implementations of `thread_local!` for WASI) - #159783 (Check unsafe impls on safe EIIs) - #159810 (Add tuple never coercion collection regression test) - #159821 (Update expect message using the recommended style in binary_heap module) - #159826 (Remove redundant `#[rustc_paren_sugar]` feature gate) - #159846 (Implement `str::copy_from_str`) - #159849 (rustc_parse: Stop returning `Option` from statement parsing) - #159853 (Updated expect messages for `CString` struct and method documentation) - #159875 (More cleanup in `rustc_attr_parsing`) - #159882 (Update expect messages in library/alloc/boxed.rs and library/alloc/string.rs to follow the style guide) - #159891 (Split multiline derives into std/rustc macros) - #159893 (Fix `find_attr` hygiene and `rustc_hir` cleanups) - #159895 (rustc-dev-guide subtree update) - #159902 (Clarify that the expected runtime symbols signature is for the current target only) - #159914 (Fix error in diagnostic on_unmatched_args) - #159917 (spare capacity mut constification) - #159918 (rename abort_unwind → abort_on_unwind) - #159936 (Minor `rustc_ast::ast` doc cleanups) - #159945 (Update expect messages in library/core/src/ptr/non_null.rs)
rust-bors Bot
pushed a commit
that referenced
this pull request
Jul 26, 2026
…uwer Rollup of 24 pull requests Successful merges: - #159638 (bootstrap: Split the `Step` trait into multiple traits) - #159774 (rustc_trait_selection: fix trait solver hang caused by degenerate obligations) - #159837 (line-tables-only test: check that the line number matches the function name) - #159946 (Update Enzyme submodule to imporve llvm-cov) - #159617 (Fix up `#[linkage]` target checking) - #159733 (std: Switch implementations of `thread_local!` for WASI) - #159783 (Check unsafe impls on safe EIIs) - #159810 (Add tuple never coercion collection regression test) - #159821 (Update expect message using the recommended style in binary_heap module) - #159826 (Remove redundant `#[rustc_paren_sugar]` feature gate) - #159846 (Implement `str::copy_from_str`) - #159849 (rustc_parse: Stop returning `Option` from statement parsing) - #159853 (Updated expect messages for `CString` struct and method documentation) - #159875 (More cleanup in `rustc_attr_parsing`) - #159882 (Update expect messages in library/alloc/boxed.rs and library/alloc/string.rs to follow the style guide) - #159891 (Split multiline derives into std/rustc macros) - #159893 (Fix `find_attr` hygiene and `rustc_hir` cleanups) - #159895 (rustc-dev-guide subtree update) - #159902 (Clarify that the expected runtime symbols signature is for the current target only) - #159914 (Fix error in diagnostic on_unmatched_args) - #159917 (spare capacity mut constification) - #159918 (rename abort_unwind → abort_on_unwind) - #159936 (Minor `rustc_ast::ast` doc cleanups) - #159945 (Update expect messages in library/core/src/ptr/non_null.rs)
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Jul 26, 2026
bootstrap: Split the `Step` trait into multiple traits - Revised version of rust-lang#159423 - [#t-infra/bootstrap > Terminology consistency of the important concepts](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Terminology.20consistency.20of.20the.20important.20concepts/with/611795947) - [#t-infra/bootstrap > Path filters in bootstrap](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Path.20filters.20in.20bootstrap/with/611415742) --- An awkward thing about bootstrap's Step trait is that several of its implementations represent “helper tasks” that participate in bootstrap's internal caching system, but can't be explicitly selected via command-line arguments. Those tasks need to supply dummy implementations for some Step methods related to command-line processing. This PR tries to reduce that tension by splitting the `Step` trait into two traits. --- Steps that can be selected from the command-line implement the full `CommandLineStep` trait, which also provides an implementation of `Step`. Helper tasks implement the smaller `Step` trait directly. They still participate in step-caching and step-tracing, but don't interact with command-line selectors. r? jieyouxu
JonathanBrouwer
added a commit
to JonathanBrouwer/rust
that referenced
this pull request
Jul 26, 2026
bootstrap: Split the `Step` trait into multiple traits - Revised version of rust-lang#159423 - [#t-infra/bootstrap > Terminology consistency of the important concepts](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Terminology.20consistency.20of.20the.20important.20concepts/with/611795947) - [#t-infra/bootstrap > Path filters in bootstrap](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Path.20filters.20in.20bootstrap/with/611415742) --- An awkward thing about bootstrap's Step trait is that several of its implementations represent “helper tasks” that participate in bootstrap's internal caching system, but can't be explicitly selected via command-line arguments. Those tasks need to supply dummy implementations for some Step methods related to command-line processing. This PR tries to reduce that tension by splitting the `Step` trait into two traits. --- Steps that can be selected from the command-line implement the full `CommandLineStep` trait, which also provides an implementation of `Step`. Helper tasks implement the smaller `Step` trait directly. They still participate in step-caching and step-tracing, but don't interact with command-line selectors. r? jieyouxu
rust-bors Bot
pushed a commit
that referenced
this pull request
Jul 26, 2026
…uwer Rollup of 28 pull requests Successful merges: - #159638 (bootstrap: Split the `Step` trait into multiple traits) - #159774 (rustc_trait_selection: fix trait solver hang caused by degenerate obligations) - #159837 (line-tables-only test: check that the line number matches the function name) - #159946 (Update Enzyme submodule to imporve llvm-cov) - #159962 (miri subtree update) - #156570 (tests: extend remap-path-prefix-std to all stdlib rlibs) - #159617 (Fix up `#[linkage]` target checking) - #159633 (Improve workings of attribute suggestions) - #159733 (std: Switch implementations of `thread_local!` for WASI) - #159783 (Check unsafe impls on safe EIIs) - #159810 (Add tuple never coercion collection regression test) - #159826 (Remove redundant `#[rustc_paren_sugar]` feature gate) - #159846 (Implement `str::copy_from_str`) - #159849 (rustc_parse: Stop returning `Option` from statement parsing) - #159853 (Updated expect messages for `CString` struct and method documentation) - #159875 (More cleanup in `rustc_attr_parsing`) - #159882 (Update expect messages in library/alloc/boxed.rs and library/alloc/string.rs to follow the style guide) - #159891 (Split multiline derives into std/rustc macros) - #159893 (Fix `find_attr` hygiene and `rustc_hir` cleanups) - #159895 (rustc-dev-guide subtree update) - #159902 (Clarify that the expected runtime symbols signature is for the current target only) - #159914 (Fix error in diagnostic on_unmatched_args) - #159917 (spare capacity mut constification) - #159918 (rename abort_unwind → abort_on_unwind) - #159927 (Remove sve2 from the ImpliedFeatures of AArch64 v9a.) - #159936 (Minor `rustc_ast::ast` doc cleanups) - #159945 (Update expect messages in library/core/src/ptr/non_null.rs) - #159950 (Add CFI tests for return types and never type)
Contributor
|
@bors try jobs=x86_64-mingw |
rust-bors Bot
pushed a commit
that referenced
this pull request
Jul 26, 2026
bootstrap: Split the `Step` trait into multiple traits try-job: x86_64-mingw-1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
StepTaskfrom the mainSteptrait #159423An awkward thing about bootstrap's Step trait is that several of its implementations represent “helper tasks” that participate in bootstrap's internal caching system, but can't be explicitly selected via command-line arguments. Those tasks need to supply dummy implementations for some Step methods related to command-line processing.
This PR tries to reduce that tension by splitting the
Steptrait into two traits.Steps that can be selected from the command-line implement the full
CommandLineSteptrait, which also provides an implementation ofStep.Helper tasks implement the smaller
Steptrait directly. They still participate in step-caching and step-tracing, but don't interact with command-line selectors.r? jieyouxu