Skip to content

Rollup of 8 pull requests#153377

Merged
rust-bors[bot] merged 19 commits intorust-lang:mainfrom
Zalathar:rollup-cWj10b1
Mar 4, 2026
Merged

Rollup of 8 pull requests#153377
rust-bors[bot] merged 19 commits intorust-lang:mainfrom
Zalathar:rollup-cWj10b1

Conversation

@Zalathar
Copy link
Member

@Zalathar Zalathar commented Mar 4, 2026

Successful merges:

r? @ghost

Create a similar rollup

GuillaumeGomez and others added 19 commits March 2, 2026 11:44
Add a convenience method Path::absolute() that delegates to the
existing free function std::path::absolute(), mirroring the pattern of
Path::canonicalize() delegating to fs::canonicalize().

Tracking issue: rust-lang#153328
…r=lolbinarycat

Add regression test for `doc(fake_variadic)` on reexports

Follow-up of rust-lang#153136. Out of the four doc attributes remaining to be tested (`fake_variadic`, `keyword`, `attribute` and `notable_trait`), only `fake_variadic` could have been impacted by reexports:

* `attribute` and `keyword` are not supposed to be reexported (they're supposed to be used on private modules)
* `notable_trait` is applied to a trait, so whether it's reexported or not, it still works.

r? @lolbinarycat
x86: reserve `bl` and `bh` registers to match `rbx`

`bl` and `bh` need to be explicitly marked as reserved, as they are sub-registers of `rbx`, which is reserved by LLVM.

Discovered this while trying to run Graviola through Cranelift, which was becoming corrupted due to the register allocator assigning `bl`: rust-lang/rustc_codegen_cranelift#1629

cc: @bjorn3
…s, r=tgross35

Boundary tests for various Duration-float operations

As requested in rust-lang#150933 (comment)

r? tgross35
…t-else-wording, r=Kivooeo

Improve irrefutable let-else lint wording

Update the `irrefutable_let_patterns` wording for let-else to better reflect that the `else` clause is unreachable when the LHS pattern always matches.

Closes rust-lang#152938
diag: Suppress `.clone()` suggestion inside derive macro expansions

Derives on a packed struct with non-Copy fields generate moves whose spans point back at the original field type definitions. `suggest_cloning_inner()` then proposes inserting `.clone()` at those locations, producing nonsensical output like `String.clone()` in the struct definition.

close rust-lang#153126
…=tgross35

Add `Path::absolute` method as alias for `std::path::absolute`

`Path::canonicalize()` is an alias for `fs::canonicalize()`, but there's no equivalent `Path::absolute()` for `path::absolute()`. This adds one.

Discussed in rust-lang#92750 (comment), Chris [said](rust-lang#92750 (comment)) a PR would be welcome.

Tracking issue: rust-lang#153328
…r=tgross35

update panicking() docs for panic=abort

fixes rust-lang#151458

The documentation for `std::thread::panicking()` has not been changed since v1.0, even though panic hooks were added in v1.10.
Current documentation is misleading for `panic=abort`

`panicking()` can return `true` in 2 different cases:
1. Thread unwinds due to panic
2. Panic hook is executing with `panic=abort`

r? @SpriteOvO
…athanBrouwer

Migration of `LintDiagnostic` - part 6

Part of rust-lang#153099.

r? @JonathanBrouwer
@rust-bors rust-bors bot added the rollup A PR which is a rollup label Mar 4, 2026
@rustbot rustbot added 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. 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 Mar 4, 2026
@Zalathar
Copy link
Member Author

Zalathar commented Mar 4, 2026

Rollup of everything.

@bors r+ rollup=never p=5

@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 4, 2026

📌 Commit c4f239e has been approved by Zalathar

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 Mar 4, 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 Mar 4, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 4, 2026

☀️ Test successful - CI
Approved by: Zalathar
Duration: 3h 23m 28s
Pushing d933cf4 to main...

@rust-bors rust-bors bot merged commit d933cf4 into rust-lang:main Mar 4, 2026
12 checks passed
@rustbot rustbot added this to the 1.96.0 milestone Mar 4, 2026
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#153048 Improve irrefutable let-else lint wording f297754b7390cd3ed0524fbc55f51fa840080553 (link)
#153258 diag: Suppress .clone() suggestion inside derive macro ex… f01a365ddbf2b79236b4545d06d522d6c9fb0900 (link)
#153272 Add Path::absolute method as alias for `std::path::absolu… e9ef3019d86e1a31370bf136d9e67d8b77a3edf4 (link)
#153280 Add regression test for doc(fake_variadic) on reexports 64533611984e5e16b5dcf1530d4fcaa78ad0e1ba (link)
#153295 update panicking() docs for panic=abort 72c4810e98ecd7865dd6295b2b66ef0393c59530 (link)
#153302 x86: reserve bl and bh registers to match rbx 228c68b89d787b65ebb02b2fe2eb2ddb05eb7ae6 (link)
#153352 Migration of LintDiagnostic - part 6 74377302ce750648eb873e29ecaa66e6c34c505c (link)
#153358 Boundary tests for various Duration-float operations 19bee382378fbe2f8d93214cd6b1335b212fe8d1 (link)

previous master: d9563937fa

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

@github-actions
Copy link
Contributor

github-actions bot commented Mar 4, 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 d956393 (parent) -> d933cf4 (this PR)

Test differences

Show 152 test diffs

Stage 1

  • time::duration_fp_boundaries: [missing] -> pass (J0)
  • time::duration_fp_div_nan: [missing] -> pass (J0)
  • time::duration_fp_div_negative: [missing] -> pass (J0)
  • time::duration_fp_div_negzero: [missing] -> pass (J0)
  • time::duration_fp_div_overflow: [missing] -> pass (J0)
  • time::duration_fp_div_poszero: [missing] -> pass (J0)
  • time::duration_fp_mul_nan: [missing] -> pass (J0)
  • time::duration_fp_mul_negative: [missing] -> pass (J0)
  • time::duration_fp_mul_neginfinity: [missing] -> pass (J0)
  • time::duration_fp_mul_overflow: [missing] -> pass (J0)
  • time::duration_fp_mul_posinfinity: [missing] -> pass (J0)
  • [rustdoc-html] tests/rustdoc-html/primitive/reexport-fake_variadic.rs: [missing] -> pass (J2)
  • [ui] tests/ui/derives/deriving-with-repr-packed-no-clone-suggestion.rs: [missing] -> pass (J2)
  • [ui] tests/ui/let-else/let-else-irrefutable-152938.rs: [missing] -> pass (J2)

Stage 2

  • time::duration_fp_boundaries: [missing] -> pass (J1)
  • time::duration_fp_div_nan: [missing] -> pass (J1)
  • time::duration_fp_div_negative: [missing] -> pass (J1)
  • time::duration_fp_div_negzero: [missing] -> pass (J1)
  • time::duration_fp_div_overflow: [missing] -> pass (J1)
  • time::duration_fp_div_poszero: [missing] -> pass (J1)
  • time::duration_fp_mul_nan: [missing] -> pass (J1)
  • time::duration_fp_mul_negative: [missing] -> pass (J1)
  • time::duration_fp_mul_neginfinity: [missing] -> pass (J1)
  • time::duration_fp_mul_overflow: [missing] -> pass (J1)
  • time::duration_fp_mul_posinfinity: [missing] -> pass (J1)
  • [ui] tests/ui/derives/deriving-with-repr-packed-no-clone-suggestion.rs: [missing] -> pass (J3)
  • [ui] tests/ui/let-else/let-else-irrefutable-152938.rs: [missing] -> pass (J3)
  • [rustdoc-html] tests/rustdoc-html/primitive/reexport-fake_variadic.rs: [missing] -> pass (J4)

Additionally, 124 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 d933cf483edf1605142ac6899ff32536c0ad8b22 --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-tools: 51m 40s -> 1h 1m (+19.8%)
  2. pr-check-1: 28m 14s -> 33m 38s (+19.2%)
  3. aarch64-apple: 2h 46m -> 3h 16m (+18.0%)
  4. i686-gnu-2: 1h 30m -> 1h 46m (+17.4%)
  5. x86_64-gnu-aux: 2h 2m -> 2h 22m (+15.8%)
  6. arm-android: 1h 32m -> 1h 45m (+15.1%)
  7. x86_64-gnu-llvm-21-1: 1h 8m -> 1h 18m (+14.2%)
  8. dist-apple-various: 1h 47m -> 2h 3m (+14.1%)
  9. x86_64-rust-for-linux: 44m 58s -> 50m 46s (+12.9%)
  10. x86_64-gnu-llvm-21-2: 1h 31m -> 1h 42m (+12.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-timer
Copy link
Collaborator

Finished benchmarking commit (d933cf4): 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.1% [0.1%, 0.1%] 1
Regressions ❌
(secondary)
0.2% [0.1%, 0.3%] 6
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.8% [-0.8%, -0.7%] 2
All ❌✅ (primary) 0.1% [0.1%, 0.1%] 1

Max RSS (memory usage)

Results (secondary 6.2%)

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

Cycles

Results (secondary -1.6%)

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)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-1.6% [-1.6%, -1.6%] 1
All ❌✅ (primary) - - 0

Binary size

Results (primary -0.0%, secondary -0.1%)

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)
- - 0
Improvements ✅
(primary)
-0.0% [-0.1%, -0.0%] 19
Improvements ✅
(secondary)
-0.1% [-0.1%, -0.0%] 23
All ❌✅ (primary) -0.0% [-0.1%, -0.0%] 19

