|
| 1 | +# 2026-08-24 Triage Log |
| 2 | + |
| 3 | +A busy week, with a continued stream of improvements to the next trait solver |
| 4 | +and next borrow check implementations. Other than those changes, the week was |
| 5 | +pretty quiet for performance. |
| 6 | + |
| 7 | +Triage done by **@simulacrum**. |
| 8 | +Revision range: [8fa1c96c..9a4ad59a](https://perf.rust-lang.org/?start=8fa1c96cfd489e4c27654c144ae871ce2c4db6c6&end=9a4ad59ae3073b013cd62f53f8349ddc61a012e8&absolute=false&stat=instructions%3Au) |
| 9 | + |
| 10 | +**Summary**: |
| 11 | + |
| 12 | +| (instructions:u) | mean | range | count | |
| 13 | +|:----------------------------------:|:-----:|:---------------:|:-----:| |
| 14 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.2%, 1.5%] | 120 | |
| 15 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.1%, 1.7%] | 162 | |
| 16 | +| Improvements ✅ <br /> (primary) | -0.3% | [-0.3%, -0.3%] | 1 | |
| 17 | +| Improvements ✅ <br /> (secondary) | -3.2% | [-11.8%, -0.2%] | 36 | |
| 18 | +| All ❌✅ (primary) | 0.5% | [-0.3%, 1.5%] | 121 | |
| 19 | + |
| 20 | + |
| 21 | +2 Regressions, 4 Improvements, 2 Mixed; 2 of them in rollups |
| 22 | +28 artifact comparisons made in total |
| 23 | + |
| 24 | +#### Regressions |
| 25 | + |
| 26 | +Rollup of 11 pull requests [#161289](https://github.com/rust-lang/rust/pull/161289) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=444dcce484c66c8d626806a8556be3b4d3ef381a&end=e71c0f1e3395b10a8c331317be1a5c107bdf7b2e&stat=instructions:u) |
| 27 | + |
| 28 | +| (instructions:u) | mean | range | count | |
| 29 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 30 | +| Regressions ❌ <br /> (primary) | 0.5% | [0.3%, 0.6%] | 6 | |
| 31 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 32 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 33 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 34 | +| All ❌✅ (primary) | 0.5% | [0.3%, 0.6%] | 6 | |
| 35 | + |
| 36 | +Root caused to remove scalar size mismatch interpreter error, make it an ICE instead [#161238](https://github.com/rust-lang/rust/pull/161238). |
| 37 | + |
| 38 | +Investigation in [#161456](https://github.com/rust-lang/rust/pull/161456) has led to recovering most of the regression. |
| 39 | + |
| 40 | +Rollup of 20 pull requests [#161458](https://github.com/rust-lang/rust/pull/161458) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=b66219142c937562f2ff8e083be2a2b25b20199e&end=a872286d0a1873caec0291ed4304de3170adbe16&stat=instructions:u) |
| 41 | + |
| 42 | +| (instructions:u) | mean | range | count | |
| 43 | +|:----------------------------------:|:----:|:------------:|:-----:| |
| 44 | +| Regressions ❌ <br /> (primary) | 1.1% | [1.1%, 1.1%] | 1 | |
| 45 | +| Regressions ❌ <br /> (secondary) | 0.1% | [0.1%, 0.1%] | 1 | |
| 46 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 47 | +| Improvements ✅ <br /> (secondary) | - | - | 0 | |
| 48 | +| All ❌✅ (primary) | 1.1% | [1.1%, 1.1%] | 1 | |
| 49 | + |
| 50 | +> image-rs change is a codegen scheduling change. externs doc-json we can |
| 51 | +> probably ignore, it's tiny and secondary. But apart from that, all benchmarks |
| 52 | +> are tilted toward regression (241 green vs 444 red). Not sure it's worth |
| 53 | +> investigating further, though. |
| 54 | +
|
| 55 | +from @panstromek, <https://github.com/rust-lang/rust/pull/161458#issuecomment-5379001772> |
| 56 | + |
| 57 | +I'm aligned with not investigating further given codegen scheduling is usually |
| 58 | +hard to do productive things about, size of the rollup, and relatively low |
| 59 | +impact (at least deemed significant by tooling). |
| 60 | + |
| 61 | +#### Improvements |
| 62 | + |
| 63 | +Fix ordering for `default impl` check in the new solver [#161268](https://github.com/rust-lang/rust/pull/161268) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=124c16e0de934595dfcdb0845cb39d2bcb8b970d&end=3009fdd3756436133ed9ea6b165a655c28f6857a&stat=instructions:u) |
| 64 | + |
| 65 | +| (instructions:u) | mean | range | count | |
| 66 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 67 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 68 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 69 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 70 | +| Improvements ✅ <br /> (secondary) | -0.8% | [-1.3%, -0.5%] | 6 | |
| 71 | +| All ❌✅ (primary) | - | - | 0 | |
| 72 | + |
| 73 | + |
| 74 | +add a cache to the `WfPredicates` visitor [#161274](https://github.com/rust-lang/rust/pull/161274) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=8536f4de90e5e781c06e584f8a88de860adc798b&end=def3ee9e4f0fe1429574f402bb624439bbd13fc6&stat=instructions:u) |
| 75 | + |
| 76 | +| (instructions:u) | mean | range | count | |
| 77 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 78 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 79 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 80 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 81 | +| Improvements ✅ <br /> (secondary) | -0.5% | [-0.9%, -0.1%] | 10 | |
| 82 | +| All ❌✅ (primary) | - | - | 0 | |
| 83 | + |
| 84 | + |
| 85 | +Optimize `DeepRejectCtxt` [#161211](https://github.com/rust-lang/rust/pull/161211) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=78c04b6a348438fb9396b8864cd34f92fb99cd53&end=c54751567b19c4ceb08b0412d83529c2568cba8b&stat=instructions:u) |
| 86 | + |
| 87 | +| (instructions:u) | mean | range | count | |
| 88 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 89 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 90 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 91 | +| Improvements ✅ <br /> (primary) | -0.5% | [-0.8%, -0.2%] | 17 | |
| 92 | +| Improvements ✅ <br /> (secondary) | -0.4% | [-0.9%, -0.2%] | 36 | |
| 93 | +| All ❌✅ (primary) | -0.5% | [-0.8%, -0.2%] | 17 | |
| 94 | + |
| 95 | + |
| 96 | +Update LLVM submodule to latest `release/23.x` branch [#161466](https://github.com/rust-lang/rust/pull/161466) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=baf1f7cc4faa79b938148ad52c53e96c0102cbc4&end=be0ea33bba5000ac134e58acde780af83d908e44&stat=instructions:u) |
| 97 | + |
| 98 | +| (instructions:u) | mean | range | count | |
| 99 | +|:----------------------------------:|:------:|:----------------:|:-----:| |
| 100 | +| Regressions ❌ <br /> (primary) | - | - | 0 | |
| 101 | +| Regressions ❌ <br /> (secondary) | - | - | 0 | |
| 102 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 103 | +| Improvements ✅ <br /> (secondary) | -10.7% | [-11.7%, -10.2%] | 3 | |
| 104 | +| All ❌✅ (primary) | - | - | 0 | |
| 105 | + |
| 106 | + |
| 107 | +#### Mixed |
| 108 | + |
| 109 | +Enable `-Znext-solver` on nightly by default [#160619](https://github.com/rust-lang/rust/pull/160619) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=16a623ad672a92409b5c04beb303583c6cf72a7e&end=526c36b4c477994b7905ec6a084d6150e49076f5&stat=instructions:u) |
| 110 | + |
| 111 | +| (instructions:u) | mean | range | count | |
| 112 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 113 | +| Regressions ❌ <br /> (primary) | 0.6% | [0.2%, 1.5%] | 124 | |
| 114 | +| Regressions ❌ <br /> (secondary) | 0.5% | [0.0%, 1.6%] | 151 | |
| 115 | +| Improvements ✅ <br /> (primary) | - | - | 0 | |
| 116 | +| Improvements ✅ <br /> (secondary) | -2.5% | [-8.1%, -0.3%] | 27 | |
| 117 | +| All ❌✅ (primary) | 0.6% | [0.2%, 1.5%] | 124 | |
| 118 | + |
| 119 | +Note that the specific regressions here are a point in time snapshot: we |
| 120 | +continue to see a steady flow of improvements land for the next solver's |
| 121 | +performance. These results also don't include accurately trained PGO (we are |
| 122 | +profiling with the next solver *disabled* right now, see |
| 123 | +https://github.com/rust-lang/rustc-perf/pull/2537). |
| 124 | + |
| 125 | +Skip computing extra liveness info if borrow_set is empty [#161252](https://github.com/rust-lang/rust/pull/161252) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=a872286d0a1873caec0291ed4304de3170adbe16&end=c656540d6467dee1381f0cbd882412d6bd1cd5ae&stat=instructions:u) |
| 126 | + |
| 127 | +| (instructions:u) | mean | range | count | |
| 128 | +|:----------------------------------:|:-----:|:--------------:|:-----:| |
| 129 | +| Regressions ❌ <br /> (primary) | 0.1% | [0.1%, 0.1%] | 1 | |
| 130 | +| Regressions ❌ <br /> (secondary) | 0.3% | [0.2%, 0.5%] | 27 | |
| 131 | +| Improvements ✅ <br /> (primary) | -0.7% | [-1.5%, -0.1%] | 11 | |
| 132 | +| Improvements ✅ <br /> (secondary) | -0.3% | [-0.9%, -0.0%] | 19 | |
| 133 | +| All ❌✅ (primary) | -0.6% | [-1.5%, 0.1%] | 12 | |
| 134 | + |
| 135 | +This is an optimization for the new borrow check implementation; wins outweigh |
| 136 | +the small regressions (if they're real). |
0 commit comments