diff --git a/triage/2026/2026-05-12.md b/triage/2026/2026-05-12.md new file mode 100644 index 000000000..3d2ef757d --- /dev/null +++ b/triage/2026/2026-05-12.md @@ -0,0 +1,144 @@ +# 2026-05-12 Triage Log + +This week saw a couple of PRs affecting the new trait solver, which is steadily moving forward, +in particular [#156139](https://github.com/rust-lang/rust/pull/156139) was a massive perf. win. +[#156185](https://github.com/rust-lang/rust/pull/156185) optimized visibility computation, resulting +in an up to 8% win on the `typenum` crate. + +Triage done by **@Kobzol**. +Revision range: [1d72d7e8..aa31d6d8](https://perf.rust-lang.org/?start=1d72d7e8136faaebad3a85eeed432e6ea1b2ffab&end=aa31d6d8020dcb7c6e6635648d1ca2bc18caf059&absolute=false&stat=instructions%3Au) + +**Summary**: + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:------:|:---------------:|:-----:| +| Regressions ❌
(primary) | 0.3% | [0.1%, 0.4%] | 62 | +| Regressions ❌
(secondary) | 0.5% | [0.1%, 1.5%] | 77 | +| Improvements ✅
(primary) | -1.7% | [-8.8%, -0.2%] | 18 | +| Improvements ✅
(secondary) | -13.6% | [-85.6%, -0.0%] | 34 | +| All ❌✅ (primary) | -0.2% | [-8.8%, 0.4%] | 80 | + + +2 Regressions, 2 Improvements, 5 Mixed; 4 of them in rollups +31 artifact comparisons made in total + +#### Regressions + +Lint unused pub items in binary crates [#149509](https://github.com/rust-lang/rust/pull/149509) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4ddd4538a881317c622ed674b08300b8fc8dabdd&end=0e5924a4a0b57f2c6bc8cac93f59281e68541a91&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:----:|:------------:|:-----:| +| Regressions ❌
(primary) | 0.3% | [0.1%, 0.4%] | 4 | +| Regressions ❌
(secondary) | 0.1% | [0.1%, 0.1%] | 1 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | - | - | 0 | +| All ❌✅ (primary) | 0.3% | [0.1%, 0.4%] | 4 | + +- The regression looks genuine, but it is very small. The compiler now runs a new allow-by-default lint, so that is expected. +- Marked as triaged. + +@rustbot label: +perf-regression-triaged + +-Zassumptions-on-binders [#155887](https://github.com/rust-lang/rust/pull/155887) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=aa31d6d8020dcb7c6e6635648d1ca2bc18caf059&end=29b7590130c83542a095cdf1323ed0f78eec2bb8&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | 0.2% | [0.1%, 0.2%] | 10 | +| Regressions ❌
(secondary) | 0.5% | [0.1%, 1.1%] | 25 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | -0.0% | [-0.0%, -0.0%] | 1 | +| All ❌✅ (primary) | 0.2% | [0.1%, 0.2%] | 10 | + +- Tiny regressions across the board, mostly in trait-heavy crates and the new trait solver. +- Not marking as triaged yet. + +#### Improvements + +Rollup of 12 pull requests [#156267](https://github.com/rust-lang/rust/pull/156267) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=0e5924a4a0b57f2c6bc8cac93f59281e68541a91&end=32bd660612bf1c61bdf290a3ec643c8538b8357d&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | - | - | 0 | +| Improvements ✅
(primary) | -0.3% | [-0.3%, -0.2%] | 8 | +| Improvements ✅
(secondary) | -0.2% | [-0.2%, -0.2%] | 2 | +| All ❌✅ (primary) | -0.3% | [-0.3%, -0.2%] | 8 | + + +resolve: Evaluate private visibilities eagerly in eff vis computation [#156185](https://github.com/rust-lang/rust/pull/156185) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d1961bebe091816d8ce9771f29ad471dda398f5d&end=99eed207b47aca1fec5c665531db8e948a92d0ca&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | - | - | 0 | +| Improvements ✅
(primary) | -2.5% | [-8.6%, -0.2%] | 11 | +| Improvements ✅
(secondary) | -1.8% | [-2.5%, -0.3%] | 13 | +| All ❌✅ (primary) | -2.5% | [-8.6%, -0.2%] | 11 | + + +#### Mixed + +Short-circuit `calculate_fallback_to_f32` when no float vars [#156139](https://github.com/rust-lang/rust/pull/156139) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=1d72d7e8136faaebad3a85eeed432e6ea1b2ffab&end=cb40c25f6aebb637163d26bf76a680ed6e5d1eda&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:------:|:---------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | 0.1% | [0.0%, 0.1%] | 4 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | -21.0% | [-87.6%, -0.0%] | 18 | +| All ❌✅ (primary) | - | - | 0 | + +- Massive wins in the new trait solver. +- Already marked as triaged. + +Rollup of 7 pull requests [#156190](https://github.com/rust-lang/rust/pull/156190) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=740679e1f5554a3c1695317e084809e3fceb9825&end=e95e73209faf6ead2bc5c7636e45e589a751b79b&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | 0.2% | [0.1%, 0.3%] | 3 | +| Regressions ❌
(secondary) | 0.5% | [0.2%, 0.7%] | 25 | +| Improvements ✅
(primary) | -0.3% | [-0.3%, -0.3%] | 1 | +| Improvements ✅
(secondary) | -1.2% | [-1.8%, -0.5%] | 2 | +| All ❌✅ (primary) | 0.1% | [-0.3%, 0.3%] | 4 | + +- Regression caused by [#156172](https://github.com/rust-lang/rust/pull/156172), discussion is continuing there. +- Marked as triaged. + +Rollup of 15 pull requests [#156217](https://github.com/rust-lang/rust/pull/156217) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=e95e73209faf6ead2bc5c7636e45e589a751b79b&end=ba1a955819d72439dc59d5f73ad7a6a01e3fcdfe&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | 0.6% | [0.1%, 1.0%] | 10 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | -0.0% | [-0.1%, -0.0%] | 3 | +| All ❌✅ (primary) | - | - | 0 | + +- The wg-grammar regression was caused by [#155808](https://github.com/rust-lang/rust/pull/155808). +- Marked as triaged. + +Improve caching by introducing `TypingMode::ErasedNotCoherence` [#155443](https://github.com/rust-lang/rust/pull/155443) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ba1a955819d72439dc59d5f73ad7a6a01e3fcdfe&end=365c0e1d7a614ca94cb48431dcd2bc6d3b645db1&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:---------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | 2.5% | [0.0%, 16.6%] | 18 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | -9.0% | [-26.2%, -0.1%] | 11 | +| All ❌✅ (primary) | - | - | 0 | + +- This only really affects the new solver, where it is a big win for `wg-grammar`, though also a big regression for `deeply-nested-multi`. +- Marked as triaged. + +Rollup of 4 pull requests [#156324](https://github.com/rust-lang/rust/pull/156324) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=f2b291d902bfde7d7f209fc3a64908134bcef201&end=8068e2fc9afa8c888336b12db01987be768785f9&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | 0.3% | [0.3%, 0.3%] | 1 | +| Regressions ❌
(secondary) | 0.3% | [0.2%, 0.3%] | 3 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | -1.5% | [-1.5%, -1.5%] | 1 | +| All ❌✅ (primary) | 0.3% | [0.3%, 0.3%] | 1 | + +- Tiny regression on hyper `doc` benchmark and the `bitmaps` benchmark with the new trait solver, overall a wash. I don't think it's worth digging further. +- Marked as triaged.