2023-06-13 Triage Log

Our build pipeline got sped up by PR #112012, which side-steps one of the rustc rebuilds we were suffering with before. (There is further potential speed-up by caching LLVM, as noted by on that PR.) Other than that, various small regressions that are largely noise, as well as one unexpected increase in binary sizes from PR #109005 that we should follow up on.

Triage done by @pnkfelix. Revision range: adc719d7..4bd4e2ea

Summary:

(instructions:u)meanrangecount
Regressions ❌
(primary)
2.5%[0.2%, 21.6%]84
Regressions ❌
(secondary)
6.2%[0.2%, 21.0%]105
Improvements ✅
(primary)
-0.8%[-1.6%, -0.2%]26
Improvements ✅
(secondary)
-0.7%[-1.2%, -0.2%]19
All ❌✅ (primary)1.7%[-1.6%, 21.6%]110

7 Regressions, 3 Improvements, 5 Mixed; 5 of them in rollups 46 artifact comparisons made in total

Regressions

Misc HIR typeck type mismatch tweaks #112116 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.7%[0.7%, 0.8%]3
Regressions ❌
(secondary)
0.4%[0.3%, 0.7%]11
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-0.2%[-0.2%, -0.2%]1
All ❌✅ (primary)0.7%[0.7%, 0.8%]3
  • only primary benchmark to regress was helloworld (3 incr check variants), and not by all that much (relatively speaking)
  • secondary regressions were mainly to unify-linearly, await-call-tree, token-stream-stress.
  • impact seems acceptable, marking as triaged.

Uplift clippy::undropped_manually_drops lint #111530 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.7%[0.6%, 0.7%]3
Regressions ❌
(secondary)
0.5%[0.3%, 0.6%]8
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.7%[0.6%, 0.7%]3
  • only primary benchmark to regress was helloworld (3 incr check variants), and not by all that much (relatively speaking)
  • secondary regressions were solely to unify-linearly, await-call-tree, token-stream-stress.
  • impact seems acceptable (one expects new lint to add some amount of extra work, and I wouldn't be surprised if this is actually noise,. given #112116 above).
  • marking as triaged.

Rollup of 3 pull requests #112465 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
4.2%[0.4%, 14.8%]6
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)4.2%[0.4%, 14.8%]6
  • already marked as triaged (expected regressions to doc benchmarks)

increase the accuracy of effective visibilities calculation #112426 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.2%, 0.6%]10
Regressions ❌
(secondary)
1.2%[0.6%, 1.9%]9
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.4%[0.2%, 0.6%]10
  • primary regressions are to serde (check, debug, opt) and also cargo + webrender (both check)
  • This PR added some extra work to the compiler to ensure some lazily-filled in tables are constructed correctly.
  • Therefore, this seems like extra work that is largely unavoidable.
  • marking as triaged.

rustdoc: re-elide cross-crate default trait-object lifetime bounds #107637 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.3%, 0.9%]12
Regressions ❌
(secondary)
0.7%[0.3%, 0.9%]18
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.4%[0.3%, 0.9%]12
  • already marked as triaged (expected regressions to doc benchmarks)

Rollup of 3 pull requests #112530 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
9.3%[0.6%, 21.0%]19
Regressions ❌
(secondary)
8.7%[1.0%, 20.8%]71
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)9.3%[0.6%, 21.0%]19
  • One of the rolled up PRs, PR #112528, is itself a partial revert of PR #110221, which yields the large compile-time losses noted here (solely for helloworld, it is worth noting).
  • the point is, the gains were 1. accidental 2. isolated to a toy and 3. due to an unintended change (which was now reverted).
  • marking as triaged.

Private-in-public lints implementation #111801 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.2%[0.1%, 0.2%]3
Regressions ❌
(secondary)
0.6%[0.2%, 1.1%]3
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)0.2%[0.1%, 0.2%]3
  • primary regressions were to stm32f4-0.14.0 check+opt incr, but by a really small amount (0.18%).
  • marking as triaged.

Improvements

Avoid one rustc rebuild in the optimized build pipeline #112012 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.4%, 0.5%]2
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.9%[-1.6%, -0.3%]26
Improvements ✅
(secondary)
-1.1%[-1.2%, -0.9%]11
All ❌✅ (primary)-0.8%[-1.6%, 0.5%]28
  • Interesting case where removing PGO data improved a class of benchmarks
  • Specifically, nearly all the improvements were to debug builds
  • this makes sense, because the PGO data we were gathering was during rustc bootstrap, which does not exercise the debug build paths.

Rollup of 5 pull requests #112450 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.6%[-0.6%, -0.6%]3
Improvements ✅
(secondary)
-0.4%[-0.6%, -0.3%]8
All ❌✅ (primary)-0.6%[-0.6%, -0.6%]3

[rustdoc] Fix infinite loop when retrieving impls for type alias #112543 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-3.8%[-12.9%, -0.4%]6
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-3.8%[-12.9%, -0.4%]6

Mixed

Use load+store instead of memcpy for small integer arrays #111999 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
2.2%[0.1%, 5.7%]3
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-0.3%[-0.3%, -0.3%]4
All ❌✅ (primary)--0
  • changes are all to secondary benchmarks
  • only notable was coercions debug incr-full regressing by 5.7%, but that's acceptable given what we expect benefits to be here w.r.t. codegen.
  • marking as triaged.

Update to LLVM 16.0.5 #112312 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
0.3%[0.2%, 0.3%]5
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-5.2%[-5.2%, -5.2%]1
All ❌✅ (primary)--0
  • effects are all to secondary benchmarks
  • effects are small enough that they would not block an LLVM upgrade
  • marking as triaged.

Rollup of 7 pull requests #112344 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
5.4%[5.4%, 5.4%]1
Improvements ✅
(primary)
-0.2%[-0.2%, -0.2%]2
Improvements ✅
(secondary)
--0
All ❌✅ (primary)-0.2%[-0.2%, -0.2%]2
  • sole regression is to secondary coercions debug incr-full.
  • not worth dissecting this rollup for that.
  • marking as triaged.

Remember names of cfg-ed out items to mention them in diagnostics #109005 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.4%[0.3%, 0.5%]11
Regressions ❌
(secondary)
--0
Improvements ✅
(primary)
-0.2%[-0.2%, -0.2%]3
Improvements ✅
(secondary)
-0.5%[-0.6%, -0.4%]8
All ❌✅ (primary)0.2%[-0.2%, 0.5%]14
  • instruction counts regressed (expected) and binary sizes regressed (which may have been unexpected).
  • specifically the binary sizes for libc and syn both regressed on the order of 3%.
  • not marking as triaged until we get confirmation that it is expected for the metadata in question to leak into the binary sizes being measured.

Rollup of 4 pull requests #112420 (Comparison Link)

(instructions:u)meanrangecount
Regressions ❌
(primary)
0.3%[0.2%, 0.6%]5
Regressions ❌
(secondary)
0.4%[0.2%, 0.6%]7
Improvements ✅
(primary)
-0.3%[-0.3%, -0.3%]2
Improvements ✅
(secondary)
-0.3%[-0.3%, -0.2%]2
All ❌✅ (primary)0.2%[-0.3%, 0.6%]7
  • currently guessing that the regression here might be due to PR #109953.
  • doing a specific rust-timer run now to check that, not marking as triaged for now.

Untriaged Pull Requests