T-compiler Meeting Agenda 2025-01-16
Announcements
- 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
- @_davidtwco office hours time:2025-01-17T17:00:00+01:00
- Stable MIR Weekly Meeting time:2025-01-17T17:00:00+01:00
- WG-async design meeting time:2025-01-16T19: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: 3 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: 2 months ago)
- “Normalize FileCheck directives” compiler-team#789 (Zulip) (last review activity: 2 months ago)
- “Create an avr-unknown-none target” compiler-team#800 (Zulip) (last review activity: 2 months ago)
- “Demote
i686-pc-windows-gnu
” compiler-team#822 (Zulip) (last review activity: about 19 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 5 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)
- “Add amdgpu target” compiler-team#823 (Zulip)
- “Add new targets for Cygwin (and MSYS2)” compiler-team#826 (Zulip)
- “Changing
-O
toopt-level=3
” compiler-team#828 (Zulip) - “const-eval: detect more pointers as definitely not-null” rust#133700
- “remove support for the (unstable) #[start] attribute” rust#134299
- Accepted MCPs
- “Relink, don’t rebuild” compiler-team#790 (Zulip)
- “Use debuginfo for short backtrace printing” compiler-team#818 (Zulip)
- “Policy: rustc can be run on case-insensitive filesystems but works in a case-sensitive way” compiler-team#819 (Zulip)
- “T-compiler Supplemental Tool Policy (Linker Scripts, etc.)” compiler-team#820 (Zulip)
- MCPs blocked on unresolved concerns
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: automatic-sync
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip) (last review activity: about 28 days ago)
- concern: contributor friction
- “Add
evex512
target feature for AVX10” compiler-team#778 (Zulip) (last review activity: about 41 days ago)- concern: design-around-naming-scheme
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (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 - “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
- “Stabilize
asm_goto
feature gate” rust#133870 - “Stabilize
feature(trait_upcasting)
” rust#134367
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Make sure to mark
IMPL_TRAIT_REDUNDANT_CAPTURES
asAllow
in edition 2024” rust#135441- Authored by compiler-errors
- Backport asked to ship with the edition (Edition 2024 == 1.85.0)
- This downgrades the lint from “warn” to “allow”
- Follow-up to #127672 (rfc#3617 “Stabilize opaque type precise capturing”)
- :beta: “Update to LLVM 19.1.7” rust#135484
- Authored by nikic
- r+‘ed, in bors queue. Fixes #134457 (llvm-project#120433, compiler fails on arithmetic operations) and #111073 (Chromium CI test fail when
sanitizers = true
, also linked reports from other projects) - Changelog here
- :beta: “don’t check for overlap if it’s allowed regardless” rust#135524
- Authored by lcnr
- Fixes rustc#135457, substancial perf regression
- PR open, perf. regression being triaged (increased instruction count)
- (also stable nominated)
- :stable: “Make sure to record deps from cached task in new solver on first run” rust#133828
- Authored by compiler-errors, nominated for possible stable backport (comment)
- not a regression fix (AFAICS), part of the new trait solver refactor
- :stable: “don’t check for overlap if it’s allowed regardless” rust#135524
- Authored by lcnr
- also beta-backport nominated
- No beta nominations for
T-types
this time. - No stable nominations for
T-types
this time.
PRs S-waiting-on-team
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 61 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 36 P-high, 100 P-medium, 21 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
P-high
beta regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
A quiet week with little change to the actual compiler performance. The biggest compiler regression was quickly recognized and reverted.
Triage done by @rylev. Revision range: 0f1e965f..1ab85fbd
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.1%, 1.8%] | 21 |
Regressions (secondary) | 0.5% | [0.0%, 2.0%] | 35 |
Improvements (primary) | -0.8% | [-2.7%, -0.3%] | 6 |
Improvements (secondary) | -10.2% | [-27.8%, -0.1%] | 13 |
All (primary) | 0.2% | [-2.7%, 1.8%] | 27 |
4 Regressions, 3 Improvements, 3 Mixed; 3 of them in rollups 44 artifact comparisons made in total
Regressions
Master bootstrap update #135268 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 3 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.2% | [0.2%, 0.2%] | 3 |
- Probably just noise, and if not, it’s not really worth investigating.
mir_transform: implement #[rustc_force_inline]
#134082 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.3%] | 10 |
Regressions (secondary) | 0.3% | [0.2%, 0.3%] | 15 |
Improvements (primary) | -0.1% | [-0.1%, -0.1%] | 1 |
Improvements (secondary) | -0.3% | [-0.4%, -0.3%] | 2 |
All (primary) | 0.2% | [-0.1%, 0.3%] | 11 |
- Looks like some regressions snuck back in since the last run - I’m unsure if something happened in a rebase to reintroduce them.
- The actual regressions are much smaller than the original perf run, and I don’t think they’re big enough to demand an investigation.
Add #[inline] to copy_from_slice #135384 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.1% | [1.1%, 1.1%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 1.1% | [1.1%, 1.1%] | 1 |
- From the PR “Small chaotic effect is expected, small binary size improvements oddly line up with the effect I was going for. Seems unlikely they’re connected though, I wouldn’t be surprised to see a different list of affected scenarios after merge.”
Rollup of 4 pull requests #135438 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.4%, 0.4%] | 1 |
Regressions (secondary) | 1.2% | [0.9%, 1.6%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
All (primary) | 0.4% | [0.4%, 0.4%] | 1 |
- https://github.com/rust-lang/rust/pull/135426 is the offending PR. Working with the author on a solution.
Improvements
Rollup of 6 pull requests #135260 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.4%, -0.3%] | 4 |
Improvements (secondary) | -0.5% | [-0.5%, -0.5%] | 1 |
All (primary) | -0.3% | [-0.4%, -0.3%] | 4 |
Remove special-casing for argument patterns in MIR typeck (attempt to fix perf regression of #133858) #135273 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -3.0% | [-17.4%, -0.2%] | 16 |
Improvements (secondary) | - | - | 0 |
All (primary) | -3.0% | [-17.4%, -0.2%] | 16 |
Add an InstSimplify for repetitive array expressions #135274 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -14.7% | [-27.9%, -1.3%] | 9 |
All (primary) | - | - | 0 |
Mixed
best_blame_constraint
: Blame better constraints when the region graph has cycles from invariance or 'static
#133858 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 3.2% | [0.1%, 21.0%] | 17 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
All (primary) | 3.2% | [0.1%, 21.0%] | 17 |
- Partially reverted in https://github.com/rust-lang/rust/pull/135273
[mir-opt] GVN some more transmute cases #133324 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.1%, 1.4%] | 3 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.6% | [-3.0%, -0.2%] | 11 |
Improvements (secondary) | -0.3% | [-0.5%, -0.2%] | 7 |
All (primary) | -0.3% | [-3.0%, 1.4%] | 14 |
- Original perf run was deemed acceptable and the final perf run wasn’t as bad.
Rollup of 6 pull requests #135357 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.3%, 0.6%] | 4 |
Regressions (secondary) | 0.9% | [0.2%, 2.0%] | 7 |
Improvements (primary) | -0.5% | [-0.5%, -0.5%] | 1 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.2% | [-0.5%, 0.6%] | 5 |
Nominated Issues
- “Status of the riscv32im-risc0-zkvm-elf target” rust#135376
- Nominated by @nora (Noratrieb)
- This target was added in #134721 basically does not have a standard library, or we can make make a stub of it to make it compile, only to let the developer discover that the code is just not working (comment).
- The question is: do we want to allow this kind of target, without a real
std
? The alternative to this target would be using the existingriscv32im-unknown-none-elf
with a RISC0-provided crate for the system calls. - Also
T-libs
nominated, since this question is probably in their purview
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Initial support for auto traits with default bounds” rust#120706 (last review activity: 5 months ago)
- This was extensively reviewed by T-compiler, now needs a rebase
- Is otherwise good to go? cc: @Michael Goulet (compiler-errors) @lcnr
- “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: 12 months ago)
- cc @cjgillot
- “Improve parse item fallback” rust#125388 (last review activity: 7 months ago)
- cc: @Esteban Küber
- “Silence errors in expressions caused by bare traits in paths in 2021 edition” rust#125784 (last review activity: 7 months ago)
- cc: @Esteban Küber for a rebase then cc: @_León Orell Liehr (fmease)
- “Do not eagerly reject inference vars when trying to resolve method calls.” rust#126316 (last review activity: 7 months ago)
- cc @lcnr (@oli a rebase when you have a chance)
- “collect doc alias as tips during resolution” rust#127721 (last review activity: 6 months ago)
- cc @Esteban Küber (btw author should also rebase)
Next meeting’s agenda draft: hackmd link