T-compiler Meeting Agenda 2022-10-06
Announcements
- Types Team: Planning/Deep-Dive meeting at time:2022-10-07T09:00:00-04:00
- steering: survey retrospective at time:2022-10-07T10:00:00-04:00
- RustcContributor::explore @lcnr session: rustc trait solver at time:2022-10-07T10:30:00-04:00
- Zulip thread
- Open to rustc contributors
- Topic: “rustc trait solver: exploring how evaluate, fulfill, and select fit together”
- Zoom link: TBA
- 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).
Other WG meetings
- wg-rls-2.0 weekly sync-up at time:2022-10-10T11:00:00-04:00
- wg-rls-2.0 steering meeting at time:2022-10-10T11:00:00-04:00
- Async WG triage meeting at time:2022-10-10T11:30:00-04:00
- [wg-traits] GATs Sync at time:2022-10-10T16:00:00-04:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Introduce a
#[rustc::*]
tool attribute namespace and provide a stable#[rustc::on_unimplemented]
attribute” compiler-team#560 - “
-Z instrument-xray
option” compiler-team#561
- “Introduce a
- Old MCPs (not seconded, take a look)
- “Arbitrary annotations in compiletest” compiler-team#513 (last review activity: 5 months ago)
- “Add
#[alias]
attribute to allow symbol aliasing” compiler-team#526 (last review activity: 2 months ago) - “Use RangeInclusive in SpanData instead of lo/hi” compiler-team#534 (last review activity: about 40 days ago)
- “Allow informational -Z flags on stable compiler” compiler-team#542 (last review activity: about 40 days ago)
- " Promote
i586-unknown-linux-gnu
to Tier 2 with Host Tools " compiler-team#543 (last review activity: about 40 days ago) - “Lower baseline expectations for i686 unix-like targets” compiler-team#548 (last review activity: about 26 days ago)
- “MCP: Flag to disable extended error info.” compiler-team#550 (last review activity: about 7 days ago)
- “New Tier-3 target proposal: powerpc64-ibm-aix” compiler-team#553 (last review activity: about 26 days ago)
- “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: about 26 days ago)
- “MCP: Raise UEFI Targets to Tier-2” compiler-team#555 (last review activity: about 26 days ago)
- “Raise minimum supported macOS and iOS versions” compiler-team#556 (last review activity: about 26 days ago)
- “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 13 days ago)
- Pending FCP requests (check your boxes!)
- “Only apply
ProceduralMasquerade
hack to older versions ofrental
” rust#94063 - “Remove save-analysis.” rust#101841
- “Only apply
- Things in FCP (make sure you’re good with it)
- “Elaborate supertrait bounds when triggering
unused_must_use
onimpl Trait
” rust#102287
- “Elaborate supertrait bounds when triggering
- Accepted MCPs
- “
DROP
toDROP_IF
” compiler-team#558
- “
- Finalized FCPs (disposition merge)
- “Tracking Issue for asm_sym” rust#93333
- “Allow transmutes between the same types after erasing lifetimes” rust#101520
WG checkins
-
@_WG-mir-opt MIR Optimizations by @oli (previous checkin):
Checkin text
-
@_WG-polymorphization Polymorphization by @davidtwco (previous checkin):
No updates, wg members are busy elsewhere.
Backport nominations
T-compiler stable / T-compiler beta
- :beta: “Revert perf-regression 101620” rust#102064
- :beta: “Fix associated type bindings with anon const in GAT position” rust#102336
- fixes #102333, a
P-medium
ICEs with GATs (on nightly+beta) - nominated by Wesley to let it go with GATs stabilization
- fixes #102333, a
- No stable 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
- “Only apply
ProceduralMasquerade
hack to older versions ofrental
” rust#94063- PR is now waiting for T-compiler to approve (or raise concerns)
- 2 other hidden issue waiting on teams or progressing
Oldest PRs waiting for review
- “Allow
impl Fn() -> impl Trait
in return position” rust#93582 (last review activity: about 41 days ago)- ping @nikomatsakis for another round of review
- “Fix off-by-one error in X87DoubleExtended::from_bits” rust#100685 (last review activity: about 40 days ago)
- @eddyb changes review assignment to @Wesley Wiser for licensing about the tests in this PR (comment)
- “Support #[global_allocator] without the allocator shim” rust#86844 (last review activity: 2 months ago)
- @pnkfelix ready for another round of review
- “Track
-Cprofile-use
and-Cprofile-sample-use
value by file hash, not file path” rust#100413 (last review activity: about 38 days ago)- ping reviewer @mw, left a comment about some suggestion to leave to the author?
- “Add
kernel-address
sanitizer support for freestanding targets” rust#99679 (last review activity: 2 months ago)- @cuviper ready for another round of review
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 62 T-compiler P-high issues
- 0 P-critical, 1 P-high, 0 P-medium, 1 P-low regression-from-stable-to-beta
- 0 P-critical, 2 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 3 P-critical, 39 P-high, 85 P-medium, 8 P-low regression-from-stable-to-stable
P-critical
- “Performance regression in 1.64+ when
BufReader
inner reader doesn’t fill the buffer” rust#102727- regression shows only on debug runs (primarily from evaluating the predicates of
intrinsics::assume
) - issue priority not completely clear: is this a
P-critical
?
- regression shows only on debug runs (primarily from evaluating the predicates of
- No
P-critical
issues forT-rustdoc
this time.
P-high regressions
- “codegen regression for bool” rust#101048
- @Nikita Popov self-assigned
- “ICE: Broken MIR in Item(…) with
let_else
usage (use of local which has no storage here)” rust#102317- assigned
P-high
out of caution and for visibility (priority can be lowered if it’s the case) - @__Ding Xiang Fei self-assigned for investigation
- assigned
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
A great week, with 170 primary benchmark scenarios seeing improvement. Every PR flagged by perf provided at least some wins, and perhaps more impressive: No rollup PR’s were flagged by perf this week! Furthermore, cjgillot fixed an issue where incremental compilation was being unnecessarily hindered by our span and lint system. Great work everyone!
Triage done by @pnkfelix. Revision range: d9297d22..02cd79af
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.2% | [0.4%, 1.9%] | 2 |
Regressions (secondary) | 0.5% | [0.4%, 0.6%] | 6 |
Improvements (primary) | -2.4% | [-31.0%, -0.2%] | 170 |
Improvements (secondary) | -1.5% | [-5.8%, -0.3%] | 159 |
All (primary) | -2.4% | [-31.0%, 1.9%] | 172 |
0 Regressions, 2 Improvements, 7 Mixed; 0 of them in rollups 30 Untriaged Pull Requests 54 artifact comparisons made in total
Regressions
None ‽
Improvements
More lexer improvements #102302 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 2.2% | [2.2%, 2.2%] | 1 |
Improvements (primary) | -0.5% | [-1.0%, -0.2%] | 80 |
Improvements (secondary) | -0.8% | [-1.8%, -0.3%] | 75 |
All (primary) | -0.5% | [-1.0%, -0.2%] | 80 |
Inline a few functions. #102387 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-1.0%, -0.2%] | 60 |
Improvements (secondary) | -0.8% | [-2.3%, -0.3%] | 42 |
All (primary) | -0.4% | [-1.0%, -0.2%] | 60 |
Mixed
Rewrite and refactor format_args!() builtin macro. #100996 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 1.5% | [1.1%, 2.0%] | 6 |
Improvements (primary) | -0.3% | [-0.7%, -0.2%] | 7 |
Improvements (secondary) | -1.2% | [-1.5%, -0.6%] | 7 |
All (primary) | -0.3% | [-0.7%, -0.2%] | 7 |
rustdoc: Remove clean::TraitWithExtraInfo
and queryify is_notable_trait
#102384 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.3%] | 1 |
Regressions (secondary) | 2.7% | [2.7%, 2.7%] | 1 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.4% | [-1.7%, -1.2%] | 12 |
All (primary) | 0.3% | [0.3%, 0.3%] | 1 |
Fix perf regression from TypeVisitor changes #101893 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 1.4% | [1.2%, 1.6%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.3% | [-2.9%, -0.5%] | 9 |
All (primary) | - | - | 0 |
Shrink hir::def::Res
#101887 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 1.2% | [0.6%, 1.6%] | 7 |
Improvements (primary) | -0.2% | [-0.3%, -0.2%] | 5 |
Improvements (secondary) | -0.3% | [-0.4%, -0.3%] | 2 |
All (primary) | -0.2% | [-0.3%, -0.2%] | 5 |
Move lint level source explanation to the bottom #101986 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 1.0% | [0.9%, 1.0%] | 2 |
Improvements (primary) | -0.3% | [-0.3%, -0.2%] | 3 |
Improvements (secondary) | -0.9% | [-1.4%, -0.3%] | 8 |
All (primary) | -0.3% | [-0.3%, -0.2%] | 3 |
Compute lint levels by definition #102236 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.3%, 0.9%] | 14 |
Regressions (secondary) | 1.0% | [0.2%, 2.0%] | 20 |
Improvements (primary) | -3.2% | [-30.2%, -0.2%] | 84 |
Improvements (secondary) | -1.1% | [-2.8%, -0.3%] | 52 |
All (primary) | -2.7% | [-30.2%, 0.9%] | 98 |
- based on reading of #101620, this was an important step for making incremental compilation apply to a much broader set of input code.
- the performance gains reported by perf seem well worth the cost that it registered.
- marked as triaged.
Mark Cell::replace() as #[inline] #102548 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.9% | [0.4%, 1.8%] | 3 |
Regressions (secondary) | 0.9% | [0.2%, 1.3%] | 10 |
Improvements (primary) | -0.3% | [-1.2%, -0.2%] | 14 |
Improvements (secondary) | -0.4% | [-1.9%, -0.2%] | 12 |
All (primary) | -0.1% | [-1.2%, 1.8%] | 17 |
- PR had intermediate perf run reported stats that are somewhat better than what we actually ended up with in the end.
- did not mark as triaged; pinged a reviewer to confirm that this still meets acceptable criteria from their POV.
Nominated Issues
- “Example iterator fold vs. loop emit different code” rust#99656
- perf. regression affecting WASM and x86_64 targets
- shows intermittently and fluctuates since quite old releases (1.33 ~ 1.56)
- @_mqudsi suggests it could to be caused by multiple issues (comment)
- nominated by @apiraino: does it need to be prioritized i.e. does it look bad enough to require a closer look?
- “Constify
TypeId
ordering impls” rust#101698- @raldone01 adds some background (comment)
- @scottmcm:
T-lang
sees no blockers for nightly but stabilization should be well thought first (comment) - @Mara nominated for T-compiler: “will this get in the way of any future plans there might be with future typeid implementations? (And if so, is that a problem?)” (comment)
- “extern “C” functions don’t generate the same IR definitions as clang on x86, causing problems with cross-language LTO” rust#102174
- an LLVM upgrade led to inlining code that breaks stuff (affects Firefox builds)
- @Nikita Popov mentions that the issue is limited to the cross-language LTO case only" (comment)
- @eddyb adds more insights (comment)
- nominated by @apiraino: I need context to understand the priority of this regression, what the actionable could be (and perhaps find an owner?)
- No nominated RFCs for
T-compiler
this time.
Next week’s WG checkins
- @_WG-rls2.0 by @Lukas Wirth
- @_WG-self-profile by @mw and @Wesley Wiser