Skip to content

Rollup of 8 pull requests - #162046

Merged
rust-bors[bot] merged 21 commits into
rust-lang:mainfrom
jhpratt:rollup-mIDSgO6
Aug 31, 2026
Merged

Rollup of 8 pull requests#162046
rust-bors[bot] merged 21 commits into
rust-lang:mainfrom
jhpratt:rollup-mIDSgO6

Conversation

@jhpratt

@jhpratt jhpratt commented Aug 31, 2026

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

steffahn and others added 21 commits August 20, 2026 18:57
HIR writeback already normalizes closure types. Reuse that result instead of normalizing again in a temporary inference context that would drop region constraints.
HIR writeback already normalizes closure types. Restore alias rigidity after identity instantiation instead of running the solver again while building MIR.
Document when changes to the typing mode or parameter environment make rigidness stale, and when compatible mode groups may reuse it.
Unlike `LLVMTargetMachineRef`, `LLVMTwineRef` and `LLVMSMDiagnosticRef`
are not LLVM-C types and so don't need the wrap/unwrap conversions.
…rk-Simulacrum

libcore: expose volatile atomic operations

Tracking issue: rust-lang#158947
ACP: rust-lang/libs-team#801

@rust-lang/opsem @Darksonn @ojeda  help with the docs would be appreciated :)
(I figured kernel folks would have things to say about the DMA usecase that I allude to in my example.)

Unlike in the ACP, I called the operations `load_volatile` instead of `volatile_load`, to be consistent with the existing `read_volatile` that also makes `volatile` a suffix rather than a prefix (and same for stores).
…r=JohnTitor

Use better generic type parameter names for `Extend` and `FromIterator`

Change
```rs
pub trait Extend<A> {
    fn extend<T: IntoIterator<Item = A>>(&mut self, iter: T);
    …
}
```
to
```rs
pub trait Extend<T> {
    fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I);
    …
}
```

to be more consistent with common use of `T` as the item type in containers, and their `Extend` impls; and use `I` as the name for the `IntoIterator` type.

also do the basically the same thing for `FromIterator<A>`→`FromIterator<T>` as well

cases of these parameters in trait impls for the abovementioned traits.

