diff --git a/triage/2026/2026-07-21.md b/triage/2026/2026-07-21.md new file mode 100644 index 000000000..d46c6533e --- /dev/null +++ b/triage/2026/2026-07-21.md @@ -0,0 +1,172 @@ +# 2026-07-21 Triage Log + +The two most notable changes this week were [#159115](https://github.com/rust-lang/rust/pull/159115), +which resulted in pretty nice instruction count wins for full incremental builds on several benchmarks, +and [#159091](https://github.com/rust-lang/rust/pull/159091), which enabled PGO for rustdoc, which +makes it ~3-4% faster across the board. + +There were two large rollups with tiny performance regressions, which made it difficult to find +the offending PRs. + +Triage done by **@Kobzol**. +Revision range: [5503df87..d527bc9b](https://perf.rust-lang.org/?start=5503df87342a73d0c29126a7e08dc9c1255c46ad&end=d527bc9bfa297ca7fd7f5ae93781eeec42073170&absolute=false&stat=instructions%3Au) + +**Summary**: + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | 0.4% | [0.2%, 1.0%] | 40 | +| Regressions ❌
(secondary) | 0.7% | [0.2%, 4.6%] | 69 | +| Improvements ✅
(primary) | -2.0% | [-6.2%, -0.2%] | 136 | +| Improvements ✅
(secondary) | -2.6% | [-8.4%, -0.2%] | 119 | +| All ❌✅ (primary) | -1.4% | [-6.2%, 1.0%] | 176 | + + +2 Regressions, 3 Improvements, 6 Mixed; 4 of them in rollups +34 artifact comparisons made in total + +#### Regressions + +Rollup of 13 pull requests [#159246](https://github.com/rust-lang/rust/pull/159246) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=225e91c03da22cd4b9792b83c1cfc97967101614&end=daf2e5e18b3abc4311d9da3d96fd64138f43d508&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | 0.3% | [0.3%, 0.3%] | 3 | +| Regressions ❌
(secondary) | 0.3% | [0.2%, 0.5%] | 20 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | -0.6% | [-0.6%, -0.6%] | 1 | +| All ❌✅ (primary) | 0.3% | [0.3%, 0.3%] | 3 | + +- The regressions are tiny, but across the board. +- Started several performance runs. +- Not marking as triaged yet. + +Shrink `ast::Expr64` [#158720](https://github.com/rust-lang/rust/pull/158720) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=38a0576951fb5f7209c892b030f40ac166ae86b4&end=470556c8c1c21a736c90deea5c70d093ffa4e762&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:----:|:------------:|:-----:| +| Regressions ❌
(primary) | 0.4% | [0.3%, 0.6%] | 3 | +| Regressions ❌
(secondary) | 0.6% | [0.3%, 1.3%] | 25 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | - | - | 0 | +| All ❌✅ (primary) | 0.4% | [0.3%, 0.6%] | 3 | + +- This change resulted in instruction count regressions, but cycle count and wall-time wins. +- Already marked as triaged. + +#### Improvements + +Rollup of 3 pull requests [#159367](https://github.com/rust-lang/rust/pull/159367) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=ab4bbeb07dc7dc2d30e9f83d3e0326df981e0ee2&end=d62fb1c8a007f6967376a52da8315ae51b64a70c&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | - | - | 0 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | -1.9% | [-2.5%, -1.5%] | 13 | +| All ❌✅ (primary) | - | - | 0 | + + +Overhaul `CfgTrace`/`CfgAttrTrace` handling [#159266](https://github.com/rust-lang/rust/pull/159266) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4a9d5368df6450bbd2fc8dde4508c3e5d83bb19d&end=656ccbe796ff98def9b555c118e1620c5389e3b2&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | - | - | 0 | +| Improvements ✅
(primary) | -0.4% | [-0.6%, -0.2%] | 11 | +| Improvements ✅
(secondary) | -0.2% | [-0.2%, -0.2%] | 1 | +| All ❌✅ (primary) | -0.4% | [-0.6%, -0.2%] | 11 | + + +Get rid of `StructurallyRelateAliases` [#158731](https://github.com/rust-lang/rust/pull/158731) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=14ead7d3d509f50efe9afb84673e65885dfd4d07&end=9e71b3bc704eea68d39bd0f6a46703c7d22f5d3b&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | - | - | 0 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | -1.4% | [-4.7%, -0.2%] | 24 | +| All ❌✅ (primary) | - | - | 0 | + + +#### Mixed + +Eagerly check for ambiguity in macro parsing [#158976](https://github.com/rust-lang/rust/pull/158976) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=da80ed0708a09dc096c184345d6eb42cbcd50a1e&end=2f5253f0087ee60faab7dbe7c9002163c605ac7e&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | 0.3% | [0.2%, 0.4%] | 10 | +| Improvements ✅
(primary) | -0.9% | [-2.3%, -0.3%] | 29 | +| Improvements ✅
(secondary) | -0.6% | [-0.9%, -0.4%] | 5 | +| All ❌✅ (primary) | -0.9% | [-2.3%, -0.3%] | 29 | + +- More wins than regressions. +- Already marked as triaged. + +Rollup of 22 pull requests [#159293](https://github.com/rust-lang/rust/pull/159293) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2f5253f0087ee60faab7dbe7c9002163c605ac7e&end=38a0576951fb5f7209c892b030f40ac166ae86b4&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | 0.5% | [0.2%, 0.8%] | 13 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | -0.3% | [-0.3%, -0.2%] | 2 | +| All ❌✅ (primary) | - | - | 0 | + +- There seems to be a very tiny regression across the board, which is a bit larger (but still small) on some secondary benchmarks. +- The `wg-grammar` tiny regression was likely caused by [#158993](https://github.com/rust-lang/rust/pull/158993). +- Marked as triaged. + +Rollup of 2 pull requests [#159350](https://github.com/rust-lang/rust/pull/159350) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=2118366bbfe2e57ec0e8417ea270833e9f013640&end=d0babd8b6b05ef9bb65d42f928cef4129d64cf65&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | 0.3% | [0.2%, 0.5%] | 7 | +| Regressions ❌
(secondary) | 0.3% | [0.2%, 0.5%] | 26 | +| Improvements ✅
(primary) | -0.8% | [-0.9%, -0.8%] | 4 | +| Improvements ✅
(secondary) | -2.9% | [-5.1%, -0.7%] | 2 | +| All ❌✅ (primary) | -0.1% | [-0.9%, 0.5%] | 11 | + +- Small regression caused by standard library dependency upgrades in [#159345](https://github.com/rust-lang/rust/pull/159345). +- Already marked as triaged. + +Move fast paths around to gain a bit of new-solver perf [#158249](https://github.com/rust-lang/rust/pull/158249) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=d62fb1c8a007f6967376a52da8315ae51b64a70c&end=a6050b7ea848e25289bf097c606e0611c58ef4f3&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | 1.2% | [0.2%, 2.2%] | 11 | +| Improvements ✅
(primary) | - | - | 0 | +| Improvements ✅
(secondary) | -5.1% | [-8.4%, -1.5%] | 6 | +| All ❌✅ (primary) | - | - | 0 | + +- Only affects the next trait solver. Some benchmarks regressed, but there are larger wins. +- Marked as triaged. + +Use PGO for rustdoc [#159091](https://github.com/rust-lang/rust/pull/159091) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=421875f8d2bbb9a9a47db179092a3266b87106d4&end=b6839f4d0e2bd63b960bbff8619c6fdea27d81e5&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | - | - | 0 | +| Regressions ❌
(secondary) | 4.5% | [4.5%, 4.5%] | 1 | +| Improvements ✅
(primary) | -4.1% | [-6.3%, -1.6%] | 20 | +| Improvements ✅
(secondary) | -5.1% | [-8.1%, -2.0%] | 23 | +| All ❌✅ (primary) | -4.1% | [-6.3%, -1.6%] | 20 | + +- Many wins on `doc` benchmarks, expectedly, as this PR enabled PGO for rustdoc. +- Only one regression on a secondary benchmark. +- Marked as triaged. + +perf: dep_graph: deduplicate task reads with an epoch-filtered index recorder [#159115](https://github.com/rust-lang/rust/pull/159115) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c904ba32e22c9d6fd31140b4283c5cc6c6b2fb5c&end=c7d7da3428c0e8b261e1ce1687e7228cf053cc62&stat=instructions:u) + +| (instructions:u) | mean | range | count | +|:----------------------------------:|:-----:|:--------------:|:-----:| +| Regressions ❌
(primary) | 0.3% | [0.1%, 0.5%] | 11 | +| Regressions ❌
(secondary) | 0.2% | [0.2%, 0.3%] | 4 | +| Improvements ✅
(primary) | -1.8% | [-6.4%, -0.3%] | 101 | +| Improvements ✅
(secondary) | -1.5% | [-4.9%, -0.1%] | 96 | +| All ❌✅ (primary) | -1.6% | [-6.4%, 0.5%] | 112 | + +- A lot of big wins, and only a few tiny regressions. +- Marked as triaged.