T-compiler Meeting Agenda 2023-12-07
Announcements
- 1.74.1 is released (Zulip) and blog post
- With some P-high/critical regression were fixed (a big thanks to those that helped debugging and fixing)
- 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)
- AFIT/RPITIT Impl Triage at time:2023-12-07T16:00:00-05:00
- Types team meeting at time:2023-12-11T10:00:00-05:00
- [Types] Rotating new solver / formality / polonius deep dive at time:2023-12-11T11:00:00-05:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Require
--known-broken-llvm
flag for x.py to skip codegen tests on old LLVM” compiler-team#687 (Zulip) - “Semantics of
-Cinstrument-coverage=all
” compiler-team#690 (Zulip) - “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip)
- concern: added-complexity-to-frontend
- “New Tier-3 target:
wasm32-wasi-preview2
” compiler-team#694 (Zulip) - “Smooth the renaming transition of
wasm32-wasi
” compiler-team#695 (Zulip)
- “Require
- Old MCPs (not seconded, take a look)
- “De-llvm some integer intrinsics that on the Rust side always use
u32
” compiler-team#693 (Zulip) (last review activity: about 10 days ago)
- “De-llvm some integer intrinsics that on the Rust side always use
- 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
- concern needs blog post
- “make soft_unstable show up in future breakage reports” rust#116274
- “Stabilize Wasm target features that are in phase 4 and 5” rust#117457
- “static mut: allow mutable reference to arbitrary types, not just slices and arrays” rust#117614
- “Add a new
- Things in FCP (make sure you’re good with it)
- “Promote tier 3 riscv32 bare metal targets to tier 2” compiler-team#701
- “Add a stable flag to enable/disable codegen UB checks” compiler-team#625 (Zulip)
- concern needs-fcp
- “Report all lints, even if other errors already occurred.” compiler-team#633 (Zulip)
- “Add infrastructure to “compute the ABI of a Rust type, described as a C type”” compiler-team#672 (Zulip)
- “Stabilize
--json=unused-externs(-silent)
” compiler-team#674 (Zulip) - “Support response files generated by ninja with
@ninja:path
syntax” compiler-team#684 (Zulip) - “Add
-Zexperimental-target
” compiler-team#685 (Zulip)- concern doesn-t-justify-the-maintenance
- “Consistent
Handler
naming” compiler-team#699 (Zulip) - “Stabilize THIR unsafeck” rust#117673
- “guarantee that char and u32 are ABI-compatible” rust#118032
- “Propose rules for team repo maintenance” rust-forge#707
- Accepted MCPs
- “Add -Z small-data-threshold” compiler-team#689 (Zulip)
- “Add
$message_type
field to distinguish json diagnostic outputs” compiler-team#673 (Zulip) - “Set alignment of
i128
to 128 bits for x86” compiler-team#683 (Zulip) - “Stop emitting less useful debug sections:
.debug_pubnames
and.debug_pubtypes
” compiler-team#688 (Zulip)
- Finalized FCPs (disposition merge)
- “Tracking issue for dyn upcasting coercion” rust#65991
- “TAIT defining scope options” rust#107645
- “[style edition 2024] Combine all delimited exprs as last argument” rust#114764
- “generalize: handle occurs check failure in aliases” rust#117088
- “dropck_outlives check whether generator witness needs_drop” rust#117134
- “Stabilize C string literals” rust#117472
- “generator layout: ignore fake borrows” rust#117712
WG checkins
- @_T-rust-analyzer checkin by @Lukas Wirth (previous checkin):
Big things happened! rust-analyzer now uses proper spans for associating things from macro inputs to expansions (although not quite what rustc uses, as rustc’s spans are the opposite of being incremental), they are roughly
(FileId, AstId, TextRangeRelativeToAstId, SyntaxContextId)
, https://github.com/rust-lang/rust-analyzer/pull/15959. That PR also switched our$crate
resolution over to the markingSyntaxContext
approach that rustc uses meaning we can now start making all of r-a’s name resolution hygienic. Finally, support for implicit format args in almost all IDE features has landed, https://github.com/rust-lang/rust-analyzer/pull/16027
Backport nominations
T-compiler stable / T-compiler beta
- No beta nominations for
T-compiler
this time. - :stable: “Make subtyping explicit in MIR” rust#115025
- This is a dependency of #116415 (stable backport approved 2 weeks ago, fixes a number of regressions and ICEs)
- it probably /needs/ to be backported into 1.74.1 as well (comment)
- 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
- 2 T-compiler P-critical issues
- 60 T-compiler P-high issues
- 1 P-critical, 2 P-high, 4 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 2 P-high, 3 P-medium, 2 P-low regression-from-stable-to-nightly
- 1 P-critical, 39 P-high, 100 P-medium, 18 P-low regression-from-stable-to-stable
P-critical
- “Miscompilation of Bevy (and some wgpu) apps resulting in segfault on macOS.” rust#117902
- long and painful reduction (thanks @lqd and @Ben Kimock (Saethlin)!)
- finally cornered to an LLVM issue (submitted as llvm-project#74680, see comment))
- “1.74 causes an internal compiler error: broken MIR in Item” rust#117976
- stable backports of #116415 and #115025 into 1.74.1 should fix this
- No
P-critical
issues forT-types
this time.
P-high regressions
- “regression: new resolution failures in 1.74” rust#117056
- (mentioned last week) these regressions should hopefully be all fixed
- “Problem running a method on the output of a function that returns an associated type (“missing optimized MIR”)” rust#117997
- Culprit identified in #117076 cc: @petrochenkov (reviewer)
- Issue prioritization review: really P-high?
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
A small number of perf changes that unfortunately led to quite a few perf regressions. A large chunk of those regressions were in rustdoc and were considered acceptable since rustdoc is now doing strictly more work. Some other regressions have already been fixed and will hopefully soon be merged. The last of the regressions are still under investigation, but hopefully they will be resolved soon.
Triage done by @rylev. Revision range: df0295f0..9358642e
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 3.0% | [0.2%, 12.3%] | 53 |
Regressions (secondary) | 4.1% | [0.2%, 11.6%] | 102 |
Improvements (primary) | -0.3% | [-0.5%, -0.1%] | 65 |
Improvements (secondary) | -0.6% | [-1.2%, -0.2%] | 25 |
All (primary) | 1.1% | [-0.5%, 12.3%] | 118 |
4 Regressions, 1 Improvements, 1 Mixed; 1 of them in rollups 60 artifact comparisons made in total
Regressions
Rollup of 5 pull requests #118473 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.4% | [1.4%, 1.4%] | 1 |
Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 3 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 1.4% | [1.4%, 1.4%] | 1 |
- Noise
Restore #![no_builtins]
crates participation in LTO. #113923 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 6.4% | [0.8%, 12.4%] | 17 |
Regressions (secondary) | 5.3% | [0.5%, 12.2%] | 72 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 6.4% | [0.8%, 12.4%] | 17 |
- Builtin function symbols that erroneously do not get GCed
- #118568 seems to reverse these perf regressions.
Portable SIMD subtree update #118077 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.3%, 2.1%] | 14 |
Regressions (secondary) | 1.3% | [0.2%, 2.2%] | 23 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.7% | [0.3%, 2.1%] | 14 |
- All doc regressions due to more docs being generated and thus acceptable
Add an assume that the index is inbounds to slice::get_unchecked #116915 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 2.5% | [0.3%, 4.5%] | 10 |
Regressions (secondary) | 0.4% | [0.3%, 0.6%] | 3 |
Improvements (primary) | -0.5% | [-0.5%, -0.5%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | 2.2% | [-0.5%, 4.5%] | 11 |
- Still under investigation and perhaps a revert is called for
Improvements
resolve: Feed the def_kind
query immediately on DefId
creation #118188 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.5%, -0.2%] | 58 |
Improvements (secondary) | -0.5% | [-1.0%, -0.1%] | 34 |
All (primary) | -0.3% | [-0.5%, -0.2%] | 58 |
Mixed
add track_caller for arith ops #114841 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.4%] | 6 |
Regressions (secondary) | 0.7% | [0.2%, 1.3%] | 12 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.2% | [-0.3%, -0.2%] | 3 |
All (primary) | 0.3% | [0.2%, 0.4%] | 6 |
- Only really affecting rustdoc which is an acceptable tradeoff given the wins in diagnostics
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “resolve: re-export ambiguity as warning” rust#114682 (last review activity: about 55 days ago)
- cc: vadim petrochenkov
- “LLVM 18 x86 data layout update” rust#116672 (last review activity: about 49 days ago)
- cc: @nikita Popov (will this be part of the next LLVM 18 upgrade?)
- “WIP fix unsoundness via adjusting overlap check for some Pin impls” rust#116706 (last review activity: about 48 days ago)
- cc: @Michael (compiler-errors) Goulet do you need a review at this time? Also from T-libs?
- “discard invalid spans in external blocks” rust#116420 (last review activity: about 46 days ago)
- cc: @nils (Nilstrieb)
- “large_assignments: Lint on specific large args passed to functions” rust#116520 (last review activity: about 43 days ago)
- latest comment mentions WG-compiler-performance for an opinion. Who can have a look at that?
Next week’s WG checkins
- @_WG-diagnostics by @Esteban Küber and @oli
- @_WG-rustc-dev-guide by @Santiago Pastorino and @Yuki Okushi|217081
Next meetings' agenda draft: hackmd link