T Compiler Meeting Agenda 2025 01 16

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

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-gnucompiler-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)
  • Accepted MCPs
  • MCPs blocked on unresolved concerns
  • 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, and tail-call target features” rust#131080
    • “Lint on combining #[no_mangle] and #[export_name]rust#131558
  • 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_guaranteesrust#130628
    • “Stabilize const ptr::write* and mem::replacerust#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 as Allow 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

T-types stable / T-types beta

  • No beta nominations for T-types this time.
  • No stable nominations for T-types this time.

PRs S-waiting-on-team

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

  • No P-critical issues for T-compiler this time.

T-types

  • No P-critical issues for T-types this time.

P-high regressions

P-high beta regressions

  • No P-high beta regressions this time.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs 2025-01-14

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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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

Improvements

Rollup of 6 pull requests #135260 (Comparison Link)

(instructions:u)meanrangecount
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)meanrangecount
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)meanrangecount
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)meanrangecount
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

[mir-opt] GVN some more transmute cases #133324 (Comparison Link)

(instructions:u)meanrangecount
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

Rollup of 6 pull requests #135357 (Comparison Link)

(instructions:u)meanrangecount
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

T-compiler

  • “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 existing riscv32im-unknown-none-elf with a RISC0-provided crate for the system calls.
    • Also T-libs nominated, since this question is probably in their purview

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “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