Skip to content

Rollup of 8 pull requests - #154273

Merged
rust-bors[bot] merged 32 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-TJZsnIo
Mar 24, 2026
Merged

Rollup of 8 pull requests#154273
rust-bors[bot] merged 32 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-TJZsnIo

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

Jules-Bertholetand others added 30 commits March 14, 2026 19:20
The test began passing in `nightly-2025-10-16`. Probably by c50aebb
because it fixed two "does not live long enough" errors. The test fails
to compile with `nightly-2025-10-15` with such an error:
$ rustc +nightly-2025-10-15 --edition 2018 tests/ui/async-await/gat-is-send-across-await.rs
error: `impl G` does not live long enough
--> tests/ui/async-await/gat-is-send-across-await.rs:16:24
|
16 | let _: &dyn Send = &async move {
| ________________________^
17 | | let _gat = g.as_gat();
18 | | async{}.await
19 | | };
| |_____^
- `char::is_cased`
- `char::is_titlecase`
- `char::case`
- `char::to_titlecase`
It will use enzyme to generate a default derivative implementation,
which can be overwritten by the user.
This reverts commit d665c0b.
This reverts commit 9aa065b.
This reverts commit 6edf58f.
…Simulacrum
Add APIs for dealing with titlecase
ACP: rust-lang/libs-team#354
Tracking issue: rust-lang#153892
r? libs-api
@rustbot label T-libs -T-libs-api A-unicode
~~The last commit has some insta-stable `PartialEq` impls, therefore: @rustbot label -needs-fcp
Alternatively, I could split those out into a follow-up PR.~~ (Edit: will do in follow-up)
…=jdonszelmann
Remove `ATTRIBUTE_ORDER`
r? @jdonszelmann
There's only a few attributes that use `KeepInnermost` and I think I like the consistency of just making them all `KeepOutermost`
…rochenkov
Avoid prematurely choosing a glob import
Fixesrust-lang#153842
Use the following without introducing trait to explain:
```rust
mod a {
pub use crate::x::y as x; // single import rust-lang#1
}
mod b {
pub mod x {
pub mod y {}
}
}
use a::x; // single import rust-lang#2
use b::*; // glob import rust-lang#3
fn main() {}
```
In current implementation, when `rust-lang#1` is first resolved, `crate::x` is temporarily taken from glob import `rust-lang#3` as `crate::b::x`. This happens because `single_import_can_define_name` will see that `rust-lang#2` cannot define `x` (because it depends on `rust-lang#1` and `rust-lang#1` is ignored) and then return `false`. Later, during finalization, `crate::x` in `rust-lang#1` resolves through single import `rust-lang#2` instead, which no longer matches the initially cached module `crate::b::x` and triggers the ICE.
I think the resolver should keep this unresolved because `rust-lang#2` may still define `x` to avoid prematurely choosing a glob import.
r? petrochenkov
…=WaffleLapkin
const validity checking: do not recurse to references inside MaybeDangling
This arguably should be allowed, but we currently reject it:
```rust
#![feature(maybe_dangling)]
use std::mem::MaybeDangling;
const X: MaybeDangling<&bool> = unsafe { std::mem::transmute(&5u8) };
```
r? @WaffleLapkin
…ize-in-generalize, r=lcnr
Revert eagerly normalize in generalize
r? @lcnr
Reverts rust-lang#151746
We'll likely pull eager normalization out of generalization
Fixesrust-lang#154173Fixesrust-lang#154244
…r=petrochenkov
tests/ui/async-await/gat-is-send-across-await.rs: New regression test
The test began passing in `nightly-2025-10-16`. Probably by c50aebb (rust-lang#144064) because it fixed two "does not live long enough" errors. The test fails to compile with `nightly-2025-10-15` with such an error:
$ rustc +nightly-2025-10-15 --edition 2018 tests/ui/async-await/gat-is-send-across-await.rs
error: `impl G` does not live long enough
--> tests/ui/async-await/gat-is-send-across-await.rs:16:24
|
16 | let _: &dyn Send = &async move {
| ________________________^
17 | | let _gat = g.as_gat();
18 | | async{}.await
19 | | };
| |_____^
Closesrust-lang#111852 since that's where the test comes from.
…athanBrouwer
Remove more `BuiltinLintDiag` variants
Part of rust-lang#153099.
r? @JonathanBrouwer
…onathanBrouwer,jdonszelmann
Allow applying autodiff macros to trait functions.
It will use enzyme to generate a default derivative implementation, which can be overwritten by the user.
closes: rust-lang#153329
r? @JonathanBrouwer
@rust-borsrust-borsBot added the rollup A PR which is a rollup label Mar 23, 2026
@rustbotrustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) 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 Mar 23, 2026
@JonathanBrouwer

Copy link
Copy Markdown
MemberAuthor

@bors r+ rollup=never p=5

@rust-bors

rust-borsBot commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

📌 Commit a9b4849 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-borsrust-borsBot 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 Mar 23, 2026
@rust-bors

This comment has been minimized.

@rust-borsrust-borsBot 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 Mar 24, 2026
@rust-bors

rust-borsBot commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 8m 48s
Pushing 6f22f61 to main...

@rust-bors
rust-borsBot merged commit 6f22f61 into rust-lang:mainMar 24, 2026
12 checks passed
@rustbotrustbot added this to the 1.96.0 milestone Mar 24, 2026
@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 f66622c (parent) -> 6f22f61 (this PR)

Test differences

Show 193 test diffs

