Skip to content

Conversation

@Zalathar
Copy link
Member

@Zalathar Zalathar commented Nov 13, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

lolbinarycat and others added 20 commits October 14, 2025 14:36
`tidy` will already install it (when needed) due to it being in `package.json`
This is for people rebuilding stdlib directly from stage 0
with the full toolchain from rust-src rustup component.
The toolchain itself should have sufficient LLVM tools,
so CMake and LLVM are not required when `build.local-rebuild = true`
…fix, r=GuillaumeGomez

rustdoc: don't ignore path distance for doc aliases

Ran into a bit of an issue due to the overloading of space (it needs to be a metachar for most searches, but not for doc aliases that have space in them).  Not sure if I need to also need to account for other whitespace chars.

<img width="1778" height="494" alt="screenshot" src="https://github.com/user-attachments/assets/041e76f1-3b29-4de5-a72b-1431021fb676" />

fixes rust-lang#146214

r? `@GuillaumeGomez`
…r=nnethercote

Fix ICE caused by invalid spans for shrink_file

Fixes rust-lang#148732

There are two issues in this function:
1. the original issue is caused by a typo error, which is fixed in the first commit
2. another different ice(Patch span `7..7` is beyond the end of buffer `0`) will be reported after fixing the first one, is caused by spans cross file boundaries due to macro expansion. It is fixed in the second commit.

r? `@nnethercote`

edited: also fixes rust-lang#148684, added a new testcase for it in the last commit.
fix rtsan_nonblocking_async lint closure ICE

Fixes rust-lang#148750, which i introduced in rust-lang#147935.
I also added the bug report to the tests.
…eLapkin

add a test for combining RPIT with explicit tail calls

tracking issue: rust-lang#112788
fixes rust-lang#139305

Combining return position impl trait (RPIT) with guaranteed tail calls does not currently work, but at least it does not ICE any more.

Using RPIT probably should work, see also rust-lang#144953.

The snippet in the issue is not valid for a variety of reasons, and based on the assert that got triggered the ICE was just any `-> impl Trait` at all, so I've made a minimal example using RPIT.

r? `@WaffleLapkin`
…ukang

fix: Do not ICE when missing match arm with ill-formed subty is met

Fixes rust-lang#148192

The ICE comes from the following line, calling `normalize_erasing_regions` to a projection type whose trait bound is not met:
https://github.com/rust-lang/rust/blob/2fcbda6c1a70606bdb09857e01d01fc6229da712/compiler/rustc_pattern_analysis/src/rustc.rs#L185-L194

The above function is called while trying to lint missing match arms, or scrutinize ctors of missing(not necessary error) match arms.

So, the following code can trigger ICEs.
```rust
trait WhereTrait {
    type Type;
}

fn foo(e: Enum) {
    match e {
        Enum::Map(_) => (), // ICE, while trying to lint missing arms
    }

    if let Enum::Map(_) = e {} // ICE, while trying to scrutinize missing ctors (even worse)
}

enum Enum {
    Map(()),
    Map2(<() as WhereTrait>::Type),
}
```

This ICE won't be triggered with the following code, as this is filtered out before `check_match` as the existence of ill-formed type inside the variant marks the body as tainted by error in `hir_typeck`, but for the above code, the `hir_typeck` complains nothing because everything it sees is locally correct.

```rust
fn foo(e: Enum) {
    match e {
        Enum::Map2(_) => (), // No ICE
    }
}
```

I've considered visiting and wf checking for the match scrutinee before entering `check_match`, but that might regress the perf and I think just emitting delayed bug would enough as the normalization failure would be originated by other errors like ill-formdness.
…tall, r=Kobzol,GuillaumeGomez

Remove explicit install of `eslint` inside of `tidy`'s Dockerfile

`tidy` will already install it (when needed) due to it being in `package.json`

With this change, we don't have the version of `eslint` specific in two different places :)

