Skip to content

Comments

Rollup of 12 pull requests#153074

Merged
rust-bors[bot] merged 37 commits intorust-lang:mainfrom
jhpratt:rollup-6aKDmTD
Feb 25, 2026
Merged

Rollup of 12 pull requests#153074
rust-bors[bot] merged 37 commits intorust-lang:mainfrom
jhpratt:rollup-6aKDmTD

Conversation

@jhpratt
Copy link
Member

@jhpratt jhpratt commented Feb 25, 2026

Successful merges:

r? @ghost

Create a similar rollup

Trivaxy and others added 30 commits January 21, 2026 05:04
Co-authored-by: Michael Howell <michael@notriddle.com>
Co-authored-by: Esteban Küber <esteban@kuber.com.ar>
Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
…s on bulk inserting other_keys into self map, and inlined with_next() insertion on conflicts from Cursor*
For the attribute `FooBar` the parser is generally called `FooBarParser`
and the kind is called `AttributeKind::FooBar`. This commit renames some
cases that don't match that pattern. The most common cases:
- Adding `Rustc` to the front of the parser name for a `rustc_*`
  attribute.
- Adding `Parser` to the end of a parser name.
- Slight word variations, e.g. `Deprecation` instead of `Deprecated`,
  `Pointer` instead of `Ptr`, `Stability` instead of `Stable`.
