T Compiler Meeting Agenda 2022 01 13

T-compiler Meeting Agenda 2022-01-13

Tracking Issue

Announcements

  • Today new stable release 1.58 is out :loudspeaker: :tada:
  • Tomorrow at time:2022-01-14T10:00:00-05:00 Planning meeting
  • Reminder: if you see a PR/issue that seems like there might be legal implications due to copyright/IP/etc, please let the Core team know (or at least message @pnkfelix or @Wesley Wiser so we can pass it along).

MCPs/FCPs

  • New MCPs (take a look, see if you like them!)
    • No new proposals this time.
  • Old MCPs (not seconded, take a look)
    • “Accept pc in place of unknown and unknown in place of pc for x86_64 and i?86 targets” compiler-team#441 (last review activity: 6 months ago)
    • “Make -Z binary-dep-depinfo the default behavior” compiler-team#464 (last review activity: 3 months ago)
    • “Tier 3 target proposal: riscv64gc-linux-android (Android target for riscv64gc)” compiler-team#472 (last review activity: about 34 days ago)
    • -Dwarnings to cover all warnings” compiler-team#473 (last review activity: about 34 days ago)
    • “Build-time execution sandboxing” compiler-team#475 (last review activity: about 17 days ago)
  • Pending FCP requests (check your boxes!)
    • “Stabilize -Z instrument-coverage as -C instrument-coveragerust#90132
    • “Stabilize -Z print-link-args as --print link-argsrust#91606
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
    • No new accepted proposals this time.
  • Finalized FCPs (disposition merge)
    • “Remove effect of #[no_link] attribute on name resolution” rust#92034

WG checkins

We’ve had a bunch of fixes and improvements land recently from @Aaron Hill and @cjgillot which is great to see! The WG has been pretty dormant. It would be great to get that running again this year!

not much to share about WG-llvm happenings. The deferred inlining work is probably the highlight since the last check-in. But we’re also seeing some fixes going upstream for debug info (e.g. codeview should now know its looking at Rust) and stack probing (CFI information fixes).

Backport nominations

T-compiler beta / T-compiler stable

  • No backport nominations for T-compiler this time.

T-rustdoc beta / T-rustdoc stable

  • No backport nominations for T-rustdoc this time.

:back: / :shrug: / :hand:

PRs S-waiting-on-team

T-compiler

  • No PRs waiting on T-compiler this time.

Oldest PRs waiting for review

T-compiler

  • “Fix ICE with inferred type in const or static item” rust#89161 (last activity: 3 months ago)
    • waiting on @nikomatsakis (or perhaps reassign as he pointed out not being too familiar with the code)
  • “Fix variant index / discriminant confusion in uninhabited enum branching” rust#89764 (last activity: 2 months ago)
    • opened by @tm|352985
    • assigned to @Wesley Wiser, last comment
    • Seems some concerns were addressed by rust#91095 and rust#91088?
    • is s-waiting-on-review the current status?
  • “Closure capture cleanup & refactor” rust#89861 (opened 3 months ago)
    • assigned to @Wesley Wiser
  • “Improve terminology around ‘after typeck’” rust#90277 (last activity: 1 month ago)

Issues of Note

Short Summary

P-critical

T-compiler

  • “Miscompilation where binding only some fields leaks the others” rust#90752
  • “Compile-time regression between 1.56.1 and 1.57.0 for deeply nested decorator types” rust#91598
  • “no MIR available for DefId” rust#92755

T-rustdoc

  • No P-critical issues for T-rustdoc this time.

P-high regressions

P-high beta regressions

  • No P-high beta regressions this time.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2022-01-12

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 28 Untriaged Pull Requests

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
  • Rollup of 8 pull requests #92690
  • Fixes wrong unreachable_pub lints on nested and glob public reexport #87487
  • Rollup of 7 pull requests #92719
  • Store a Symbol instead of an Ident in VariantDef/FieldDef #92533

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.

Nominated Issues

T-compiler

  • “sess: default to v0 symbol mangling” rust#89917
    • update: stabilize -Z symbol-mangling-version=v0 as -C symbol-mangling-version=v0 in rust#90128 (merged 10 days ago)

RFC

  • No nominated RFCs for T-compiler this time.