T-compiler Meeting Agenda 2021-12-16
Announcements
- Tomorrow time:2021-12-17T15:00:00+01:00, monthly Compiler Team Planning meeting
- 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!)
- No new proposals this time.
- 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) - “Tier 3 target proposal: riscv64gc-linux-android (Android target for
riscv64gc
)” compiler-team#472 (last review activity: about 6 days ago) - “
-Dwarnings
to cover all warnings” compiler-team#473 (last review activity: about 6 days ago)
- Pending FCP requests (check your boxes!)
- “Stabilize
-Z instrument-coverage
as-C instrument-coverage
” rust#90132 - “Stabilize
-Z print-link-args
as-C print-link-args
” rust#91606
- “Stabilize
- Things in FCP (make sure you’re good with it)
- “Tracking issue for RFC 2115: In-band lifetime bindings” rust#44524
- Accepted MCPs
- No new accepted proposals this time.
- Finalized FCPs (disposition merge)
- “Stabilise
feature(const_generics_defaults)
” rust#90207 - “rustdoc: accept
--out-dir
and soft-deprecate--output
” rust#91260
- “Stabilise
WG checkins
- @WG-rfc-2229 by @nikomatsakis @Matthew Jasper (previous checkin)
Checkin text
- @WG-rls2.0 by @matklad (previous checkin)
Checkin text
Backport nominations
T-compiler stable / T-compiler beta
- :beta: “Deduplicate projection sub-obligations” rust#90423
- fixes rust#91598, a
P-critical
compile-time regression
- fixes rust#91598, a
- :beta: “Sync portable-simd to remove autosplats” rust#91484
- PR provided by @Jubilee
- fixes rust#90904,
P-high
regression in libs from stable
- :beta: “Revert setting a default for the MACOSX_DEPLOYMENT_TARGET env var for linking” rust#91870
- fixes rust#91372, a breaking change on macOS targets that prevented compiling against core crates
- :beta: “Fix HashStable implementation on InferTy” rust#91892
- opened by @Michael Goulet
- fixes rust#91807 a regression from stable that prevents valid code to compile in Rust 1.57
- :stable: “Deduplicate projection sub-obligations” rust#90423
- fixes rust#91598, a
P-critical
compile-time regression
- fixes rust#91598, a
T-rustdoc beta / T-rustdoc stable
- No backport nominations for
T-rustdoc
this time.
:back: / :shrug: / :hand:
PRs S-waiting-on-team
- “Stabilize
-Z print-link-args
as-C print-link-args
” rust#91606- @Wesley Wiser proposed merge of the RFC (pending one comment from @Vadim Petrochenkov)
Oldest PRs waiting for review
- “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 rust#89862 (last activity about 2 month ago)
- PR author @lcnr
- previously reviewed by @Esteban Küber
- PR seems to need another round of review
Issues of Note
Short Summary
- 3 T-compiler P-critical issues
- 76 T-compiler P-high issues
- 1 P-critical, 1 P-high, 0 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 2 P-medium, 0 P-low regression-from-stable-to-nightly
- 2 P-critical, 51 P-high, 81 P-medium, 11 P-low regression-from-stable-to-stable
P-critical
- “Huge compile-time regression in beta/nightly” rust#91128
- issue author mentions that disabling the new LLVM pass manager makes the regression disappear
- an MCVE is at this comment
- @nikic followed up with some insights and an LLVM patch #D115497
- “Compile-time regression between 1.56.1 and 1.57.0 for deeply nested decorator types” rust#91598
- @Aaron Hill provided a fix in PR rust#90423
- patch is beta- and stable-backport nominated
- 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
This week’s report started with 6 regressions; after eliminating truly obvious noise, we are left with just 2 minor regressions. Of the cases that regressed, I think the only interesting one is keccak (regressed by 1.73% in PR #91549). But don’t be too depressed: keccak was also improved up to 23% by PR #85013 (!); thanks to @simulacrum for that PR.
Triage done by @pnkfelix. Revision range: e2116acae59654bfab2a9729a024f3e2fd6d4b02..404c8471aba60c2d837fa728e7c729a0f52d5830
2 Regressions, 5 Improvements, 3 Mixed; 1 of them in rollups 30 Untriaged pull-requests 48 comparisons made in total
Regressions
“Support AVR for inline asm!” #91224
- Moderate regression in instruction counts (up to 0.8% on
incr-unchanged
builds ofexterns
) - This regression is solely isolated to variants of the
externs
benchmark. - It seems like a near certainty that the regression reported here is noise exacerbated by this pathological benchmark.
- Marked as triaged.
“Eliminate ConstnessAnd again” #91549
- Large regression in instruction counts (up to 3.1% on
full
builds ofinflate
) - This PR went through many rounds of performance evaluation and tuning.
- The only “real” regressions are likely to be
inflate
andkeccak
, and I am suspicious ofinflate
based on its sensitivity in other PR’s. - I’m leaving this PR in this week’s report largely just to draw attention to the problem we face in trying to evalute impact of cases like this.
Improvements
- “Avoid string validation in rustc_serialize, check a marker byte instead” #91407
- “Sync portable-simd to remove autosplats” #91484
- “replace vec::Drain drop loops with drop_in_place” #85157
- “replace dynamic library module with libloading” #90716
- “manually implement Hash for DefId” #91660
Mixed
“Replace dominators algorithm with simple Lengauer-Tarjan” #85013
- Very large improvement in instruction counts (up to -23.6% on
full
builds ofkeccak
) - Small regression in instruction counts (up to 0.4% on
incr-unchanged
builds ofhelloworld
)
“Rollup of 6 pull requests” #91799
- Very large improvement in instruction counts (up to -5.9% on
incr-unchanged
builds ofinflate
) - Small regression in instruction counts (up to 0.8% on
incr-unchanged
builds ofissue-88862
) - I don’t yet now hat’s up with the regression here to issue-88862.
“Deduplicate projection sub-obligations” #90423
- Very large improvement in instruction counts (up to -6.2% on
full
builds ofdeeply-nested
) - Small regression in instruction counts (up to 0.5% on
full
builds ofregression-31157
) - This is a targetted fix to address performance regressons that leaked into 1.57. It has been beta-nominated for backport.
Nominated Issues
- “Disable LLVM newPM by default” rust#91190
- mentioned in past meeting, scheduled to be re-evaluated again this week (see comment) and relevant Zulip discussion
- @Nikita Popov has a patch for LLVM (see relevant comment with some context)
- No nominated RFCs for
T-compiler
this time.