2024-03-19 Triage Log

Even though the summary might not look like it, this was actually a relatively quiet week, with a few small regressions. The large regression that is also shown in the summary table was caused by extending the verification of incremental compilation results. However, this verification is not actually fully enabled by default, so these regressions are mostly only visible in our benchmarking suite, which enables the verification to achieve more deterministic benchmarking results. One small regression was also caused by enabling frame pointers for the Rust standard library, which should improve profiling of Rust programs.

Triage done by @kobzol. Revision range: e919669d..21d94a3d

Summary:

(instructions:u)meanrangecount
Regressions ❌
(primary)
2.5%[0.4%, 7.8%]207
Regressions ❌
(secondary)
2.9%[0.2%, 8.3%]128
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-1.0%[-1.3%, -0.4%]4
All ❌✅ (primary)2.5%[0.4%, 7.8%]207

4 Regressions, 1 Improvements, 6 Mixed; 4 of them in rollups 67 artifact comparisons made in total

Regressions

Make DefiningAnchor::Bind only store the opaque types that may be constrained, instead of the current infcx root item. #121796 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.6%[0.2%, 1.8%]112
Regressions ❌
(secondary)
0.7%[0.2%, 1.8%]27
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.6%[0.2%, 1.8%]112
  • This is a refactoring of the “old” trait solver that was necessary for follow-up compiler changes.

Rollup of 12 pull requests #122389 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.7%[0.7%, 0.7%]3
Regressions ❌
(secondary)
1.1%[0.5%, 2.1%]3
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.7%[0.7%, 0.7%]3
  • Noise, marked as triaged.

Verify that query keys result in unique dep nodes #122227 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
2.0%[0.2%, 7.8%]193
Regressions ❌
(secondary)
2.4%[0.3%, 7.8%]153
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-1.3%[-1.3%, -1.3%]1
All ❌✅ (primary)2.0%[0.2%, 7.8%]193
  • This PR adds additional verification to the compiler that checks if incremental compilation didn't encounter problems.
  • This result looks quite bad, but that is mostly caused by the configuration of our benchmark suite, which fully enables this verification to make benchmarking more deterministic.
  • Normal builds of user code should not be affected by this change.

Enable frame pointers for the standard library #122646 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.6%]70
Regressions ❌
(secondary)
0.3%[0.2%, 0.5%]22
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-2.0%[-2.0%, -2.0%]1
All ❌✅ (primary)0.3%[0.2%, 0.6%]70
  • This PR has a small instruction count cost across the board, but cycles and walltime were affected much less.
  • It enables frame pointers for the Rust standard library, which should make profiling of Rust code more robust and accurate, which should be worth this small perf. hit.
  • Marked as triaged.

Improvements

Rollup of 15 pull requests #122338 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-1.2%[-1.2%, -1.1%]4
Improvements ✅
(secondary)
-0.8%[-1.2%, -0.4%]13
All ❌✅ (primary)-1.2%[-1.2%, -1.1%]4

Mixed

Update cargo #122394 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
1.1%[1.1%, 1.1%]1
Improvements ✅
(primary)
-0.7%[-0.7%, -0.7%]3
Improvements ✅
(secondary)
-0.5%[-0.6%, -0.3%]5
All ❌✅ (primary)-0.7%[-0.7%, -0.7%]3
  • Most likely noise.

more eagerly instantiate binders #119849 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.7%[0.2%, 1.1%]14
Regressions ❌
(secondary)
0.5%[0.4%, 1.0%]7
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-1.2%[-1.4%, -1.1%]6
All ❌✅ (primary)0.7%[0.2%, 1.1%]14
  • A small regression for trait-heavy crates, caused by a fix to the trait solver.
  • Marked as triaged.

Rollup of 9 pull requests #122607 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
1.7%[1.7%, 1.7%]1
Regressions ❌
(secondary)
2.7%[2.7%, 2.7%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-5.3%[-5.3%, -5.3%]1
All ❌✅ (primary)1.7%[1.7%, 1.7%]1
  • The largest regression was caused by #122601, which should enable more LLVM optimizations, so some regressions to opt benchmarks is expected.
  • Marked as triaged.

Move generic NonZero rustc_layout_scalar_valid_range_start attribute to inner type. #121885 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.3%, 0.6%]9
Regressions ❌
(secondary)
0.2%[0.2%, 0.2%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-2.8%[-2.8%, -2.8%]1
All ❌✅ (primary)0.4%[0.3%, 0.6%]9
  • A small regression caused by internal refactoring in the compiler. Marked as triaged.

Rollup of 8 pull requests #122690 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
2.7%[0.2%, 5.3%]2
Improvements ✅
(primary)
-0.2%[-0.3%, -0.2%]7
Improvements ✅
(secondary)
-0.4%[-0.5%, -0.3%]9
All ❌✅ (primary)-0.2%[-0.3%, -0.2%]7
  • Most likely noise, marked as triaged.

Rollup of 11 pull requests #122713 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
1.0%[0.5%, 1.4%]3
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-0.5%[-0.9%, -0.4%]7
All ❌✅ (primary)1.0%[0.5%, 1.4%]3
  • Small regression in match checking caused by #121823, which improves compiler diagnostics.
  • Marked as triaged.