(this was added in rust-lang#141705 , before `tidy` gained the ability to run `npm install`, and is not needed anymore)
bootstrap: dont require cmake if local-rebuild is enabled

This is for people rebuilding stdlib directly from stage 0 with the full toolchain from rust-src rustup component. The toolchain itself should have sufficient LLVM tools, so CMake and LLVM are not required when `build.local-rebuild = true`

Fixes rust-lang#148835

r? Kobzol
@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-rustdoc-search Area: Rustdoc's search feature A-testsuite Area: The testsuite used to check the correctness of rustc F-explicit_tail_calls `#![feature(explicit_tail_calls)]` S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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-infra Relevant to the infrastructure 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. labels Nov 13, 2025
@rustbot rustbot added T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. rollup A PR which is a rollup labels Nov 13, 2025
@Zalathar
Copy link
Member Author

Rollup of everything.

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Nov 13, 2025

📌 Commit 314a6cd has been approved by Zalathar

It is now in the queue for this repository.

@bors bors 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 Nov 13, 2025
@bors
Copy link
Collaborator

bors commented Nov 13, 2025

⌛ Testing commit 314a6cd with merge 5dbf406...

@bors
Copy link
Collaborator

bors commented Nov 13, 2025

☀️ Test successful - checks-actions
Approved by: Zalathar
Pushing 5dbf406 to main...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Nov 13, 2025
@bors bors merged commit 5dbf406 into rust-lang:main Nov 13, 2025
12 checks passed
@rustbot rustbot added this to the 1.93.0 milestone Nov 13, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#147701 rustdoc: don't ignore path distance for doc aliases 4d37faede3dc9b0bc1049734c8f7b34f944fdf5a (link)
#148735 Fix ICE caused by invalid spans for shrink_file 6e042d25a2577c2fdeb6854cf7b93955d69e265f (link)
#148839 fix rtsan_nonblocking_async lint closure ICE c41f934b242a9044218eaf441bb7ea2f8298eb27 (link)
#148846 add a test for combining RPIT with explicit tail calls 3475c08a8c73b50b0f7a05e8ceb522bca165185d (link)
#148872 fix: Do not ICE when missing match arm with ill-formed subt… 305492bcdc9aa026b67e6092d7bc5138fbfe26ec (link)
#148880 Remove explicit install of eslint inside of tidy's Dock… ad7b693151881d2d46b455269481b58ab0805e8d (link)
#148883 bootstrap: dont require cmake if local-rebuild is enabled 91365fdf4ade53064d56db484de8e3de78ee457e (link)

previous master: 503dce33e2

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

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 503dce3 (parent) -> 5dbf406 (this PR)

Test differences

Show 15 test diffs

Stage 1

  • [rustdoc-js] tests/rustdoc-js/alias-path-distance-146214.rs: [missing] -> pass (J1)
  • [rustdoc-js] tests/rustdoc-js/alias-rank-lower-140968.rs: [missing] -> pass (J1)
  • [ui] tests/ui/delegation/ice-line-bounds-issue-148732.rs: [missing] -> pass (J1)
  • [ui] tests/ui/explicit-tail-calls/rpit.rs: [missing] -> pass (J1)
  • [ui] tests/ui/pattern/missing-ctor-with-ill-formed-inner-ty-issue-148192.rs: [missing] -> pass (J1)
  • [ui] tests/ui/structs/ice-line-bounds-issue-148684.rs: [missing] -> pass (J1)

Stage 2

  • [ui] tests/ui/delegation/ice-line-bounds-issue-148732.rs: [missing] -> pass (J0)
  • [ui] tests/ui/explicit-tail-calls/rpit.rs: [missing] -> pass (J0)
  • [ui] tests/ui/pattern/missing-ctor-with-ill-formed-inner-ty-issue-148192.rs: [missing] -> pass (J0)
  • [ui] tests/ui/structs/ice-line-bounds-issue-148684.rs: [missing] -> pass (J0)
  • [rustdoc-js] tests/rustdoc-js/alias-path-distance-146214.rs: [missing] -> pass (J2)
  • [rustdoc-js] tests/rustdoc-js/alias-rank-lower-140968.rs: [missing] -> pass (J2)

Additionally, 3 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 5dbf4069dc98bbbca98dd600a65f50c258fbfd56 --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. aarch64-apple: 7106.3s -> 9147.8s (+28.7%)
  2. x86_64-gnu-stable: 6901.8s -> 7882.2s (+14.2%)
  3. x86_64-gnu-llvm-20: 2808.4s -> 2453.9s (-12.6%)
  4. aarch64-gnu-llvm-20-2: 2353.3s -> 2598.8s (+10.4%)
  5. x86_64-gnu-nopt: 7592.7s -> 6824.1s (-10.1%)
  6. dist-i686-msvc: 8359.0s -> 7629.5s (-8.7%)
  7. x86_64-mingw-1: 10556.5s -> 9669.6s (-8.4%)
  8. dist-arm-linux-musl: 6085.8s -> 5583.8s (-8.2%)
  9. dist-aarch64-msvc: 5458.8s -> 5899.6s (+8.1%)
  10. x86_64-rust-for-linux: 3146.5s -> 2896.8s (-7.9%)
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 (5dbf406): 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)
3.0% [3.0%, 3.0%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 3.0% [3.0%, 3.0%] 1

Max RSS (memory usage)

Results (secondary 3.0%)

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

Cycles

Results (primary 4.8%)

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

mean range count
Regressions ❌
(primary)
4.8% [3.2%, 7.9%] 3
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 4.8% [3.2%, 7.9%] 3

Binary size

Results (primary 1.1%)

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

Bootstrap: 473.309s -> 474.258s (0.20%)
Artifact size: 388.34 MiB -> 388.39 MiB (0.01%)

@rustbot rustbot added the perf-regression Performance regression. label Nov 13, 2025
@Zalathar
Copy link
Member Author

Looks like bimodal noise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-rustdoc-search Area: Rustdoc's search feature A-testsuite Area: The testsuite used to check the correctness of rustc F-explicit_tail_calls `#![feature(explicit_tail_calls)]` merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. 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-infra Relevant to the infrastructure 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.