2022-01-12 Triage Log

Improvements generally outweighed regressions with most regressions coming in the form of correctness fixes (where performance regressions are generally less of a concern). The biggest win was arguably a change to the Sip128 hasher implementation which seemed to have decent performance implications for many real world crates.

Triage done by @rylev. Revision range: 2b681ac06b1a6b7ea39525e59363ffee0d1a68e5..72e74d7b9cf1a7901650227e74650f1fcc797600

3 Regressions, 7 Improvements, 2 Mixed; 4 of them in rollups 28 comparisons made in total

Regressions

Hash Ident spans in all HIR structures #92534

  • Large regression in instruction counts (up to 1.6% on incr-unchanged builds of derive)
  • A subset of of #92210 which has absolutely horrific performance regressions. This is a partial fix where the regressions are much less severe.
  • This is a correctness fix so performance loss is typically much more acceptable. Without this fix, it was possible for incremental compilation to be broken when a change to a span was misidentified as not being an actual change.

Ensure that Fingerprint caching respects hashing configuration #92278

  • Moderate regression in instruction counts (up to 1.3% on incr-unchanged builds of clap-rs)
  • Another fix in how we're doing hashing of certain structures. This is a correctness fix and as such, the relatively moderation regression was deemed acceptable.

Actually instantiate the opaque type when checking bounds #90948

  • Moderate regression in instruction counts (up to 1.2% on full builds of wg-grammar)
  • The regressions are mostly limited to a stress benchmark (wg-grammar) and as a correctness fix were deemed acceptable.

Improvements

Do not hash leading zero bytes of i64 numbers in Sip128 hasher #92103

Rollup of 8 pull requests #92627

rustc_metadata: Optimize and document module children decoding #92086

  • Very large improvement in instruction counts (up to -14.9% on incr-unchanged builds of issue-88862)

Rollup of 8 pull requests #92690

Fixes wrong unreachable_pub lints on nested and glob public reexport #87487

  • Moderate improvement in instruction counts (up to -1.1% on incr-unchanged builds of unused-warnings)

Rollup of 7 pull requests #92719

Store a Symbol instead of an Ident in VariantDef/FieldDef #92533

  • Large improvement in instruction counts (up to -5.9% on incr-unchanged builds of issue-46449)

Mixed

Rollup of 7 pull requests #92556

  • Moderate improvement in instruction counts (up to -1.6% on incr-full builds of issue-88862)
  • Large regression in instruction counts (up to 6.6% on full builds of tokio-webpush-simple)

Switch all libraries to the 2021 edition #92068

  • Small improvement in instruction counts (up to -0.4% on full builds of cranelift-codegen)
  • Large regression in instruction counts (up to 3.1% on incr-patched: b9b3e592dd cherry picked builds of style-servo)
  • Seems like the panic infrastructure in the 2021 edition is ever so slightly more expensive to compile and run causing this issue. It was deemed acceptable to take the small performance hit.

Untriaged Pull Requests