T-compiler Meeting Agenda 2021-12-02
Announcements
- :loudspeaker: today release of Rust stable 1.57 (the last for 2021
:)
) - Reminder: if you see a PR/issue that seems like there might be legal implications due to copywrite/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!)
- “Tier 3 target proposal: riscv64gc-linux-android (Android target for
riscv64gc
)” compiler-team#472 - “
-Dwarnings
to cover all warnings” compiler-team#473
- “Tier 3 target proposal: riscv64gc-linux-android (Android target for
- 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 ofunknown
andunknown
in place ofpc
forx86_64
andi?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!)
- No pending FCP requests this time.
- Things in FCP (make sure you’re good with it)
- No FCP requests this time.
- Accepted MCPs
- “Unstable lints should be considered unknown” compiler-team#469
- Finalized FCPs (disposition merge)
- “Tracking Issue for cargo report future-incompat” rust#71249
- “Tracking Issue for inline assembly (
asm!
)” rust#72016
WG checkins
@wg-incr-comp by @pnkfelix and @Wesley Wiser (previous checkin):
nothing to report at this time
@WG-llvm by @nagisa (previous checkin):
- pretty disappointing that our hand is forced to turn off newPM for the time being; LLVM project is undergoing migration of their issue tracker from bugzilla to github, which may serve for a more straightforward experience in contributing issues to the LLVM project.
- LLVM 13.0.1-rc1 release candidate out
Backport nominations
T-compiler stable / T-compiler beta
- No beta nominations for
T-compiler
this time. - No stable nominations for
T-compiler
this time.
T-rustdoc stable / T-rustdoc beta
- No beta nominations for
T-rustdoc
this time. - No stable nominations for
T-rustdoc
this time.
:back: / :shrug: / :hand:
PRs S-waiting-on-team
- no PR waiting on T-compiler
Oldest PRs waiting for review
- Postpone the evaluation of constant expressions that depend on inference variables (last activity: about 17 days ago)
- review from @lcnr, left some comments about merging this PR later after some more thoughts
- Introduce linter for diagnostic messages (last activity: about 30 days ago)
- previously reviewed by @Esteban Küber and @simulacrum
- “Abort in panic_abort eh_personality” rust#86801 (last review activity: 4 months ago)
- mentioned in T-compiler meeting about one month ago, no activity since then
- no reviewer assigned: who could own this PR?
- “Fix ICE with inferred type in
const
orstatic
item” rust#89161 (last review activity: about 57 days ago)- last review from Niko
- improve type abiguity error for functions and methods (last activity about 1 month ago)
- PR author @lcnr
- is it waiting for another review or feedback from author?
- Introduce MIR summary to avoid loading large bodies without inlining them (last activity about 1 month ago)
- PR author @cjgillot?
- last review from @wesley wiser
- Fix false positive for typoed crate or module suggestion (last activity: none)
- opened 1 month ago, needs a reviewer
- highfive bot assigned to @Esteban Küber
- changed to s-waiting-on-author to fix the CI
- author has left a question (maybe not yet answered)
Issues of Note
Short Summary
- 4 T-compiler P-critical issues
- 77 T-compiler P-high issues
- 2 P-critical, 5 P-high, 2 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 2 P-high, 2 P-medium, 1 P-low regression-from-stable-to-nightly
- 4 P-critical, 46 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
- @Dylan MacKenzie (ecstatic-morse) authored PR rust#90788 which backport on beta was declined
- “Unsound drop due to imperfect lifetime checks” rust#90838
- @pnkfelix fixed this in PR #90840 which was beta backported
- next steps for this issue? perhaps close it?
- “Implied bounds by associated types as function parameters are inconsistent in an unsound way.” rust#91068
- handled by PRs rust#91243 and rust#91242 which partially reverts rust#88312
- “Huge compile-time regression in beta/nightly” rust#91128
- @Nikita Popov points out the problematic IR generated by
opt -03
- previously discussion: the new pass-manager has been disabled in beta pre-1.57 with PR rust#91189 from @nagisa
- Next steps for this issue? (still critical)?
- @Nikita Popov points out the problematic IR generated by
- No
P-critical
issues forT-rustdoc
this time.
P-high regressions
- “Compilation appears to loop indefinitely " rust#89195
- already discussed
- assigned to Felix
- “regression: rustc suggests
.as_ref()
at incorrect location and other spans have regressed” rust#90286- assigned to Felix
- @Esteban Küber commented about the possibility of authoring a PR
- “DWARF info for
static
vars in lib crates has stopped being produced reliably in LTO builds” rust#90357- assigned to Felix
- already discussed, Felix did some investigation on this
Unassigned P-high nightly regressions
- “Undefined reference to
getauxval
in functioninit_have_lse_atomics
when compiling to nightlyaarch64-unknown-linux-musl
” rust#89626- Already discussed
- Issue is fixed by rust#90527 + libc#2272 and as soon as the fixed
libc 0.2.107
is merged, see rust#90681 - Can this be closed?
Performance logs
Overall, many changes this week, but overall an improvement on multiple benchmarks over the week from a number of pull requests dedicated to optimizations of certain patterns. We are still seeing a large number of spurious changes due to rustc-perf#1105, which has yet to be addressed.
Triage done by @simulacrum. Revision range: 22c2d9ddbf356bcdb718e88ca6ee3665e1e42690..1c0287830e0fb3c4007afea2819ba03766da6e9c
4 Regressions, 4 Improvements, 9 Mixed; 5 of them in rollups 41 comparisons made in total
Regressions
Mark places as initialized when mutably borrowed #90788
- Moderate regression in instruction counts (up to 0.6% on
full
builds ofmatch-stress-enum
) - Fix for a miscompilation, so necessary regression.
Visit param_env
field in Obligation’s TypeFoldable
impl #91205
- Very large regression in instruction counts (up to 6.6% on
full
builds ofhyper-2
) - Fix for incorrect code, regressions unfortunately unavoidable.
Improvements
- Rollup of 6 pull requests #91159
- Optimize live point computation #90491
- Remove eval_always from upvars. #90580
- Rollup of 8 pull requests #91388
Mixed
Avoid generating empty closures for fieldless enum variants #89881
- Small improvement in instruction counts (up to -1.6% on
incr-patched: add static arr item
builds ofcoercions
) - Small regression in instruction counts (up to 0.6% on
incr-unchanged
builds ofclap-rs
) - Primarily benefits bootstrap time (-5.4 seconds, -0.7%), instruction count changes largely real but not avoidable (differences in LLVM decision making).
Remove eval_always for inherent_impls. #90579
- Very large improvement in instruction counts (up to -5.6% on
incr-unchanged
builds ofstm32f4
) - Small regression in instruction counts (up to 0.2% on
incr-full
builds ofstm32f4
)
Faster Layout::array
#91246
- Large improvement in instruction counts (up to -4.2% on
incr-unchanged
builds ofdeep-vector
) - Very large regression in instruction counts (up to 5.0% on
incr-unchanged
builds ofinflate
) - Most prominent regression is spurious, and overall this looks like improvements outweighing regressions.
Rollup of 7 pull requests #91269
- Very large improvement in instruction counts (up to -5.1% on
incr-unchanged
builds ofinflate
) - Very large regression in instruction counts (up to 18.3% on
incr-unchanged
builds ofclap-rs
) - Regressions seem potentially real, but may also be related to rustc-perf#1105. Locally this seems to not be the case, though, so it seems probable that the regression is real.
Rollup of 6 pull requests #91288
- Small improvement in instruction counts (up to -1.0% on
incr-patched: b9b3e592dd cherry picked
builds ofstyle-servo
) - Large regression in instruction counts (up to 1.7% on
full
builds ofexterns
) - Seems to be a genuine regression. Unclear what the cause is.
Make TypeFolder::fold_*
return Result
#91230
- Large improvement in instruction counts (up to -1.0% on
incr-full
builds ofdeeply-nested-async
) - Large regression in instruction counts (up to 4.0% on
incr-unchanged
builds ofdeep-vector
) - Regressions seem genuine, but are likely to be shuffling of instruction sequences rather than something directly addressable.
Update libc to 0.2.108 #90681
- Very large improvement in instruction counts (up to -15.3% on
incr-unchanged
builds ofclap-rs
) - Large regression in instruction counts (up to 3.0% on
incr-unchanged
builds ofdeeply-nested-async
) - Looks like a genuine regression, potentially slightly more work at crate loading time.
Tokenize emoji as if they were valid identifiers #88781
- Small improvement in instruction counts (up to -0.8% on
full
builds ofdeeply-nested
) - Small regression in instruction counts (up to 0.3% on
incr-full
builds ofdeeply-nested-async
) - Genuine regression; more expensive logic in tokenization.
Rollup of 6 pull requests #91221
- Moderate improvement in instruction counts (up to -1.3% on
incr-unchanged
builds ofwg-grammar
) - Small regression in instruction counts (up to 0.6% on
full
builds ofctfe-stress-4
) - Regression seems genuine, though cause is unclear.
Untriaged Pull Requests
Nominated Issues
- “Change
char
type in debuginfo to DW_ATE_UTF” rust#89887 - “sess: default to v0 symbol mangling” rust#89917
- this is
s-blocked
(see comment)
- this is
- “Stabilize
-Z instrument-coverage
as-C instrument-coverage
” rust#90132- @tmandry nominated
- “implement aspect-oriented programming (AOP) for Rust” rust#90721
- nominated by @mw (see comment)
- suggested to open an RFC
- “Miscompilation where binding only some fields leaks the others” rust#90752
- discussed in P-critical
- perhaps nomination can be removed?
- No nominated RFCs for
T-compiler
this time.