# 2025-04-22 Triage Log

Mostly positive week. Most of the improvements come from a revert of a regression from a few weeks ago, but we also get nice wins from re-using Sized  fast-path, coming from Sized hierarchy implementation work.

Triage done by **@panstromek**.
Revision range: [15f58c46..8f2819b0](https://perf.rust-lang.org/?start=15f58c46da79399961a09db0c650a2f90f442e6b&end=8f2819b0e3428d0aee05fa60e91e0211c2aea053&absolute=false&stat=instructions%3Au)

**Summary**:

| (instructions:u)                   | mean  | range           | count |
|:----------------------------------:|:-----:|:---------------:|:-----:|
| Regressions ❌ <br /> (primary)    | 1.3%  | [0.4%, 2.1%]    | 7     |
| Regressions ❌ <br /> (secondary)  | -     | -               | 0     |
| Improvements ✅ <br /> (primary)   | -1.0% | [-12.9%, -0.1%] | 144   |
| Improvements ✅ <br /> (secondary) | -2.2% | [-12.3%, -0.2%] | 111   |
| All ❌✅ (primary)                 | -0.9% | [-12.9%, 2.1%]  | 151   |


0 Regressions, 4 Improvements, 2 Mixed; 3 of them in rollups
35 artifact comparisons made in total

#### Regressions



#### Improvements

re-use `Sized` fast-path [#139577](https://github.com/rust-lang/rust/pull/139577) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=990039ec53d5bffe0ec77391e00f0e5be05924e8&end=2da29dbe8fe23df1c7c4ab1d8740ca3c32b15526&stat=instructions:u)

| (instructions:u)                   | mean  | range           | count |
|:----------------------------------:|:-----:|:---------------:|:-----:|
| Regressions ❌ <br /> (primary)    | -     | -               | 0     |
| Regressions ❌ <br /> (secondary)  | -     | -               | 0     |
| Improvements ✅ <br /> (primary)   | -0.6% | [-1.2%, -0.3%]  | 55    |
| Improvements ✅ <br /> (secondary) | -2.1% | [-12.2%, -0.4%] | 44    |
| All ❌✅ (primary)                 | -0.6% | [-1.2%, -0.3%]  | 55    |


Rollup of 17 pull requests [#139845](https://github.com/rust-lang/rust/pull/139845) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=58c2dd9a54a325f4ce96f70332ceb07a3b58f0e5&end=f433fa46b0fd27d35219357ad75f54d294081bc4&stat=instructions:u)

| (instructions:u)                   | mean  | range          | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary)    | -     | -              | 0     |
| Regressions ❌ <br /> (secondary)  | -     | -              | 0     |
| Improvements ✅ <br /> (primary)   | -     | -              | 0     |
| Improvements ✅ <br /> (secondary) | -1.1% | [-1.7%, -0.2%] | 9     |
| All ❌✅ (primary)                 | -     | -              | 0     |

Unexpected improvement on `many-assoc-items` stress test. **@Zalathar** identified the cause as [#139669](https://github.com/rust-lang/rust/pull/139669).


Revert "Deduplicate template parameter creation" [#139878](https://github.com/rust-lang/rust/pull/139878) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=38c560ae681d5c0d3fd615eaedc537a282fb1086&end=cacb9eed381ed19ba936fc019d63d9b9e694007e&stat=instructions:u)

| (instructions:u)                   | mean  | range           | count |
|:----------------------------------:|:-----:|:---------------:|:-----:|
| Regressions ❌ <br /> (primary)    | -     | -               | 0     |
| Regressions ❌ <br /> (secondary)  | -     | -               | 0     |
| Improvements ✅ <br /> (primary)   | -5.8% | [-12.9%, -0.6%] | 11    |
| Improvements ✅ <br /> (secondary) | -2.9% | [-8.7%, -0.3%]  | 34    |
| All ❌✅ (primary)                 | -5.8% | [-12.9%, -0.6%] | 11    |

Reverts previously triaged regression from roughly a month ago.

Rollup of 8 pull requests [#140043](https://github.com/rust-lang/rust/pull/140043) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=90fd16eb5be9255006c95e8af12a0d43854dc1a9&end=49e5e4e3a5610c240a717cb99003a5d5d3356679&stat=instructions:u)

| (instructions:u)                   | mean  | range          | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary)    | -     | -              | 0     |
| Regressions ❌ <br /> (secondary)  | -     | -              | 0     |
| Improvements ✅ <br /> (primary)   | -0.6% | [-1.2%, -0.3%] | 19    |
| Improvements ✅ <br /> (secondary) | -     | -              | 0     |
| All ❌✅ (primary)                 | -0.6% | [-1.2%, -0.3%] | 19    |

All improvements are on bitmaps (both 3.1 and updated 3.2.1 versions). Looks a bit unexpected. Could be a type system fix in [#139762](https://github.com/rust-lang/rust/pull/139762), which is the only  change that seems relevant.

#### Mixed

Remove `Nonterminal` and `TokenKind::Interpolated` [#124141](https://github.com/rust-lang/rust/pull/124141) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=15f58c46da79399961a09db0c650a2f90f442e6b&end=f836ae4e663b6e8938096b8559e094d18361be55&stat=instructions:u)

| (instructions:u)                   | mean  | range          | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary)    | 1.0%  | [0.3%, 2.1%]   | 11    |
| Regressions ❌ <br /> (secondary)  | -     | -              | 0     |
| Improvements ✅ <br /> (primary)   | -0.5% | [-1.4%, -0.2%] | 48    |
| Improvements ✅ <br /> (secondary) | -1.0% | [-2.4%, -0.3%] | 36    |
| All ❌✅ (primary)                 | -0.2% | [-1.4%, 2.1%]  | 59    |

Few real regressions on hyper, but mostly on small incremental runs. Outweighed by a lot of improvements, already marked as triaged by **@mark-simulacrum**.

Rollup of 8 pull requests [#139992](https://github.com/rust-lang/rust/pull/139992) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=a15cce2690e8fab72422515c9dc02c6fbc506733&end=1f76d219c906f0112bb1872f33aa977164c53fa6&stat=instructions:u)

| (instructions:u)                   | mean  | range          | count |
|:----------------------------------:|:-----:|:--------------:|:-----:|
| Regressions ❌ <br /> (primary)    | 0.5%  | [0.5%, 0.5%]   | 1     |
| Regressions ❌ <br /> (secondary)  | -     | -              | 0     |
| Improvements ✅ <br /> (primary)   | -0.5% | [-0.6%, -0.5%] | 2     |
| Improvements ✅ <br /> (secondary) | -0.5% | [-0.5%, -0.5%] | 1     |
| All ❌✅ (primary)                 | -0.2% | [-0.6%, 0.5%]  | 3     |

Improvements outweigh regressions.

Somewhat small regression in debug build of Cargo looks real - the benchmark is a bit noisy and it partially recovered in next PR but it hasn't fully recovered since then.

This is also a large bootstrap win, which seems a bit unexpected. Most of the change is in the frontend.

Almost no PR in this rollup touches runtime code, so I suspect this is either a libc update or the drop handling fix from [#139977](https://github.com/rust-lang/rust/pull/139977), because  adds code in a generic wrapper around intrinsic.
