T-compiler Meeting Agenda 2025-02-06
Announcements
- FIY: a discussion on Zulip about
bootstrap
running all tests of rust-analyzer. If anyone has opinions, please join the discussion. - 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
- WG-async design meeting time:2025-02-06T19:00:00+01:00
- Stable MIR Weekly Meeting time:2025-02-07T17: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)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 4 months ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 3 months ago)
- “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 3 months ago)
- “Normalize FileCheck directives” compiler-team#789 (Zulip) (last review activity: 3 months ago)
- “Demote
i686-pc-windows-gnu
” compiler-team#822 (Zulip) (last review activity: about 41 days ago) - “Rename “dylib” crate type to “rdylib” (keep old name but deprecate it), and maybe do the same for “staticlib” → “cstaticlib”” compiler-team#825 (Zulip) (last review activity: about 27 days ago)
- “Add
target_abi = "[ilp]{2,3}[3264]{2}[fdq]?"
to all RV[3264]{2}I targets” compiler-team#830 (Zulip) (last review activity: about 6 days ago) - “Add
--print=lint-levels
to retrieve lints levels” compiler-team#833 (Zulip) (last review activity: about 6 days ago)
- Pending FCP requests (check your boxes!)
- “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
- “Warn about C-style octal literals” rust#131309
- Things in FCP (make sure you’re good with it)
- “Create an avr-unknown-none target” compiler-team#800 (Zulip)
- “Clean up operator representations” compiler-team#831 (Zulip)
- “Do not ignore uninhabited types for function-call ABI purposes.” compiler-team#832 (Zulip)
- Accepted MCPs
- No new accepted proposals this time.
- MCPs blocked on unresolved concerns
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip)
- concern: contributor friction
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: automatic-sync
- “Add
-C hint-mostly-unused
option” compiler-team#829 (Zulip) (last review activity: about 9 days ago) - “Add
evex512
target feature for AVX10” compiler-team#778 (Zulip) (last review activity: 2 months ago)- concern: design-around-naming-scheme
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip)
- Finalized FCPs (disposition merge)
- “Add
--print host-tuple
to print host target tuple” rust#125579 - “make unsupported_calling_conventions a hard error” rust#129935
- “Fix ICE when passing DefId-creating args to legacy_const_generics.” rust#130443
- “Stabilize WebAssembly
multivalue
,reference-types
, andtail-call
target features” rust#131080 - “Lint on combining
#[no_mangle]
and#[export_name]
” rust#131558
- “Add
- Other teams finalized FCPs
- “Add lint against function pointer comparisons” rust#118833
- “Fixup Windows verbatim paths when used with the
include!
macro” rust#125205 - “Uplift
clippy::double_neg
lint asdouble_negations
” rust#126604 - “Allow dropping
dyn Trait
principal” rust#126660 - “atomics: allow atomic and non-atomic reads to race” rust#128778
- “Lint against getting pointers from immediately dropped temporaries” rust#128985
- “Do not consider match/let/ref of place that evaluates to
!
to diverge, disallow coercions from them too” rust#129392 - “Make deprecated_cfg_attr_crate_type_name a hard error” rust#129670
- “Stabilize expr_2021 fragment specifier in all editions” rust#129972
- “Check elaborated projections from dyn don’t mention unconstrained late bound lifetimes” rust#130367
- “Finish stabilization of
result_ffi_guarantees
” rust#130628 - “Stabilize const
ptr::write*
andmem::replace
” rust#130954 - “Stabilize s390x inline assembly” rust#131258
- “Stabilize Arm64EC inline assembly” rust#131781
- “Always display first line of impl blocks even when collapsed” rust#132155
- “rework winnowing to sensibly handle global where-bounds” rust#132325
- “mark is_val_statically_known intrinsic as stably const-callable” rust#132449
- “Fix ICE when multiple supertrait substitutions need assoc but only one is provided” rust#133392
- “[rustdoc] Add sans-serif font setting” rust#133636
- “Stabilize
asm_goto
feature gate” rust#133870 - “Consider fields to be inhabited if they are unstable” rust#133889
- “disallow
repr()
on invalid items” rust#133925 - “Make the wasm_c_abi future compat warning a hard error” rust#133951
- “Stabilize target_feature_11” rust#134090
- “fully de-stabilize all custom inner attributes” rust#134276
- “remove long-deprecated no-op attributes no_start and crate_id” rust#134300
- “Stabilize
feature(trait_upcasting)
” rust#134367 - “Make cenum_impl_drop_cast a hard error” rust#135964
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Ensure that we don’t try to access fields on a non-struct pattern type” rust#135222
- Authored by estebank
- Fixes #135209 (was evaluated P-low) but @_Michael Goulet (compiler-errors) says they’re hitting it on stage 0 compiler (comment)
- :beta: “Add a couple of missing
ensure_sufficient_stacks
” rust#136352- Authored by @lqd
- companion fix for #135709 (esp. to fix a test on
aarch64-linux
) (comment) - slight perf. regression rubberstamped since this backport complments closing P-critical #135671
- 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
- “typeck: taint if errors found during writeback” rust#113125
- last comment from Oct 2024
- Was meant to fix #112824 (already closed) and #112630 (P-low). Do we want to keep it open?
- cc @davidtwco for maybe more context, probably not a big concern
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 3 T-compiler P-critical issues
- 58 T-compiler P-high issues
- 1 P-critical, 0 P-high, 0 P-medium, 1 P-low regression-from-stable-to-beta
- 1 P-critical, 0 P-high, 1 P-medium, 1 P-low regression-from-stable-to-nightly
- 0 P-critical, 34 P-high, 100 P-medium, 20 P-low regression-from-stable-to-stable
P-critical
- “regression: cannot borrow … as immutable because it is also borrowed as mutable” rust#135671
- Discussed last week
- Should be fixed by #135709 + #136352
- “invalid opcode regression in
x86_64-unknown-linux-musl
release builds while compiling code usinggeneric-array
” rust#135997- regressed in #133324 (not in beta, though)
- Should be closed by #136450, now r+‘ed (thanks @Michael Goulet (compiler-errors) and @Ben Kimock (Saethlin) )
- btw about #136450: if anyone knows GVN better can have a look either (comment)
- “Nightly regressed igvm crate and now emits SIGILL at opt-level higher than 1” rust#136361
- same as #135997
- None
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
A very quiet week with performance of primary benchmarks showing no change over all.
Triage done by @rylev. Revision range: f7538506..01e4f19c
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.6%] | 32 |
Regressions (secondary) | 0.5% | [0.1%, 1.1%] | 65 |
Improvements (primary) | -0.5% | [-1.0%, -0.2%] | 17 |
Improvements (secondary) | -3.1% | [-10.3%, -0.2%] | 20 |
All (primary) | 0.0% | [-1.0%, 0.6%] | 49 |
5 Regressions, 2 Improvements, 5 Mixed; 6 of them in rollups 49 artifact comparisons made in total
Regressions
Rollup of 10 pull requests #136135 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.3%] | 2 |
Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 9 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.2%, 0.3%] | 2 |
Rollup of 9 pull requests #136227 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.2% | [0.2%, 0.2%] | 1 |
- Addressed by https://github.com/rust-lang/rust/pull/136253
Merge PatKind::Path
into PatKind::Expr
#134248 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.4%] | 8 |
Regressions (secondary) | 0.3% | [0.1%, 0.5%] | 9 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.2%, 0.4%] | 8 |
Insert null checks for pointer dereferences when debug assertions are enabled #134424 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.5%] | 7 |
Regressions (secondary) | 0.3% | [0.2%, 0.5%] | 5 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.2%, 0.5%] | 7 |
Add a couple of missing ensure_sufficient_stacks
#136352 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 12 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | - | - | 0 |
Improvements
Apply LTO config to rustdoc #135832 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.6%, -0.2%] | 9 |
Improvements (secondary) | -0.6% | [-1.4%, -0.2%] | 4 |
All (primary) | -0.3% | [-0.6%, -0.2%] | 9 |
fix autodiff compile time regression #136413 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -30.3% | [-30.6%, -29.7%] | 4 |
Improvements (secondary) | -30.1% | [-32.0%, -28.2%] | 2 |
All (primary) | -30.3% | [-30.6%, -29.7%] | 4 |
Mixed
Rollup of 8 pull requests #136185 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.7% | [0.2%, 1.6%] | 3 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.5% | [-0.8%, -0.4%] | 6 |
All (primary) | - | - | 0 |
Revert #135914: Remove usages of QueryNormalizer
in the compiler #136011 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.2%, 0.3%] | 16 |
Improvements (primary) | -0.4% | [-1.1%, -0.2%] | 24 |
Improvements (secondary) | -5.9% | [-10.4%, -0.9%] | 10 |
All (primary) | -0.4% | [-1.1%, -0.2%] | 24 |
Rollup of 9 pull requests #136318 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.1%, 0.4%] | 8 |
Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 2 |
All (primary) | 0.3% | [0.1%, 0.4%] | 8 |
- It appears that #136180 is the culprit for this regression. I’m not sure it’s worth addressing though.
Rollup of 9 pull requests #136332 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 43.3% | [42.1%, 44.0%] | 4 |
Regressions (secondary) | 42.8% | [39.0%, 46.6%] | 2 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.3% | [-0.3%, -0.2%] | 4 |
All (primary) | 43.3% | [42.1%, 44.0%] | 4 |
Rollup of 6 pull requests #136389 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.1% | [0.1%, 0.1%] | 1 |
Regressions (secondary) | 0.4% | [0.3%, 0.5%] | 2 |
Improvements (primary) | -0.3% | [-0.3%, -0.3%] | 1 |
Improvements (secondary) | -0.2% | [-0.3%, -0.1%] | 2 |
All (primary) | -0.1% | [-0.3%, 0.1%] | 2 |
- Perf is a wash so I don’t think it’s worth investigating.
Nominated Issues
- “Our x86-32 target names are inconsistent” rust#136495
- (Zulip thread) @RalfJ would like the T-compiler attention on a number of x86 tier 3 compile target, which naming is inconsistent (or inaccurate)
- This PR is to gather feedbacks and opinions
- “Pattern Migration 2024: try to suggest eliding redundant binding modifiers” rust#136577
- @Nadrieril mentioned he was oriented to ask for a backport (Zulip discussion)
- Context: the edition migration lint for match ergonomics is subpar, see https://github.com/rust-lang/rust/issues/136047 and https://github.com/rust-lang/rust/issues/136456. Given that it will likely affect many users and the details are nonobvious, it felt important (to me Nadri) to have that fix for the stable realease of the edition
- it’s not the smallest PR; a smaller PR could maybe be done but I (Nadri) don’t have the bandwidth. the current PR is almost 100% infallible span/label manipulations so hopefully that’s not too risky to merge
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “add error message for c# style named arguments” rust#118733 (last review activity: 13 months ago)
- cc: @Esteban Küber
- “Add diagnostic for stack allocations of 1 GB or more” rust#119798 (last review activity: 13 months ago)
- cc @cjgillot
- “Improve parse item fallback” rust#125388 (last review activity: 8 months ago)
- cc: @Esteban Küber
- “Silence errors in expressions caused by bare traits in paths in 2021 edition” rust#125784 (last review activity: 8 months ago)
- cc: @Esteban Küber for a rebase then to @León Orell Liehr (fmease) for a review
Next meetings’ agenda draft: hackmd link