Skip to content

Rollup of 20 pull requests#154727

Merged
rust-bors[bot] merged 77 commits intorust-lang:mainfrom
JonathanBrouwer:rollup-I3Rg5V6
Apr 2, 2026
Merged

Rollup of 20 pull requests#154727
rust-bors[bot] merged 77 commits intorust-lang:mainfrom
JonathanBrouwer:rollup-I3Rg5V6

Conversation

@JonathanBrouwer
Copy link
Copy Markdown
Contributor

Successful merges:

r? @ghost

Create a similar rollup

scrabsha and others added 30 commits March 22, 2026 12:53
PR rust-lang#154634 recently renamed many type parameters that impl
`HashStableContext` as `Hcx`. It missed a few that are named `HirCtx`.
This commit renames them.
They're in multiple sections with no rhyme or reason.
`derive(HashStable_Generic)` generates impls like this:
```
impl<__CTX> HashStable<__CTX> for ExpnKind
where
    __CTX: crate::HashStableContext
{
    fn hash_stable(&self, hcx : &mut __CTX, __hasher: &mut StableHasher) {
        ...
    }
}
```
This is used for crates that are upstream of `rustc_middle`.

The `crate::HashStableContext` bound means every crate that uses
`derive(HashStable_Generic)` must provide (or import) a trait
`HashStableContext` which `rustc_middle` then impls. In `rustc_span`
this trait is sensible, with three methods. In other crates, this trait
is empty, and there is the following trait hierarchy:
```
rustc_session::HashStableContext
  |              |
  |   rustc_hir::HashStableContext
  |         /                   \
rustc_ast::HashStableContext   rustc_abi::HashStableContext
  |
rustc_span::HashStableContext
```
All very strange and unnecessary. This commit changes
`derive(HashStable_Generic)` to use `rustc_span::HashStableContext`
instead of `crate::HashStableContext`. This eliminates the need for all
the empty `HashStableContext` traits and impls. Much better.
This annotates the `Arc` type with the diagnostic attribute
`#[diagnostic::on_move]`. Now when a moved `Arc` is borrowed,
a suggestion to clone it is made, with a label explaining why.
@rustbot rustbot added T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Apr 2, 2026
@JonathanBrouwer
Copy link
Copy Markdown
Contributor Author

@bors r+ rollup=never p=5

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Apr 2, 2026

📌 Commit d9e0301 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors rust-bors bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Apr 2, 2026
@rust-bors

This comment has been minimized.

@rust-bors rust-bors bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Apr 2, 2026
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors bot commented Apr 2, 2026

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 31m 13s
Pushing 55e86c9 to main...

@rust-bors rust-bors bot merged commit 55e86c9 into rust-lang:main Apr 2, 2026
12 checks passed
@rustbot rustbot added this to the 1.96.0 milestone Apr 2, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing e6b64a2 (parent) -> 55e86c9 (this PR)

Test differences

Show 556 test diffs

Stage 1

  • [ui] tests/ui/auto-traits/ungated-impl.rs: pass -> [missing] (J0)
  • [ui] tests/ui/const-generics/gca/basic-different-definitions.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/gca/basic.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/gca/coherence-fail.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/gca/coherence-ok.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/gca/generic-param-rhs.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/gca/rhs-but-not-root.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/mgca/type_const-mismatched-type-incremental.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/ogca/basic-fail.rs: pass -> [missing] (J0)
  • [ui] tests/ui/const-generics/ogca/basic.rs: pass -> [missing] (J0)
  • [ui] tests/ui/const-generics/ogca/coherence-ambiguous.rs: pass -> [missing] (J0)
  • [ui] tests/ui/const-generics/ogca/generic-param-rhs.rs: pass -> [missing] (J0)
  • [ui] tests/ui/const-generics/ogca/rhs-but-not-root.rs: pass -> [missing] (J0)
  • [ui] tests/ui/consts/ice-extra-args-fn-abi-issue-127423.rs: [missing] -> pass (J0)
  • [ui] tests/ui/enum/enum_u8_variant.rs: [missing] -> pass (J0)
  • [ui] tests/ui/extern/bad-external-async-fn-issue-146754.rs: [missing] -> pass (J0)
  • [ui] tests/ui/feature-gates/feature-gate-generic-const-args.rs: [missing] -> pass (J0)
  • [ui] tests/ui/feature-gates/feature-gate-opaque-generic-const-args.rs: pass -> [missing] (J0)
  • [ui] tests/ui/feature-gates/soft-feature-gate-negative_impls.rs: [missing] -> pass (J0)
  • [ui] tests/ui/imports/global-derive-path.rs: [missing] -> pass (J0)
  • [ui] tests/ui/issues/issue-23477.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-28625.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-34571.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-38160.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-49973.rs: pass -> [missing] (J0)
  • [ui] tests/ui/layout/opt-repr-i32-min.rs: [missing] -> pass (J0)
  • [ui] tests/ui/macros/macro-const-stringify.rs: [missing] -> pass (J0)
  • [ui] tests/ui/specialization/feature-gate-specialization.rs: [missing] -> pass (J0)
  • [ui] tests/ui/specialization/soft-feature-gate-specialization.rs#default: [missing] -> pass (J0)
  • [ui] tests/ui/specialization/soft-feature-gate-specialization.rs#full: [missing] -> pass (J0)
  • [ui] tests/ui/specialization/soft-feature-gate-specialization.rs#min: [missing] -> pass (J0)
  • [ui] tests/ui/specialization/specialization-feature-gate-default.rs: pass -> [missing] (J0)
  • [ui] tests/ui/traits/next-solver/global-where-bound-normalization.rs: pass -> [missing] (J0)
  • [ui] tests/ui/traits/next-solver/normalization-shadowing/is-global-norm-concrete-alias-to-generic.rs#current: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/normalization-shadowing/is-global-norm-concrete-alias-to-generic.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/transmute/transmute-associated-type-to-slice.rs: [missing] -> pass (J0)
  • [ui] tests/ui/transmute/transmute-slice-to-dst.rs: [missing] -> pass (J0)
  • [ui] tests/ui/unsized/thin-ptr-to-unsized-projection.rs: [missing] -> pass (J0)

