Skip to content

Rollup of 2 pull requests - #165320

Merged
rust-bors[bot] merged 13 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-fOuOPa4
Nov 2, 2026
Merged

rust-bors[bot] merged 13 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-fOuOPa4

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

panstromek and others added 13 commits October 29, 2026 15:33
They have the same signature now, so we can unify them. The implementation for tuple is selected based on whether the concatenated string contains field names.
… size

Co-authored-by: Jules Bertholet <jules.bertholet@gmail.com>
Co-authored-by: Jules Bertholet <jules.bertholet@gmail.com>
We still use `ThinVec<I::GenericArg>` in `GoalStalledOn`, where the
narrowness of the type is important. But using `Vec<I::GenericArg>`
elsewhere is a perf win for `CanonicalizerState::variables`, which has
`clone_from` called on it a lot. (`Vec::clone_from` is better optimized
than `ThinVec::clone_from`.)
Returning requires `take`, which means the next user of
`CanonicalizerState` has to allocate a new vec. `finalize` has two
callers, but only one of them needs `variables`. This commit makes it so
that single caller just clones the vec out of `CanonicalizerState`
itself.
Currently, `InferCtxt` has a `CanonicalizerState` that gets reused by
each canonicalizer. This gives a good amount of reuse, but we can
increase it by moving the state to `GlobalCaches`. And we actually need
a vector of `CanonicalizerState`, though it can only get multiple
elements if we are using multiple threads.
`compute_query_response_instantiation_values_in_universe` computes an
`opt_values` vector but then only sometimes consults the contents. This
commit makes it lazy for a small perf win.
`CanonicalVarValues::instantiate` builds a `var_values` using a closure
to generate each element. That closure is passed the under-construction
`var_values`, which is unusual. This commit renames the parameters in
the closures to `prev_var_values` to make this unusual behaviour more
obvious.

The commit looks bigger than it really is because of formatting changes.
…r=nnethercote

More derive(Debug) cleanups for structs

This removes duplication from the debug helpers and unifies tuples with structs.

More details in individual commits.

I think this is makes the code simpler, but it's a bit of a judgement call.

r? nnethercote
…zelmann

New solver opts for diesel (part 3)

A sequel to rust-lang#163981 and rust-lang#164234. These ones mostly relate to allocations. Details in individual commits.

Local measurements:
```
solver         icounts (B)
------         -----------
old            36.4
new (orig)     44.5 (1.22x)
new (this PR)  42.4 (1.16x)
```
Also some small improvements on a range of other benchmarks.

r? @jdonszelmann
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Nov 2, 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-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Nov 2, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member Author

@bors r+ p=5 force

@rust-bors

rust-bors Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

📌 Commit c96d25f has been approved by JonathanBrouwer

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 Nov 2, 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 Nov 2, 2026
@rust-bors

rust-bors Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 21m 45s
Pushing 4c46afa to main...

@rust-bors
rust-bors Bot merged commit 4c46afa into rust-lang:main Nov 2, 2026
15 checks passed
@rustbot rustbot added this to the 1.101.0 milestone Nov 2, 2026
@github-actions

github-actions Bot commented Nov 2, 2026

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 2a01bd6 (parent) -> 4c46afa (this PR)

Test differences

Show 30 test diffs

30 doctest diffs were found. These are ignored, as they are noisy.

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 4c46afa63688fb473618f9b3553d70b0c15a88eb --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. test-x86_64-msvc-ext1: 1h 22m -> 2h 25m (+76.8%)
  2. test-x86_64-gnu-miri: 54m 26s -> 1h 32m (+69.0%)
  3. test-i686-gnu-nopt-1: 1h 32m -> 2h 32m (+64.9%)
  4. test-x86_64-msvc-1: 1h 51m -> 2h 50m (+52.2%)
  5. test-x86_64-gnu-next-trait-solver-polonius: 47m 20s -> 1h 7m (+43.2%)
  6. test-x86_64-rust-for-linux: 43m 51s -> 1h 2m (+42.1%)
  7. test-x86_64-gnu: 2h 27m -> 1h 31m (-38.1%)
  8. test-x86_64-mingw-1: 2h 17m -> 3h 3m (+33.6%)
  9. test-x86_64-msvc-2: 1h 57m -> 2h 36m (+32.8%)
  10. test-armhf-gnu: 1h 17m -> 1h 43m (+32.8%)
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 Nov 2, 2026

Copy link
Copy Markdown
Contributor

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#165140 More derive(Debug) cleanups for structs d4ef51e659fb978afc35e97514b76a4c1ad0daf0
(link)
#165160 New solver opts for diesel (part 3) e77e2c96fb4785538f578cdc3f43de46a613a514
(link)

parent commit: 2a01bd6f8b

In the case of a perf regression, run the following command with the SHAs of each PR you suspect might be the cause: @rust-timer triage $SHA $SHA $SHA..., or run @rust-timer triage all to benchmark all rollup members.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (4c46afa): comparison URL.

Overall result: ✅ 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
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.5% [-0.5%, -0.4%] 4
Improvements ✅
(secondary)
-1.9% [-4.2%, -0.5%] 28
All ❌✅ (primary) -0.5% [-0.5%, -0.4%] 4

Max RSS (memory usage)

Results (primary -1.1%, secondary 2.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)
6.5% [6.5%, 6.5%] 1
Improvements ✅
(primary)
-1.1% [-1.1%, -1.1%] 1
Improvements ✅
(secondary)
-1.2% [-1.2%, -1.2%] 1
All ❌✅ (primary) -1.1% [-1.1%, -1.1%] 1

Cycles

Results (primary 3.0%, 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)
3.0% [3.0%, 3.0%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.0% [-4.3%, -1.3%] 12
All ❌✅ (primary) 3.0% [3.0%, 3.0%] 1

Binary size

Results (primary -0.4%, 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)
- - 0
Improvements ✅
(primary)
-0.4% [-0.4%, -0.4%] 8
Improvements ✅
(secondary)
-0.3% [-0.4%, -0.0%] 43
All ❌✅ (primary) -0.4% [-0.4%, -0.4%] 8

Bootstrap: 487.539s -> 488.585s (0.21%)
Artifact size: 406.62 MiB -> 406.53 MiB (-0.02%)

@JonathanBrouwer

Copy link
Copy Markdown
Member Author

@rust-timer triage all

@rust-timer

rust-timer commented Nov 2, 2026 •

Copy link
Copy Markdown
Collaborator
Running triage with 10 benchmarks

Triage only executes the benchmarks on rollup members, that were changed significantly on the rollup.
For this rollup, these benchmarks are:

  • bitmaps-3.2.1-new-solver
  • deeply-nested-multi-new-solver
  • diesel-2.2.10-new-solver
  • eza-0.21.2
  • html5ever-0.31.0-new-solver
  • nalgebra-0.33.0-new-solver
  • serde-1.0.219-new-solver
  • syn-2.0.101-new-solver
  • typenum-1.18.0-new-solver
  • wg-grammar-new-solver

#165140 d4ef51e More derive(Debug) cleanups for structs

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

Max RSS (memory usage)

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

Cycles

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

Binary size

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

#165160 e77e2c9 New solver opts for diesel (part 3)

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
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-1.9% [-4.2%, -0.5%] 28
All ❌✅ (primary) - - 0

Max RSS (memory usage)

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

Cycles

Results (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)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.2% [-4.2%, -2.1%] 11
All ❌✅ (primary) - - 0

Binary size

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

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. 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-rust-analyzer Relevant to the rust-analyzer 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.

5 participants