2021-12-07 Triage Log

A week of mostly rather small changes with many regressions being hard to diagnose. The largest regression comes from the introduction of a new future (desugaring .await into a call to IntoFuture::into_future). This was deemed acceptable as it only seems to have a negative impact in stress test situations where async/await is used more than one would normally expect. Unfortunately this does mean regressions beat out improvements this week.

Triage done by @rylev. Revision range: 1c0287830e0fb3c4007afea2819ba03766da6e9c..ecb65b0e170fc5275870c9d0fba7267a57cf35e5

3 Regressions, 5 Improvements, 5 Mixed; 3 of them in rollups 31 comparisons made in total

Regressions

Implement version of normalize_erasing_regions that allows for normalization failure #91255

  • Small regression in instruction counts (up to 0.9% on incr-full builds of ctfe-stress-4)
  • Nothing immediately jumps out as an issue, so a run of cachegrind might be necessary.
  • Left a comment as such.

Rollup of 10 pull requests #91486

  • Large regression in instruction counts (up to 1.1% on full builds of match-stress-enum)
  • Seems to be impacting compilation of match expressions, but none of the sub PRs seem to be a likely culprit.
  • Left a comment as such.

Reintroduce into_future in .await desugaring #90737

  • Very large regression in instruction counts (up to 9.3% on incr-full builds of deeply-nested-async)
  • The regression was very much expected but only really appears in extremely await-heavy code. We'll have to wait to see how this impacts real world users, and see if we can work on performance of trait obligation resolution to improve the performance lost.
  • A more detailed justification for taking the performance hit can be found here.

Improvements

Lint elided lifetimes in path during lifetime resolution. #90446

fix sparc64 ABI for aggregates with floating point members #91003

  • Small improvement in instruction counts (up to -0.7% on incr-unchanged builds of deeply-nested-async)

Optimize rustc_lexer #91393

  • Moderate improvement in instruction counts (up to -1.0% on incr-unchanged builds of coercions)

Revert “Auto merge of #91354 - fee1-dead:const_env, r=spastorino” #91491

  • Moderate improvement in instruction counts (up to -1.1% on incr-patched: b9b3e592dd cherry picked builds of style-servo)
  • Reverted some performance regressions.

Add a MIR pass manager (Taylor's Version) #91475

Mixed

Introduce RawVec::reserve_for_push. #91352

  • Large improvement in instruction counts (up to -3.0% on incr-patched: println builds of webrender-wrench)
  • Small regression in instruction counts (up to 0.4% on incr-patched: println builds of style-servo)
  • The improvements outweigh the regressions and are mostly found in real-world crates.
  • Justification for the regressions can be found here.

Rollup of 4 pull requests #91406

  • Large improvement in instruction counts (up to -2.7% on incr-unchanged builds of deeply-nested-async)
  • Very large regression in instruction counts (up to 7.1% on incr-unchanged builds of clap-rs)
  • A case where it's hard to tell where the regression is coming from, but it is a quite a large regression in a real-world crate (albeit one that is a tiny bit noisy).
  • Both and only really touch rustdoc so that's unlikely the culprit.
  • Left a comment for follow up

Cleanup: Eliminate ConstnessAnd #91354

  • Small improvement in instruction counts (up to -0.6% on full builds of deeply-nested)
  • Moderate regression in instruction counts (up to 1.1% on incr-patched: b9b3e592dd cherry picked builds of style-servo)
  • Reverted by #91491 which recovered the regression.

Rollup of 4 iffy pull requests #91455

  • Very large improvement in instruction counts (up to -6.7% on incr-unchanged builds of clap-rs)
  • Large regression in instruction counts (up to 3.4% on incr-unchanged builds of clap-rs)
  • The improvements outweigh the regressions with the largest regression in a non-noisy benchmark being only 0.8%.
  • Given the difficult nature of figuring out what caused regressions in a rollup of 4 iffy pull requests, we'll let this one slide.

Reduce boilerplate around infallible folders #91318

  • Moderate improvement in instruction counts (up to -0.8% on incr-unchanged builds of externs)
  • Small regression in instruction counts (up to 0.6% on full builds of deeply-nested)
  • cachegrind was already run, but there are no clear explanations for the regressions.

Untriaged Pull Requests