Stage 1

  • char::at_most_one_case: [missing] -> pass (J2)
  • char::test_char_case: [missing] -> pass (J2)
  • char::test_is_cased: [missing] -> pass (J2)
  • char::test_is_titlecase: [missing] -> pass (J2)
  • char::titlecase_fast_path: [missing] -> pass (J2)
  • unicode::to_titlecase: [missing] -> pass (J2)
  • [pretty] tests/pretty/autodiff/trait.rs: [missing] -> ignore (ignored when LLVM Enzyme is disabled or LLVM is not the default codegen backend) (J3)
  • [ui] tests/ui/async-await/gat-is-send-across-await.rs: [missing] -> pass (J3)
  • [ui] tests/ui/imports/inconsistent-resolution-153842.rs: [missing] -> pass (J3)
  • [ui] tests/ui/traits/next-solver/generalize/constrain-inference-during-normalize.rs: [missing] -> pass (J3)
  • [ui] tests/ui/traits/next-solver/generalize/eagely-normalizing-aliases.rs#next: pass -> [missing] (J3)
  • [ui] tests/ui/traits/next-solver/generalize/eagely-normalizing-aliases.rs#old: pass -> [missing] (J3)

Stage 2

  • [ui] tests/ui/async-await/gat-is-send-across-await.rs: [missing] -> pass (J0)
  • [ui] tests/ui/imports/inconsistent-resolution-153842.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/generalize/constrain-inference-during-normalize.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/generalize/eagely-normalizing-aliases.rs#next: pass -> [missing] (J0)
  • [ui] tests/ui/traits/next-solver/generalize/eagely-normalizing-aliases.rs#old: pass -> [missing] (J0)
  • char::at_most_one_case: [missing] -> pass (J1)
  • char::test_char_case: [missing] -> pass (J1)
  • unicode::to_titlecase: [missing] -> pass (J1)
  • char::at_most_one_case: [missing] -> ignore (J4)
  • char::test_char_case: [missing] -> ignore (J4)
  • unicode::to_titlecase: [missing] -> ignore (J4)
  • char::test_is_cased: [missing] -> pass (J5)
  • char::test_is_titlecase: [missing] -> pass (J5)
  • char::titlecase_fast_path: [missing] -> pass (J5)
  • [pretty] tests/pretty/autodiff/trait.rs: [missing] -> ignore (ignored when LLVM Enzyme is disabled or LLVM is not the default codegen backend) (J6)

Additionally, 166 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 6f22f61305478df09f9a4523743f85d9f558c3d7 --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. dist-x86_64-apple: 2h 32m -> 1h 54m (-24.7%)
  2. dist-aarch64-llvm-mingw: 1h 28m -> 1h 42m (+15.6%)
  3. x86_64-gnu-llvm-22-1: 1h 5m -> 1h 13m (+13.1%)
  4. tidy: 2m 29s -> 2m 47s (+11.8%)
  5. pr-check-2: 39m 20s -> 43m 43s (+11.1%)
  6. dist-aarch64-msvc: 1h 47m -> 1h 36m (-10.3%)
  7. x86_64-msvc-ext3: 1h 51m -> 1h 41m (-9.4%)
  8. x86_64-gnu: 2h 10m -> 2h 22m (+9.4%)
  9. aarch64-gnu-llvm-21-1: 55m 32s -> 1h (+8.6%)
  10. dist-x86_64-musl: 2h 15m -> 2h 3m (-8.4%)
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

Finished benchmarking commit (6f22f61): 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.

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.4%[0.4%, 0.4%]1
Improvements ✅
(primary)
-0.2%[-0.3%, -0.1%]7
Improvements ✅
(secondary)
-0.2%[-0.4%, -0.1%]17
All ❌✅ (primary)-0.2%[-0.3%, -0.1%]7

Max RSS (memory usage)

Results (primary 1.0%, secondary 7.4%)

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

meanrangecount
Regressions ❌
(primary)
3.4%[2.2%, 5.3%]3
Regressions ❌
(secondary)
7.4%[7.4%, 7.4%]1
Improvements ✅
(primary)
-2.4%[-4.3%, -0.5%]2
Improvements ✅
(secondary)
--0
All ❌✅ (primary)1.0%[-4.3%, 5.3%]5

Cycles

Results (primary 4.3%, secondary 2.3%)

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

meanrangecount
Regressions ❌
(primary)
4.3%[3.6%, 5.1%]6
Regressions ❌
(secondary)
2.3%[2.3%, 2.3%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)4.3%[3.6%, 5.1%]6

Binary size

Results (primary 0.1%, secondary 0.1%)

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

meanrangecount
Regressions ❌
(primary)
0.1%[0.0%, 0.1%]47
Regressions ❌
(secondary)
0.1%[0.0%, 0.1%]22
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.1%[0.0%, 0.1%]47

Bootstrap: 484.979s -> 485.277s (0.06%)
Artifact size: 394.94 MiB -> 396.91 MiB (0.50%)

@rustbotrustbot added the perf-regression Performance regression. label Mar 24, 2026
@JonathanBrouwer

Copy link
Copy Markdown
MemberAuthor

The regression is noise, the improvements are not :)

@JonathanBrouwer

JonathanBrouwer commented Mar 24, 2026

Copy link
Copy Markdown
MemberAuthor

@rustbot label: +perf-regression-triaged

@rustbotrustbot added the perf-regression-triaged The performance regression has been triaged. label Mar 24, 2026
@JonathanBrouwer
JonathanBrouwer deleted the rollup-TJZsnIo branch August 21, 2026 08:17
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributesArea: Attributes (`#[…]`, `#![…]`)merged-by-borsThis PR was explicitly merged by bors.perf-regressionPerformance regression.perf-regression-triagedThe performance regression has been triaged.rollupA PR which is a rollupT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.WG-trait-system-refactorThe Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@JonathanBrouwer@rust-timer@rustbot@Jules-Bertholet@mu001999@RalfJung@Enselic@GuillaumeGomez@ZuseZ4@jdonszelmann