These changes obviously don't change/break behavior of the traits and its users, but the improve the way the documentation of the traits renders (the improvement is the more sensible and more consistent names for the parameters). The only downside I'm aware of (besides that this is touching quite a few files..) is that this does affect some link anchor names in *some* cases. E.g.
```diff
- impl<A, V: FromIterator<A>> FromIterator<Option<A>> for Option<V> {
+ impl<T, V: FromIterator<T>> FromIterator<Option<T>> for Option<V> {
```
would mean that [doc.rust-lang.org/core/iter/trait.FromIterator.html#impl-FromIterator<Option\<A>>-for-Option\<V>](https://doc.rust-lang.org/core/iter/trait.FromIterator.html#impl-FromIterator%3COption%3CA%3E%3E-for-Option%3CV%3E) no longer works, as it changes `…#impl-FromIterator<Option<A>>-for-Option<V>` to `…#impl-FromIterator<Option<T>>-for-Option<V>`
…_rigidity, r=adwinwhite

borrowck: Restore alias rigidity from HIR typeck

Follow-up to rust-lang#161012. This came out of the review thread here:
rust-lang#161012 (comment)

Borrowck was normalizing the closure type again in a fresh inference context. HIR writeback had already done that work. EarlyBinder only marked the aliases as non-rigid again because it has to be conservative. If the second normalization creates region constraints, they disappear with the temporary context.

I first thought normalizing again here was fine. After tracing the type back through writeback, I think it makes more sense to trust the result from HIR typeck. Borrowck now restores the rigid flag, and the IsRigid docs explain that this state can carry into borrowck and when it needs to be reset.

Tested with the coroutine regression and tidy.

cc @adwinwhite @lcnr
…op, r=khyperia

Remove unused `perform_locally_with_next_solver`

A small cleanup. Followup of rust-lang#160982 (comment)
…white

Emit delayed bug instead of ICEing when `TypeOutlives` goal fails

Fixes rust-lang#161527

They can actually fail with the next-solver 😄

https://github.com/rust-lang/rust/blob/2e071b28ef7e8a066b49a179e1da753c53500c62/compiler/rustc_next_trait_solver/src/solve/mod.rs#L88-L93

I have once considered tinkering proof tree/`find_best_leaf_obligation` to make it suggest the failed normalization goal but I doubt it worths the extra complexity, since we prolly already have other failing obligations in these cases

r? adwinwhite
…or, r=nnethercote

Make the LLVM version mismatch ICE a fatal error

It was pointed out to me that the diatnostic in rust-lang#161788 has the usual ICE messages about how this is a bug and we'd appreciate a report. But it isn't, and a fatal error is a better way to report the problem. Manually tested on MacOS:
```
$ export DYLD_LIBRARY_PATH=/opt/homebrew/opt/llvm@21/lib
$ rustc +stage1 --print=sysroot
error: LLVM version mismatch: this compiler was built for LLVM 23, but LLVM 21.1.8 was found at /opt/homebrew/Cellar/llvm@21/21.1.8/lib/libLLVM.dylib

$ unset DYLD_LIBRARY_PATH
$ rustc +stage1 --print=sysroot
/Users/ben.kimock/rust/build/aarch64-apple-darwin/stage1
```
… r=Zalathar

LLVM wrapper cleanups

Details in individual commits.

r? @Zalathar
…er, r=nnethercote

_ an unused parameter

Followup to rust-lang#161788 addressing review feedback.

r? @nnethercote
@bors rollup
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Aug 31, 2026
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Aug 31, 2026
@jhpratt

jhpratt commented Aug 31, 2026

Copy link
Copy Markdown
Member Author

@bors r+ p=5

@rust-bors

rust-bors Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 5a41279 has been approved by jhpratt

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 Aug 31, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member

Trying commonly failed jobs
@bors try jobs=dist-various-1,test-various,x86_64-gnu-aux,x86_64-gnu-llvm-21-3,x86_64-msvc-1,aarch64-apple-1,aarch64-apple-2,x86_64-mingw-1,i686-msvc-1,i686-msvc-2

@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Aug 31, 2026
Rollup of 8 pull requests


try-job: dist-various-1
try-job: test-various
try-job: x86_64-gnu-aux
try-job: x86_64-gnu-llvm-21-3
try-job: x86_64-msvc-1
try-job: aarch64-apple-1
try-job: aarch64-apple-2
try-job: x86_64-mingw-1
try-job: i686-msvc-1
try-job: i686-msvc-2
@rust-bors

This comment has been minimized.

@rust-bors

rust-bors Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 33b09cf (33b09cf1c4a17268cea2873483a92f7fd2118267)
Base parent: 5321a4f (5321a4f40c957cf3587c055e77461febc2ebc865)

@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 Aug 31, 2026
@rust-bors

rust-bors Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: jhpratt
Duration: 3h 12m 9s
Pushing 45f215f to main...

@github-actions

Copy link
Copy Markdown
Contributor
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 be4b6a9 (parent) -> 45f215f (this PR)

Test differences

Show 1509 test diffs

Stage 1

  • [ui (polonius)] tests/ui/traits/next-solver/outlives-goal-error-due-to-normalization-failure-no-ice.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/outlives-goal-error-due-to-normalization-failure-no-ice.rs: [missing] -> pass (J1)
  • atomic::atomic_volatile: [missing] -> pass (J3)

Stage 2

  • [ui] tests/ui/traits/next-solver/outlives-goal-error-due-to-normalization-failure-no-ice.rs: [missing] -> pass (J2)
  • atomic::atomic_volatile: [missing] -> pass (J4)

Additionally, 1504 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 45f215f136e00d8a74c69afde2f71be3f16837cf --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-gnu-debug: 1h 27m -> 2h 11m (+50.7%)
  2. dist-armv7-linux: 1h 4m -> 1h 32m (+42.3%)
  3. x86_64-gnu-stable: 1h 54m -> 2h 40m (+39.2%)
  4. x86_64-gnu-nopt: 1h 51m -> 2h 31m (+35.4%)
  5. dist-powerpc64-linux-musl: 1h 16m -> 1h 43m (+35.0%)
  6. test-various: 2h 19m -> 1h 33m (-33.1%)
  7. i686-gnu-nopt-2: 2h 23m -> 1h 38m (-31.3%)
  8. x86_64-gnu-llvm-21-3: 1h 29m -> 1h 56m (+29.4%)
  9. i686-msvc-2: 1h 40m -> 2h 10m (+29.4%)
  10. dist-x86_64-solaris: 1h 20m -> 1h 43m (+29.0%)
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-bors

rust-bors Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#161301 libcore: expose volatile atomic operations d014ca731ed67b2ef53027bcb3ef81ae2c76c2fa
(link)
#161379 Use better generic type parameter names for Extend and `F… ea922082cb1441ea93514c0c32b79d40105329df
(link)
#161926 borrowck: Restore alias rigidity from HIR typeck 85335e567f84625e0ccfac62875e50146309b20c
(link)
#161956 Remove unused perform_locally_with_next_solver 450af0b278cf34702e682df458f1f0adfac3fe8c
(link)
#162026 Emit delayed bug instead of ICEing when TypeOutlives goal… f797fd86d6374ed42975c385ff22a9a624b0312a
(link)
#162034 Make the LLVM version mismatch ICE a fatal error fdeb69b67123cc2da0e7aceb0672fbefe7e7fe54
(link)
#162037 LLVM wrapper cleanups a5b99e11e0f09237f1c8deffebf32b06fdfaae0a
(link)
#162043 _ an unused parameter 4385a699f93814ff77f080e29efd54f759ac4ffc
(link)

parent commit: be4b6a99a3

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 (45f215f): comparison URL.

Overall result: ❌✅ regressions and improvements - no action needed

@rustbot label: -perf-regression

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.2% [0.2%, 0.2%] 1
Regressions ❌
(secondary)
0.2% [0.2%, 0.2%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.3% [-0.3%, -0.3%] 1
All ❌✅ (primary) 0.2% [0.2%, 0.2%] 1

Max RSS (memory usage)

Results (secondary 0.4%)

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

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
8.4% [8.4%, 8.4%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.2% [-2.7%, -1.7%] 3
All ❌✅ (primary) - - 0

Cycles

Results (primary -2.6%, secondary 5.9%)

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

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
6.8% [2.8%, 12.7%] 8
Improvements ✅
(primary)
-2.6% [-2.6%, -2.5%] 2
Improvements ✅
(secondary)
-1.7% [-1.7%, -1.7%] 1
All ❌✅ (primary) -2.6% [-2.6%, -2.5%] 2

Binary size

This perf run didn't have relevant results for this metric.

Bootstrap: 474.007s -> 475.395s (0.29%)
Artifact size: 307.41 MiB -> 401.38 MiB (30.57%)

@Kobzol

Kobzol commented Aug 31, 2026

Copy link
Copy Markdown
Member

(The artifact size result is an already fixed issue in rustc-perf, ignore that.)

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-translation Area: Translation infrastructure, and migrating existing diagnostics to SessionDiagnostic merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup 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. 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.