T-compiler Meeting Agenda 2021-12-09
Tracking Issue
Announcements
- 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!)
- Old MCPs (not seconded, take a look)
- "CI should exercise (subset of) tests under –stage 1" compiler-team#439 (last review activity: 3 months ago)
- "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: 5 months ago)
- "Make
-Z binary-dep-depinfo
the default behavior" compiler-team#464 (last review activity: 2 months ago)
- Pending FCP requests (check your boxes!)
- "Tracking issue for RFC 2115: In-band lifetime bindings" rust#44524
- Things in FCP (make sure you're good with it)
- No FCP requests this time.
- Accepted MCPs
- Finalized FCPs (disposition merge)
- "Tracking Issue for cargo report future-incompat" rust#71249
- "Tracking Issue for inline assembly (
asm!
)" rust#72016
WG checkins
@WG-mir-optimization checkin by @oli (previous checkin)
- @Dylan MacKenzie (ecstatic-morse) is working on the MIR pass manager #91386
- there is a lot of unclarity around what dialects of MIR we have and what rules exist
- Not really a new thing, but it caused a bug (#90762) and almost caused a much bigger bug (in #73255), though we that caught that in time
- See this discussion for some examples of the problems
@WG-polymorphization checkin by @davidtwco (previous checkin)
we're making slow progress, @lcnr is working on a patch that removes our main blocker, there's not much else to do with polymorphization until that's complete.
Backport nominations
T-compiler stable / T-compiler beta
- :beta: "Sync portable-simd to remove autosplats" rust#91484
- @simulacrum suggests two strategies for backport: either backported in full or a targeted backport that excludes the submodule with a config setting (see comment)
- No stable nominations for
T-compiler
this time.
T-rustdoc stable / T-rustdoc beta
- :beta: "Make rustdoc headings black, and markdown blue" rust#91534
- seems all fine to backport this small UI fix
- No stable nominations for
T-rustdoc
this time.
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
/
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
/
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
PRs S-waiting-on-team
T-compiler
- "Make specifying repr optional for fieldless enums" rust#88203
- "Make feature key optional for rustc_stable, rustc_const_stable attributes" rust#88588
- "remove pref_align_of intrinsic" rust#90877
Oldest PRs waiting for review
T-compiler
Issues of Note
Short Summary
P-critical
T-compiler
-
"Miscompilation where binding only some fields leaks the others" rust#90752
-
"Huge compile-time regression in beta/nightly" rust#91128
- issue author mentions that disabling the new LLVM pass manager makes the regression disappear
- some public code to reproduce is at this comment
- @nikic followed up with some great insights
- discussed last week, linked to PR #91190, due to be evaluated again next week
-
"Compile-time regression between 1.56.1 and 1.57.0 for deeply nested decorator types" rust#91598
- this affects production code on different scenarios
- time needed for compilation seems to have abnormally regressed
-
No P-critical
issues for T-rustdoc
this time.
P-high regressions
P-high beta regressions
- "Where bounds with associated types equality cause overflow." rust#89503
Unassigned P-high nightly regressions
- "Undefined reference to
getauxval
in function init_have_lse_atomics
when compiling to nightly aarch64-unknown-linux-musl
" rust#89626
- "nightly-2021-12-02 to nightly-2021-12-03 regression (PR #91354): auto-deref on
Cow
does not seem to work anymore in all circumstances" rust#91489
triage logs for 2021-12-07
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, 29 Untriaged Pull Requests
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
- Optimize
rustc_lexer
#91393
- Revert "Auto merge of #91354 - fee1-dead:const_env, r=spastorino" #91491
- 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.
Nominated Issues
T-compiler
- No
I-compiler-nominated
issues t this time.
RFC
- No nominated RFCs for
T-compiler
this time.