Stage 2

  • [ui] tests/ui/auto-traits/ungated-impl.rs: pass -> [missing] (J1)
  • [ui] tests/ui/const-generics/gca/basic-different-definitions.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/gca/basic.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/gca/coherence-fail.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/gca/coherence-ok.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/gca/generic-param-rhs.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/gca/rhs-but-not-root.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/mgca/type_const-mismatched-type-incremental.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/ogca/basic-fail.rs: pass -> [missing] (J1)
  • [ui] tests/ui/const-generics/ogca/basic.rs: pass -> [missing] (J1)
  • [ui] tests/ui/const-generics/ogca/coherence-ambiguous.rs: pass -> [missing] (J1)
  • [ui] tests/ui/const-generics/ogca/generic-param-rhs.rs: pass -> [missing] (J1)
  • [ui] tests/ui/const-generics/ogca/rhs-but-not-root.rs: pass -> [missing] (J1)
  • [ui] tests/ui/consts/ice-extra-args-fn-abi-issue-127423.rs: [missing] -> pass (J1)
  • [ui] tests/ui/enum/enum_u8_variant.rs: [missing] -> pass (J1)
  • [ui] tests/ui/extern/bad-external-async-fn-issue-146754.rs: [missing] -> pass (J1)
  • [ui] tests/ui/feature-gates/feature-gate-generic-const-args.rs: [missing] -> pass (J1)
  • [ui] tests/ui/feature-gates/feature-gate-opaque-generic-const-args.rs: pass -> [missing] (J1)
  • [ui] tests/ui/feature-gates/soft-feature-gate-negative_impls.rs: [missing] -> pass (J1)
  • [ui] tests/ui/imports/global-derive-path.rs: [missing] -> pass (J1)
  • [ui] tests/ui/issues/issue-23477.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-28625.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-34571.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-38160.rs: pass -> [missing] (J1)
  • [ui] tests/ui/issues/issue-49973.rs: pass -> [missing] (J1)
  • [ui] tests/ui/layout/opt-repr-i32-min.rs: [missing] -> pass (J1)
  • [ui] tests/ui/macros/macro-const-stringify.rs: [missing] -> pass (J1)
  • [ui] tests/ui/specialization/feature-gate-specialization.rs: [missing] -> pass (J1)
  • [ui] tests/ui/specialization/soft-feature-gate-specialization.rs#default: [missing] -> pass (J1)
  • [ui] tests/ui/specialization/soft-feature-gate-specialization.rs#full: [missing] -> pass (J1)
  • [ui] tests/ui/specialization/soft-feature-gate-specialization.rs#min: [missing] -> pass (J1)
  • [ui] tests/ui/specialization/specialization-feature-gate-default.rs: pass -> [missing] (J1)
  • [ui] tests/ui/traits/next-solver/global-where-bound-normalization.rs: pass -> [missing] (J1)
  • [ui] tests/ui/traits/next-solver/normalization-shadowing/is-global-norm-concrete-alias-to-generic.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/traits/next-solver/normalization-shadowing/is-global-norm-concrete-alias-to-generic.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/transmute/transmute-associated-type-to-slice.rs: [missing] -> pass (J1)
  • [ui] tests/ui/transmute/transmute-slice-to-dst.rs: [missing] -> pass (J1)
  • [ui] tests/ui/unsized/thin-ptr-to-unsized-projection.rs: [missing] -> pass (J1)