Bootstrap: 480.491s -> 481.183s (0.14%)
Artifact size: 395.02 MiB -> 394.90 MiB (-0.03%)

@rustbot rustbot added the perf-regression Performance regression. label Mar 4, 2026
@Zalathar
Copy link
Member Author

Zalathar commented Mar 4, 2026

@rust-timer
Copy link
Collaborator

Missing artifact for sha f01a365ddbf2b79236b4545d06d522d6c9fb0900 (https://ci-artifacts.rust-lang.org/rustc-builds/f01a365ddbf2b79236b4545d06d522d6c9fb0900/rustc-nightly-x86_64-unknown-linux-gnu.tar.xz); not built yet, try again later.

@Kobzol
Copy link
Member

Kobzol commented Mar 10, 2026

@rust-timer build f01a365

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (f01a365): comparison URL.

Overall result: ❌ regressions - no action needed

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
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (secondary -0.3%)

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.2% [6.2%, 6.2%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.6% [-4.1%, -3.1%] 2
All ❌✅ (primary) - - 0

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: 480.491s -> 480.412s (-0.02%)
Artifact size: 395.02 MiB -> 394.98 MiB (-0.01%)

@Kobzol
Copy link
Member

Kobzol commented Mar 10, 2026

@rust-timer build 7437730

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (7437730): comparison URL.

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

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

Max RSS (memory usage)

Results (secondary -0.2%)

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)
2.6% [2.6%, 2.6%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.1% [-3.1%, -3.1%] 1
All ❌✅ (primary) - - 0

Cycles

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

Binary size

Results (primary -0.0%, secondary -0.1%)

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)
- - 0
Improvements ✅
(primary)
-0.0% [-0.1%, -0.0%] 19
Improvements ✅
(secondary)
-0.1% [-0.1%, -0.0%] 22
All ❌✅ (primary) -0.0% [-0.1%, -0.0%] 19

Bootstrap: 480.491s -> 479.963s (-0.11%)
Artifact size: 395.02 MiB -> 394.90 MiB (-0.03%)

@Kobzol
Copy link
Member

Kobzol commented Mar 10, 2026

The deep-vector tiny regression was likely #153258, but it doesn't seem worth it to deal with that.

@rustbot label: +perf-regression-triaged

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

Labels

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-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.