T-compiler Meeting Agenda 2022-01-13
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 ofunknown
andunknown
in place ofpc
forx86_64
andi?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)
- “Accept
- Pending FCP requests (check your boxes!)
- “Stabilize
-Z instrument-coverage
as-C instrument-coverage
” rust#90132 - “Stabilize
-Z print-link-args
as--print link-args
” rust#91606
- “Stabilize
- Things in FCP (make sure you’re good with it)
- “CI should exercise (subset of) tests under –stage 1” compiler-team#439
- “Adding known bugs to test cases” compiler-team#476
- “Introduce a new linter for diagnostic meesages” compiler-team#478
- Accepted MCPs
- No new accepted proposals this time.
- Finalized FCPs (disposition merge)
- “Remove effect of
#[no_link]
attribute on name resolution” rust#92034
- “Remove effect of
WG checkins
- @_wg-incr-comp by @pnkfelix and @Wesley Wiser (previous checkin)
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!
- @_WG-llvm by @nagisa (previous checkin)
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
- No PRs waiting on
T-compiler
this time.
Oldest PRs waiting for review
- “Fix ICE with inferred type in
const
orstatic
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)
- assigned to @eddyb
- pr author left some comments for review
Issues of Note
Short Summary
- 3 T-compiler P-critical issues
- 78 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 P-medium, 0 P-low regression-from-stable-to-beta
- 1 P-critical, 1 P-high, 1 P-medium, 1 P-low regression-from-stable-to-nightly
- 3 P-critical, 51 P-high, 81 P-medium, 12 P-low regression-from-stable-to-stable
P-critical
- “Miscompilation where binding only some fields leaks the others” rust#90752
- addressed by rustc#90788 -> out in 1.58
- “Compile-time regression between 1.56.1 and 1.57.0 for deeply nested decorator types” rust#91598
- addressed by rustc#90423 -> out in 1.58
- “no MIR available for DefId” rust#92755
- @Lambinoo is working on a fix (rust#92781)
- No
P-critical
issues forT-rustdoc
this time.
P-high regressions
- No
P-high
beta regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
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 ofderive
) - 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 ofclap-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 ofwg-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 anIdent
inVariantDef
/FieldDef
#92533
Mixed
Rollup of 7 pull requests #92556
- Moderate improvement in instruction counts (up to -1.6% on
incr-full
builds ofissue-88862
) - Large regression in instruction counts (up to 6.6% on
full
builds oftokio-webpush-simple
)
Switch all libraries to the 2021 edition #92068
- Small improvement in instruction counts (up to -0.4% on
full
builds ofcranelift-codegen
) - Large regression in instruction counts (up to 3.1% on
incr-patched: b9b3e592dd cherry picked
builds ofstyle-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
- “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)
- update: stabilize
- No nominated RFCs for
T-compiler
this time.