Additionally, 480 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 55e86c996809902e8bbad512cfb4d2c18be446d9 --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. x86_64-msvc-ext3: 1h 20m -> 1h 45m (+31.0%)
  2. x86_64-rust-for-linux: 43m 16s -> 54m 2s (+24.9%)
  3. aarch64-apple: 2h 47m -> 3h 23m (+21.7%)
  4. dist-x86_64-apple: 1h 43m -> 2h 2m (+18.9%)
  5. pr-check-1: 28m 36s -> 33m 58s (+18.7%)
  6. x86_64-gnu-gcc: 58m 8s -> 1h 8m (+17.6%)
  7. dist-aarch64-apple: 1h 51m -> 2h 7m (+14.2%)
  8. x86_64-gnu: 2h 6m -> 2h 23m (+13.6%)
  9. aarch64-gnu-debug: 1h 9m -> 1h 18m (+13.5%)
  10. aarch64-gnu-llvm-21-1: 56m 25s -> 1h 3m (+13.1%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer
Copy link
Copy Markdown
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#153105 Compute the result of a projection type with region errors d1fa98ff81ccef2b93bf1ec480415149897146b2 (link)
#153532 Attributes containing rustc 3b1fc4af57fab8e6aafafa3cf19e3e021d5916bf (link)
#153614 FindParamInClause handle edge-cases 669332558a4316374e95daf1d63997d706e74ec4 (link)
#153960 Make layout_of cycles fatal errors 5cead2ceeb6950289c5698561285476fe5e0c8a3 (link)
#154213 tidy-alphabetical: fix line number in error message 8b2e6b22a52cc2547efe607f2b63f9f30f99ed9c (link)
#154425 Migrate transmute tests 3ace7ba210530afe444f51da8144fb53dc2fd0d6 (link)
#154442 Export derive at the crate root: core::derive and `std:… ff0d3282d5664bc1d8ccda689d89acca80ed2329 (link)
#154469 mGCA: Lower spans for literal const args e65347fb50ae6e373054826c58d19f7693254e45 (link)
#154527 Emit pre-expansion feature gate warnings for negative impls… 3f0ee8166963a874961f1bf95f06ab4543fe4221 (link)
#154578 Rename probe_ty_var to try_resolve_ty_var 45fc363d49fd9a7d17b1eeda25f883ee952850bb (link)
#154615 Moving issues 614326c1a66b773db3718055d3cfeb7b46cbd19d (link)
#154644 rustdoc: seperate methods and associated functions in sideb… 03407abbb95a8d1c4a532e5d514b7920ecd66592 (link)
#154660 Avoid creating async return opaques for foreign async fns b2bd30da8d6c72011ef2a79c152b8420c26d7a69 (link)
#154666 Remove StableHashContext impls 1e35c8686bb277486c325ccc625ed16b21e1db2a (link)
#154669 Introduce #[diagnostic::on_move] on Arc ee5764f7eca4fd35e230661a5b6412f3a06ecf16 (link)
#154671 Add a test for a past ICE when calling a const fn of an unr… 15edfebe1185c10040924f9d6f7191a6840d2ad2 (link)
#154680 [rustdoc] Replace DocContext with TyCtxt wherever possi… 134f2a0df9da7c362f58b6f773e34f0041a6fcbe (link)
#154709 Revert Ty type alias in rustc_type_ir 74bdaf5c4d767ef209578a5e67a5dd61719e6907 (link)
#154710 opaque_generic_const_args -> generic_const_args 22467272dd961bf8a0b09152bb90d51eaacbfb32 (link)
#154712 Revert "-Znext-solver Remove the forced ambiguity hack fr… c8039a6c7a6e1b5a8f2fe62ba710d35a731b77c0 (link)

previous master: e6b64a2f4c

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

@rust-timer
Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (55e86c9): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.1% [0.1%, 0.1%] 1
Improvements ✅
(primary)
-0.3% [-0.3%, -0.1%] 5
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -0.3% [-0.3%, -0.1%] 5

Max RSS (memory usage)

Results (primary 1.1%, secondary 3.5%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
1.1% [1.1%, 1.1%] 1
Regressions ❌
(secondary)
3.5% [1.8%, 5.1%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 1.1% [1.1%, 1.1%] 1

Cycles

This benchmark run did not return any relevant results for this metric.

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 487.024s -> 486.952s (-0.01%)
Artifact size: 395.12 MiB -> 395.04 MiB (-0.02%)

@rustbot rustbot added the perf-regression Performance regression. label Apr 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) A-tidy Area: The tidy tool merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. rollup A PR which is a rollup T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.