Previously this would sometimes just say "unexpected output ``", which
was extremely unhelpful. The actual issue was that I had a `.jj`
directory but not a `.git` directory, so it couldn't run `git submodule
update.`
…ark-Simulacrum

ptr::replace: make calls on ZST null ptr not UB

See rust-lang#138351 for context.

We made `ptr::read` and `ptr::write` not UB on ZST null pointers. This does the same with `ptr::replace`. Since we're just adding a branch on a constant, this should come at no runtime cost.
Fix doc link used in suggestion for pinning self

Fixes rust-lang#147901

The old suggestion linked to a documentation page that [no longer exists](https://rust-lang.github.io/async-book/04_pinning/01_chapter.html#pinning-in-practice). Presumably, [this](https://rust-lang.github.io/async-book/part-reference/pinning.html) is the better place to link to now
…, r=Mark-Simulacrum

`BTreeMap::merge` optimized

This is an optimized version of rust-lang#151981. See [ACP](rust-lang/libs-team#739 (comment)) for more information on `BTreeMap::merge` does.

CC @programmerjake. Let me know what you think of how I'm using `CursorMut` and `IntoIter` here and whether the unsafe code here looks good. I decided to use `ptr::read()` and `ptr::write()` to grab the value from `CursorMut` as `V` than `&mut V`, use it within the `conflict` function, and overwrite the content of conflicting key afterward.

I know this needs some polishing, especially with refactoring some redundant looking code in a nicer way, some of which could probably just be public API methods for `CursorMut`. It does pass all the tests that I currently have for `BTreeMap::merge` (inspired from `BTreeMap::append`) though, so that's good.
…le, r=estebank

rustc_expand: improve diagnostics for non-repeatable metavars

Fix rust-lang#47452.
mGCA: improve ogca diagnostic message

r? BoxyUwU
@rustbot rustbot added 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. labels Feb 25, 2026
@jhpratt
Copy link
Member Author

jhpratt commented Feb 25, 2026

@bors r+ rollup=never p=5

@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 25, 2026

📌 Commit ec849ca 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 Feb 25, 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 Feb 25, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 25, 2026

☀️ Test successful - CI
Approved by: jhpratt
Duration: 4h 3m 59s
Pushing 58745ca to main...

@rust-bors rust-bors bot merged commit 58745ca into rust-lang:main Feb 25, 2026
12 checks passed
@rustbot rustbot added this to the 1.95.0 milestone Feb 25, 2026
@github-actions
Copy link
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 11ad63a (parent) -> 58745ca (this PR)

Test differences

Show 311 test diffs

Stage 1

  • [crashes] tests/crashes/139462.rs: pass -> [missing] (J1)
  • [debuginfo-gdb] tests/debuginfo/unsafe-binders.rs: [missing] -> pass (J1)
  • [rustdoc-html] tests/rustdoc-html/extern/extern-html-root-url-relative.rs: [missing] -> pass (J1)
  • [ui] tests/ui/box/unit/unique-assign.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-containing-tag.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-create.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-decl-init.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-decl-move.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-decl.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-deref.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-drop-complex.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-fn-arg-move.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-fn-arg.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-fn-ret.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-init.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-log.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-match-discrim.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-move-temp.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-move.rs: pass -> [missing] (J1)
  • [ui] tests/ui/box/unit/unique-rec.rs: pass -> [missing] (J1)
  • [ui] tests/ui/const-generics/ogca/generic-param-rhs.rs: [missing] -> pass (J1)
  • [ui] tests/ui/macros/typo-in-norepeat-expr-2.rs: [missing] -> pass (J1)
  • [ui] tests/ui/macros/typo-in-norepeat-expr.rs: [missing] -> pass (J1)
  • [ui] tests/ui/unsafe-binders/unsafe-binders-debuginfo.rs: [missing] -> pass (J1)
  • collections::btree::map::tests::test_id_based_merge: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_12: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_14: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_144: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_145: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_17: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_170: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_1700: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_181: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_239: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_7: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_9: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_conflict_drop_leak: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_drop_leak: [missing] -> pass (J2)
  • collections::btree::map::tests::test_merge_ord_chaos: [missing] -> pass (J2)

Stage 2

  • [ui] tests/ui/box/unit/unique-assign.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-containing-tag.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-create.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-decl-init.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-decl-move.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-decl.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-deref.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-drop-complex.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-fn-arg-move.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-fn-arg.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-fn-ret.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-init.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-log.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-match-discrim.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-move-temp.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-move.rs: pass -> [missing] (J0)
  • [ui] tests/ui/box/unit/unique-rec.rs: pass -> [missing] (J0)
  • [ui] tests/ui/const-generics/ogca/generic-param-rhs.rs: [missing] -> pass (J0)
  • [ui] tests/ui/macros/typo-in-norepeat-expr-2.rs: [missing] -> pass (J0)
  • [ui] tests/ui/macros/typo-in-norepeat-expr.rs: [missing] -> pass (J0)
  • [crashes] tests/crashes/139462.rs: ignore (gcc backend is marked as ignore) -> [missing] (J3)
  • [debuginfo-gdb] tests/debuginfo/unsafe-binders.rs: [missing] -> ignore (gcc backend is marked as ignore) (J3)
  • [ui] tests/ui/unsafe-binders/unsafe-binders-debuginfo.rs: [missing] -> ignore (gcc backend is marked as ignore) (J3)
  • collections::btree::map::tests::test_id_based_merge: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_12: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_14: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_144: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_145: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_17: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_170: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_181: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_7: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_9: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_conflict_drop_leak: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_drop_leak: [missing] -> pass (J4)
  • collections::btree::map::tests::test_merge_ord_chaos: [missing] -> pass (J4)
  • [ui] tests/ui/unsafe-binders/unsafe-binders-debuginfo.rs: [missing] -> pass (J5)
  • [debuginfo-lldb] tests/debuginfo/unsafe-binders.rs: [missing] -> pass (J6)
  • [crashes] tests/crashes/139462.rs: pass -> [missing] (J7)
  • collections::btree::map::tests::test_merge_1700: [missing] -> pass (J7)
  • collections::btree::map::tests::test_merge_239: [missing] -> pass (J7)
  • [debuginfo-gdb] tests/debuginfo/unsafe-binders.rs: [missing] -> pass (J8)
  • [debuginfo-gdb (split-dwarf)] tests/debuginfo/unsafe-binders.rs: [missing] -> pass (J9)
  • [debuginfo-cdb] tests/debuginfo/unsafe-binders.rs: [missing] -> pass (J10)
  • [rustdoc-html] tests/rustdoc-html/extern/extern-html-root-url-relative.rs: [missing] -> pass (J11)

Additionally, 227 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 58745ca3b05afa82bd5720dd05f3854e674700e0 --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-apple-various: 2h 20m -> 1h 32m (-34.1%)
  2. dist-aarch64-apple: 2h 36m -> 1h 45m (-32.7%)
  3. aarch64-apple: 3h 15m -> 3h 57m (+21.3%)
  4. dist-x86_64-apple: 2h 30m -> 2h 5m (-16.3%)
  5. x86_64-gnu-llvm-20: 1h 10m -> 1h 17m (+10.2%)
  6. dist-x86_64-freebsd: 1h 25m -> 1h 33m (+9.0%)
  7. dist-i686-msvc: 2h 10m -> 2h 20m (+8.1%)
  8. dist-powerpc-linux: 1h 25m -> 1h 31m (+7.9%)
  9. x86_64-msvc-ext2: 1h 35m -> 1h 42m (+6.8%)
  10. dist-powerpc64-linux-musl: 1h 30m -> 1h 35m (+6.2%)
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
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#149169 ptr::replace: make calls on ZST null ptr not UB 6e1951f11c05f55619bc18afac75d8827ca127a9 (link)
#150562 Fix doc link used in suggestion for pinning self de93e0cf948f505db6ccecf778818154dbe9d9ae (link)
#152418 BTreeMap::merge optimized 73143b06c7c1a162a7e701b4e0863f3b2179f725 (link)
#152679 rustc_expand: improve diagnostics for non-repeatable metava… 2f7d51a313739380dbe5fa7a71454821a3a8df04 (link)
#152868 delete some very old trivial Box tests 19db1d67071f3818e42abda99a6723ac537c1171 (link)
#152922 rustc_public: Make fields that shouldn't be exposed visible… dd2af062b2ce58413c464c8b52af3b51e088e2c8 (link)
#152952 mGCA: improve ogca diagnostic message 632f5bfd1f4b7755ee07041bd08141345dd5887a (link)
#152977 Fix relative path handling for --extern-html-root-url ac5579b19662934efba385fa067d9646bf991687 (link)
#153017 Implement debuginfo for unsafe binder types 6051e59917ee3125229d58ff922c85be4e1b2e7d (link)
#153032 Fix attribute parser and kind names. e1a8dce7d87ccd09b18531e11cbd5b8a374ee2b0 (link)
#153051 Migration of LintDiagnostic - part 3 86e09325d662b75983bdc4be7f758cbcbb8509a3 (link)
#153060 Give a better error when updating a submodule fails d89dbd362c2e027bc6f8caebcb7c2ebc735bb7e2 (link)

previous master: 11ad63a942

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
Collaborator

Finished benchmarking commit (58745ca): comparison URL.

Overall result: ❌ regressions - 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)
1.9% [0.2%, 4.9%] 44
Regressions ❌
(secondary)
0.9% [0.2%, 3.3%] 25
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.4% [-0.4%, -0.4%] 1
All ❌✅ (primary) 1.9% [0.2%, 4.9%] 44

Max RSS (memory usage)

Results (primary -2.3%, secondary -3.2%)

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

mean range count
Regressions ❌
(primary)
3.9% [3.9%, 3.9%] 1
Regressions ❌
(secondary)
2.6% [2.6%, 2.6%] 1
Improvements ✅
(primary)
-4.3% [-5.3%, -3.7%] 3
Improvements ✅
(secondary)
-5.2% [-7.0%, -4.0%] 3
All ❌✅ (primary) -2.3% [-5.3%, 3.9%] 4

Cycles

Results (primary 2.6%, secondary 1.0%)

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

mean range count
Regressions ❌
(primary)
2.6% [2.2%, 3.2%] 8
Regressions ❌
(secondary)
2.5% [2.3%, 2.5%] 3
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.5% [-3.5%, -3.5%] 1
All ❌✅ (primary) 2.6% [2.2%, 3.2%] 8

Binary size

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

Bootstrap: 482.035s -> 478.569s (-0.72%)
Artifact size: 397.81 MiB -> 395.75 MiB (-0.52%)

@Kobzol
Copy link
Member

Kobzol commented Feb 25, 2026

@JonathanBrouwer
Copy link
Contributor

The regression is fully explained by #152679
@rustbot label: +perf-regression-triaged

@rustbot rustbot added the perf-regression-triaged The performance regression has been triaged. label Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-rustdoc-json Area: Rustdoc JSON backend merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.