T-compiler Meeting Agenda 2023-12-28
Announcements
- Today release of Rust 1.75.0 (blog post draft)
- 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 Meeting at time:2023-12-29T10:00:00-05:00
- Types team meeting at time:2024-01-01T10:00:00-05:00
- [Types] Rotating new solver / formality / polonius deep dive at time:2024-01-01T11:00:00-05:00
- @Jack Huey are these T-type meetings happening on New Year’s Eve or it’s just calendar repetition? :-)
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Add -Z direct-access-external-data” compiler-team#707 (Zulip)
- Old MCPs (not seconded, take a look)
- “Require
--known-broken-llvm
flag for x.py to skip codegen tests on old LLVM” compiler-team#687 (Zulip) (last review activity: about 15 days ago) - “Semantics of
-Cinstrument-coverage=all
” compiler-team#690 (Zulip) (last review activity: about 15 days ago) - “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: about 15 days ago)
- concern: added-complexity-to-frontend
- “New Tier-3 target:
wasm32-wasi-preview2
” compiler-team#694 (Zulip) (last review activity: about 9 days ago) - “Smooth the renaming transition of
wasm32-wasi
” compiler-team#695 (Zulip) (last review activity: about 15 days ago) - “Introduce perma-unstable
wasm-c-abi
flag” compiler-team#703 (Zulip) (last review activity: about 13 days ago) - “Support patchable-function-entry” compiler-team#704 (Zulip) (last review activity: about 13 days ago)
- “Require
- Pending FCP requests (check your boxes!)
- “Add a new
--build-id
flag to rustc” compiler-team#635 (Zulip)- concern option-name
- concern other-existing-options
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern automatic-sync
- concern single-point-of-failure-via-stream-archival
- “Stabilize
--json=unused-externs(-silent)
” compiler-team#674 (Zulip)- concern lint-interactions
- “Support overriding
warnings
level for a specific lint via command line” rust#113307- concern nesting
- “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)
- concern needs-fcp, can someone from T-compiler start it?
- “Report all lints, even if other errors already occurred.” compiler-team#633 (Zulip)
- “Stabilize
--json=unused-externs(-silent)
” compiler-team#674 (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)
- “Add a stable flag to enable/disable codegen UB checks” compiler-team#625 (Zulip)
- Accepted MCPs
- “Add infrastructure to “compute the ABI of a Rust type, described as a C type”” compiler-team#672 (Zulip)
- “Support response files generated by ninja with
@ninja:path
syntax” compiler-team#684 (Zulip) - “De-llvm some integer intrinsics that on the Rust side always use
u32
” compiler-team#693 (Zulip) - “Consistent
Handler
naming” compiler-team#699 (Zulip) - “Promote tier 3 riscv32 bare metal targets to tier 2” compiler-team#701 (Zulip)
- “Use the MSVC provided Address Sanitizer runtime when building for MSVC” compiler-team#702 (Zulip)
- Finalized FCPs (disposition merge)
- “make soft_unstable show up in future breakage reports” rust#116274
- “Stabilize THIR unsafeck” rust#117673
- “Support async recursive calls (as long as they have indirection)” rust#117703
- “Properly reject
default
on free const items” rust#117818 - “Make inductive cycles in coherence ambiguous always” rust#118649
WG checkins
-
@_WG-mir-opt (any WG members have news to share?) (previous checkin):
Checkin text
-
@_T-rust-analyzer by @Lukas Wirth (previous checkin):
Checkin text
Backport nominations
T-compiler stable / T-compiler beta
- :beta: [1.76.0] “Exhaustiveness: Improve complexity on some wide matches” rust#118796
- (mentioned last week)
- PR is now approved and merged, fixes a (P-high) exhaustiveness check rust#118437 (comment)
- 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
- Other issues in progress or waiting on other teams
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 61 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, 1 P-high, 2 P-medium, 2 P-low regression-from-stable-to-nightly
- 0 P-critical, 40 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
- No new beta
P-high
regressions
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
Some of the recent noise swings have been appearing again this week, but luckily less often than before. There were a few actual regressions, but most of them were localized to a single stress test. On the other hand, there were a few very nice wins across the board, especially for check and incremental builds, primarily thanks to #118824 and #119265.
Triage done by @kobzol. Revision range: bf9229a2e366b4c311f059014a4aa08af16de5d8..1ab783112ab4e4807304dbd249b39771246013ef
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.6%, 0.6%] | 1 |
Regressions (secondary) | 2.5% | [0.3%, 4.2%] | 10 |
Improvements (primary) | -0.8% | [-3.3%, -0.1%] | 180 |
Improvements (secondary) | -1.2% | [-5.5%, -0.2%] | 109 |
All (primary) | -0.8% | [-3.3%, 0.6%] | 181 |
5 Regressions, 7 Improvements, 2 Mixed; 1 of them in rollups 58 artifact comparisons made in total
Regressions
Make exhaustiveness usable outside of rustc #118842 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.9% | [0.9%, 1.0%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 1 |
All (primary) | - | - | 0 |
- This PR enables the use of exhaustiveness checking e.g. in rust-analyzer, which is part of the “librarification effort”. The small regression in a single stress-test benchmark is worth it.
mark ty::Const::Error when meet unsupport ty for const generic params #117176 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.6%, 0.7%] | 4 |
Regressions (secondary) | 0.4% | [0.2%, 0.6%] | 19 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.7% | [0.6%, 0.7%] | 4 |
- This PR only added a test, so this has to be noise.
- Already marked as triaged by @jackh726
Exhaustiveness: Improve complexity on some wide matches #118796 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 2.9% | [2.6%, 3.1%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -1.3% | [-1.3%, -1.3%] | 1 |
All (primary) | - | - | 0 |
- This PR fixed a potential hang in the compiler, the regression of the match checking stress-test is unfortunate, but it’s more important to avoid the pathological case.
- Already marked as triaged by @apiraino
Subtree sync for rustc_codegen_cranelift #119278 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.9% | [0.8%, 0.9%] | 3 |
Regressions (secondary) | 0.5% | [0.3%, 0.7%] | 20 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.9% | [0.8%, 0.9%] | 3 |
- Noise
fix ICE when using raw ptr in a pattern #119274 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.7%, 0.7%] | 1 |
Regressions (secondary) | 0.4% | [0.3%, 0.5%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.7% | [0.7%, 0.7%] | 1 |
- Noise
Improvements
fast path for declared_generic_bounds_from_env #119084 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.9% | [-2.9%, -0.2%] | 8 |
Improvements (secondary) | - | - | 0 |
All (primary) | -1.9% | [-2.9%, -0.2%] | 8 |
- Very nice improvement to diesel.
use Vec for region constraints instead of BTreeMap #118824 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.5% | [-1.3%, -0.2%] | 39 |
Improvements (secondary) | -0.7% | [-1.7%, -0.2%] | 29 |
All (primary) | -0.5% | [-1.3%, -0.2%] | 39 |
- Nice improvements to check builds across the board.
Rollup of 6 pull requests #119237 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.5% | [-0.8%, -0.3%] | 17 |
Improvements (secondary) | -0.4% | [-0.6%, -0.2%] | 10 |
All (primary) | -0.5% | [-0.8%, -0.3%] | 17 |
- Nice win for type checking across several benchmarks. It’s unclear which PR from the rollup has caused the wins though.
Stabilize ip_in_core feature #119276 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.9% | [-0.9%, -0.8%] | 4 |
Improvements (secondary) | -0.5% | [-0.8%, -0.2%] | 21 |
All (primary) | -0.9% | [-0.9%, -0.8%] | 4 |
- This is just noise returning back to steady state.
Unify SourceFile::name_hash and StableSourceFileId #119139 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.2% | [-0.2%, -0.1%] | 3 |
Improvements (secondary) | -0.8% | [-0.9%, -0.6%] | 3 |
All (primary) | -0.2% | [-0.2%, -0.1%] | 3 |
- A few small wins for incremental benchmarks.
Fix display of warning block if it is first element of the top doc block #119283 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.7% | [-0.7%, -0.7%] | 2 |
Improvements (secondary) | -0.4% | [-0.6%, -0.3%] | 5 |
All (primary) | -0.7% | [-0.7%, -0.7%] | 2 |
- This PR only modified the UI and tests of rustdoc, so this is just noise.
Make closures carry their own ClosureKind #119258 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.1% | [-1.1%, -1.1%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | -1.1% | [-1.1%, -1.1%] | 1 |
- This is probably just noise.
Mixed
add more niches to rawvec #106790 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.1%, 0.7%] | 20 |
Regressions (secondary) | 0.6% | [0.2%, 1.0%] | 2 |
Improvements (primary) | -0.4% | [-2.0%, -0.1%] | 27 |
Improvements (secondary) | -0.9% | [-5.3%, -0.2%] | 16 |
All (primary) | -0.1% | [-2.0%, 0.7%] | 47 |
- This PR enabled more optimization opportunities for LLVM, which could in theory help with program optimization, but it also caused some binary size increases and compile-time regressions.
- Not marking as triaged yet.
Remove metadata decoding DefPathHash cache #119265 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.9% | [0.9%, 0.9%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.6% | [-2.1%, -0.2%] | 101 |
Improvements (secondary) | -1.2% | [-3.2%, -0.2%] | 65 |
All (primary) | -0.6% | [-2.1%, 0.9%] | 102 |
- Very nice check and incremental wins across the board.
- The single regression is probably just noise returning back to steady state.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “large_assignments: Lint on specific large args passed to functions” rust#116520 (last review activity: 2 months ago)
- cc: WG-compiler-performance? (comment)
- “Add -Zuse-sync-unwind” rust#117744 (last review activity: about 41 days ago)
- Do these changes need an MCP?
- revert for benchmark rust#118436
- cc: @vadim petrochenkov @pnkfelix seems PR author is waiting on a feedback about perf. results (comment)
Next week’s WG checkins
- @_WG-async-foundations by @nikomatsakis and @tmandry
- @WG-diagnostics by @Esteban Küber and @oli
Next meetings' agenda draft: hackmd link