T-compiler Meeting Agenda 2024-01-11
Announcements
- Big rework of the meetings calendar, thanks @davidtwco (Zulip topic)!
- Compiler Team Planning meeting time:2024-01-12T16:00:00+01:00 ?
- Reminder: if you see a PR/issue that seems like there might be legal implications due to copyright/IP/etc, please let us know (or at least message @davidtwco or @Wesley Wiser so we can pass it along).
Other WG meetings (calendar link)
- Stable MIR Weekly time:2024-01-12T16:00:00+01:00
- wg-macros Triage time:2024-01-11T17:00:00+01:00
- Types Team Meeting time:2024-01-14T16:00:00+01:00
- Types Team: Rotating Solver/Formality/Polonius Deep Dive time:2024-01-14T17:00:00+01:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- No new proposals this time.
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Semantics of
-Cinstrument-coverage=all
” compiler-team#690 (Zulip) (last review activity: about 29 days ago) - “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 29 days ago)
- “Introduce perma-unstable
wasm-c-abi
flag” compiler-team#703 (Zulip) (last review activity: about 27 days ago) - “Support patchable-function-entry” compiler-team#704 (Zulip) (last review activity: about 27 days ago)
- “Add -Z direct-access-external-data” compiler-team#707 (Zulip) (last review activity: about 1 days ago)
- “Semantics of
- Pending FCP requests (check your boxes!)
- “Add a new
--build-id
flag to rustc” compiler-team#635 (Zulip) - “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- “Stabilize
--json=unused-externs(-silent)
” compiler-team#674 (Zulip) - “Support overriding
warnings
level for a specific lint via command line” rust#113307 - “Update Windows platform support” rust#115141
- “Stabilize Wasm target features that are in phase 4 and 5” rust#117457
- “Undeprecate lint
unstable_features
and make use of it in the compiler” rust#118639
- “Add a new
- Things in FCP (make sure you’re good with it)
- “Add a stable flag to enable/disable codegen UB checks” compiler-team#625 (Zulip)
- “Stabilize
--json=unused-externs(-silent)
” compiler-team#674 (Zulip) - “New Tier-3 target:
wasm32-wasi-preview2
” compiler-team#694 (Zulip) - “Smooth the renaming transition of
wasm32-wasi
” compiler-team#695 (Zulip) - “Provide option to shorten symbol names by replacing them with a digest” compiler-team#705 (Zulip)
- “uplift some -Zverbose calls and rename to -Zverbose-internals” compiler-team#706 (Zulip)
- “Start using clippy on rustc” compiler-team#709 (Zulip)
- “Promote tier 3
*-pc-windows-gnullvm
targets to tier 2” compiler-team#710 (Zulip) - “Unstably support MIR-only rlibs” compiler-team#713 (Zulip)
- “Warn on references casting to bigger memory layout” rust#118983
- “const-eval interning: get rid of type-driven traversal” rust#119044
- Accepted MCPs
- No new accepted proposals this time.
- Finalized FCPs (disposition merge)
- No new finished FCP (disposition merge) this time.
WG checkins
None this week
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “[beta] Revert #117472: Stabilize C string literals” rust#119528
- Revert authored by Wesley, T-lang discussion
- :beta: “Update LLVM submodule” rust#119802
- Not yet merged. Fixes a number of P-highs: Fixes #118867 #119160 #119179
- No stable nominations for
T-compiler
this time.
- No beta nominations for
T-types
this time. - No stable nominations for
T-types
this time.
PRs S-waiting-on-team
- “large_assignments: Lint on specific large args passed to functions” rust#116520
- Seems there are some perf. regressions (in part already discussed). Maybe add a comment to help take a decision and unblock?
- Other issues in progress or waiting on other teams
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 60 T-compiler P-high issues
- 0 P-critical, 1 P-high, 3 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 2 P-medium, 2 P-low regression-from-stable-to-nightly
- 0 P-critical, 41 P-high, 100 P-medium, 18 P-low regression-from-stable-to-stable
P-critical
- No
P-critical
issues forT-compiler
this time.
- No
P-critical
issues forT-types
this time.
P-high regressions
- “🐛 Symbol multiply defined since nightly-2023-12-02 with custom builtins.” rust#118609
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
Not a particularly notable week. Large swings aren’t spurious but also are driven by changes in high-level behavior (diagnostics going from zero to one emission primarily), which causes a lot more work to happen. This isn’t really representative of the underlying rustc performance changing though.
Triage done by @simulacrum. Revision range: 67b6975051b83ef2bd28f06e8467470d570aceb3..76101eecbe9aa80753664bbe637ad06d1925f315
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions ❌(primary) | 4.9% | [0.2%, 24.3%] | 14 |
Regressions (secondary) | 4.6% | [0.2%, 29.9%] | 55 |
Improvements (primary) | -0.5% | [-1.5%, -0.2%] | 61 |
Improvements (secondary) | -0.7% | [-1.0%, -0.4%] | 14 |
All (primary) | 0.5% | [-1.5%, 24.3%] | 75 |
4 Regressions, 4 Improvements, 6 Mixed; 1 of them in rollups
33 artifact comparisons made in total
Regressions
rustc_lint: Enforce rustc::potential_query_instability
lint #119251 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.3%] | 2 |
Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 8 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.2% | [0.2%, 0.3%] | 2 |
Minor change in just a few benchmarks. Not clear whether this is noise or not but the overall change is required for correctness.
Merge unused_tuple_struct_fields
into dead_code
#118297 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.3%, 0.8%] | 7 |
Regressions (secondary) | 8.3% | [0.2%, 30.4%] | 28 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.6% | [0.3%, 0.8%] | 7 |
Regressions are related to this lint firing in a few benchmarks, which causes a good deal of lazy loading to actually happen in diagnostics infra.
Exhaustiveness: Statically enforce revealing of opaques #119329 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 1.9% | [1.7%, 2.0%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | - | - | 0 |
Only a match-stress regression, seems like an acceptable change for the correctness fix.
Inline a few utility functions around MIR #119459 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.4%] | 3 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.3%, 0.4%] | 3 |
Potentially just noise. Overall impact is limited to just one benchmark and only incr-full.
Improvements
Separate immediate and in-memory ScalarPair representation #118991 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.6%, 0.6%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.0% | [-1.5%, -0.6%] | 13 |
Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
All (primary) | -0.9% | [-1.5%, 0.6%] | 14 |
rustc_span: Optimize syntax context comparisons #119531 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.6% | [-0.8%, -0.4%] | 5 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.6% | [-0.8%, -0.4%] | 5 |
Exhaustiveness: remove Matrix.wildcard_row
#119667 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -2.8% | [-3.0%, -2.6%] | 6 |
All (primary) | - | - | 0 |
macro_rules: Add an expansion-local cache to span marker #119693 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.4% | [-20.5%, -0.2%] | 80 |
Improvements (secondary) | -0.8% | [-1.9%, -0.3%] | 16 |
All (primary) | -1.4% | [-20.5%, -0.2%] | 80 |
Largest improvements here are recovery from a spurious regression in previous PR, but this is still a good win even aside from that.
Mixed
Reorder check_item_type diagnostics so they occur next to the corresponding check_well_formed
diagnostics #117213 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.4%] | 7 |
Regressions (secondary) | 0.8% | [0.2%, 2.3%] | 5 |
Improvements (primary) | -0.3% | [-0.3%, -0.3%] | 2 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.1% | [-0.3%, 0.4%] | 9 |
Stabilize THIR unsafeck #117673 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 2 |
Improvements (primary) | -0.4% | [-0.9%, -0.2%] | 39 |
Improvements (secondary) | -0.6% | [-1.1%, -0.4%] | 9 |
All (primary) | -0.4% | [-0.9%, -0.2%] | 39 |
Improvements outweigh regressions.
Replace a number of FxHashMaps/Sets with stable-iteration-order alternatives #119192 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.1%, 0.5%] | 7 |
Improvements (primary) | -0.4% | [-0.6%, -0.2%] | 2 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.4% | [-0.6%, -0.2%] | 2 |
Correctness fix, acceptable regressions.
Rollup of 9 pull requests #119662 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
Regressions (secondary) | 0.7% | [0.2%, 1.3%] | 13 |
Improvements (primary) | -0.4% | [-0.4%, -0.2%] | 6 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.3% | [-0.4%, 0.2%] | 7 |
tt-muncher is the primary significant regression, and appears to be significantly beyond the noise level for that benchmark. Investigation is ongoing.
mark vec::IntoIter pointers as !nonnull
#114205 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.6%, 0.8%] | 2 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.4% | [-0.4%, -0.4%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.4% | [-0.4%, 0.8%] | 3 |
Likely slightly more work for LLVM.
Nominated Issues
- “Environment variable sandboxing” rust#118372
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Create the previous dep graph index on a background thread” rust#116375 (last review activity: 3 months ago)
- cc: cjgillot
- “offset: allow zero-byte offset on arbitrary pointers” rust#117329
- cc: @nikita Popov (maybe)
- “Save liveness results for DestinationPropagation” rust#115291
- cc @Jak{e,ob} Degen (can you comment if your review is final?)
Next week’s WG checkins
- @_WG-mir-opt by @oli
- @_T-rust-analyzer by @Lukas Wirth
Next meetings' agenda draft: hackmd link