T Compiler Meeting Agenda 2025 05 22

T-compiler Meeting Agenda 2025-05-22

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!)
  • 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: 8 months ago)
    • “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 7 months ago)
    • “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 7 months ago)
    • “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip) (last review activity: 2 months 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: 4 months ago)
    • “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: 2 months ago)
    • “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 2 months ago)
    • “Add one more “late metadata”/“digest” file to rlib archives” compiler-team#853 (Zulip) (last review activity: 2 months ago)
    • “Unify ui test inline error annotation style” compiler-team#859 (Zulip) (last review activity: about 34 days ago)
    • “Introduce debug information to statements in MIR” compiler-team#867 (Zulip) (last review activity: about 19 days ago)
    • “Add support for specifying split-debuginfo=unpacked output directory” compiler-team#871 (Zulip) (last review activity: about 19 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
    • “Add target_env = "macabi" and target_env = "sim"rust#139451
    • “Use lld by default on x86_64-unknown-linux-gnu stable” rust#140525
    • “Split up the unknown_or_malformed_diagnostic_attributes lint” rust#140717
  • 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
    • “Stabilize -Zdwarf-version as -Cdwarf-versionrust#136926
  • Other teams finalized FCPs
    • “Split elided_lifetime_in_paths into tied and untied” rust#120808
    • “Implement a lint for implicit autoref of raw pointer dereference - take 2” rust#123239
    • “Allow dropping dyn Trait principal” rust#126660
    • “Make missing_fragment_specifier an unconditional error” rust#128425
    • “lexer: Treat more floats with empty exponent as valid tokens” rust#131656
    • “Stabilize let chains in the 2024 edition” rust#132833
    • “de-stabilize bench attribute” rust#134273
    • “Partially stabilize LoongArch target features” rust#135015
    • “aarch64-softfloat: forbid enabling the neon target feature” rust#135160
    • “Remove backticks from ShouldPanic::YesWithMessage’s TrFailedMsgrust#136160
    • “Remove i128 and u128 from improper_ctypes_definitionsrust#137306
    • “Guarantee behavior of transmuting Option::<T>::None subject to NPO” rust#137323
    • “Stabilize the avx512 target features” rust#138940
    • “Make closure capturing have consistent and correct behaviour around patterns” rust#138961
    • “make abi_unsupported_vector_types a hard error” rust#139309
    • “Error on recursive opaque ty in HIR typeck” rust#139419
    • “Finalize repeat expr inference behaviour with inferred repeat counts” rust#139635
    • “check types of const param defaults” rust#139646
    • “Unify sidebar buttons to use the same image” rust#140135
    • “Make well-formedness predicates no longer coinductive” rust#140208
    • “Temporary lifetime extension through tuple struct and tuple variant constructors” rust#140593

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Revert “Fix linking statics on Arm64EC #140176"” rust#141024
    • Authored by jieyouxu
    • Reverts #140176
    • Nomination Zulip topic (in favor)
    • if approved, we break target arm64ec-pc-windows-msvc. If declined, people see a linker warning
  • :beta: “[win][arm64] Remove ‘Arm64 Hazard’ undocumented MSVC option and instead disable problematic test” rust#141045
    • Authored by dpaoliello
    • Zulip topic (in favor)
    • Merged 3 days ago. Seems good to backport, a undocumented MSVC linker flag caused issues with LLD for aarch64-pc-windows-msvc (Tier 2)
  • :beta: “Do not call name() on rpitit assoc_item” rust#141308
    • Authored by spastorino
    • Zulip topic (in favor)
    • Low risk backport, the ICE was reported by a user. Merged yesterday.
  • No stable nominations for T-compiler this time.

T-types beta / T-types stable

  • 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

  • “When LTO is enabled, miscompiles (x86_64-apple-darwin, at least) and failures to link due to unknown relocation type in switch tables (AArch64 Linux/Android, at least)” rust#141306
    • newly opened regression where setting LTO=true breaks linking on a number of platforms (aarch64-unknown-linux-gnu, aarch64-linux-android, x86_64-apple-darwin), unfortunately on stable 1.87
    • reported by 2 projects (for now), CI fails, need to pin previous rust version
    • a bisection on these platform would be mostly welcome, no MCVE yet

T-types

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

P-high regressions

P-high beta regressions

  • “Performance regression in nightly with target-cpu=native on znver4” rust#139370
    • it’s being investigated. it’s reached beta (I think)

Unassigned P-high nightly regressions

  • None

Performance logs

triage logs 2025-05-21

A relatively quiet week, likely caused by not that many PRs being merged as many contributors were at RustWeek and the All Hands event. There were several nice wins in trait solving; the benchmark suite now contains benchmarks that use the new trait solver, so we can now focus on optimizing its performance in the near future.

Triage done by @kobzol. Revision range: 718ddf66..59372f2c

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.6%[0.1%, 1.8%]25
Regressions (secondary)0.9%[0.1%, 3.1%]23
Improvements (primary)-0.3%[-0.6%, -0.1%]33
Improvements (secondary)-2.2%[-9.2%, -0.1%]26
All (primary)0.1%[-0.6%, 1.8%]58

2 Regressions, 5 Improvements, 3 Mixed; 3 of them in rollups 41 artifact comparisons made in total

Regressions

Remove manual WF hack #140557 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.3%[0.1%, 0.6%]34
Regressions (secondary)0.2%[0.1%, 0.2%]5
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.3%[0.1%, 0.6%]34
  • Small genuine regression, but the PR removed hack from the type system code, which is worth it.
  • Marked as triaged.

Add std::io::Seek instance for std::io::Take #138023 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)2.0%[1.0%, 3.0%]2
Regressions (secondary)1.0%[1.0%, 1.0%]1
Improvements (primary)--0
Improvements (secondary)--0
All (primary)2.0%[1.0%, 3.0%]2
  • Noise produced by newly added benchmarks.
  • Marked as triaged.

Improvements

Rollup of 7 pull requests #141011 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.8%[-0.9%, -0.8%]4
Improvements (secondary)-0.4%[-0.6%, -0.2%]8
All (primary)-0.8%[-0.9%, -0.8%]4

trait_sel: deep reject match_normalize_trait_ref #140978 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)--0
Improvements (secondary)-5.7%[-9.3%, -0.1%]9
All (primary)--0

Rollup of 8 pull requests #141113 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.1%[-0.1%, -0.1%]4
Improvements (secondary)-0.0%[-0.0%, -0.0%]2
All (primary)-0.1%[-0.1%, -0.1%]4

move expensive layout sanity check to debug assertions #141039 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.2%[-0.3%, -0.1%]22
Improvements (secondary)-0.7%[-1.6%, -0.4%]8
All (primary)-0.2%[-0.3%, -0.1%]22

Fast path for register_region_obligation #141129 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.2%[-0.3%, -0.1%]30
Improvements (secondary)-0.5%[-1.0%, -0.0%]12
All (primary)-0.2%[-0.3%, -0.1%]30

Mixed

Use the new solver in the impossible_predicates #136988 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.9%[0.4%, 1.1%]5
Regressions (secondary)0.5%[0.3%, 1.0%]27
Improvements (primary)-0.1%[-0.1%, -0.1%]1
Improvements (secondary)-0.1%[-0.2%, -0.1%]6
All (primary)0.8%[-0.1%, 1.1%]6
  • The regressions are mostly in helloworld and tiny benchmarks, and they are relatively small.
  • We generally expect the perf. of the new solver to improve over time.
  • Marked as triaged.

Optimize ToString implementation for integers #136264 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.3%, 1.1%]2
Regressions (secondary)--0
Improvements (primary)-0.2%[-0.2%, -0.2%]2
Improvements (secondary)--0
All (primary)0.3%[-0.2%, 1.1%]4
  • Regression on a single benchmark that is new and doesn’t have proper noise bounds yet.
  • Also a nice win on the fmt-write-str runtime benchmark, which should be expected here!
  • Marked as triaged.

Rollup of 8 pull requests #141232 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.8%[0.4%, 1.2%]8
Regressions (secondary)0.9%[0.2%, 3.2%]15
Improvements (primary)--0
Improvements (secondary)-0.7%[-1.0%, -0.0%]4
All (primary)0.8%[0.4%, 1.2%]8
  • The binary size and the biggest icount regressions come from #140628.
  • Marked as triaged, following up on #140628.

Nominated Issues

T-compiler

  • “Should -Cforce-frame-pointers favor the target or CLI?” rust#140774
    • nominated by @Jubilee
    • The proposal is to document a de-facto incidental decision taken 3 years ago in #86652. The flag -Cforce-frame-pointers=false in most cases is overriden (set to true) by the ABI of the target, removing all frame pointers in the current session.
    • which is actually an optimization in terms of register allocation and the like, thus one that depends on the compiler to implement
    • @Jubilee asks if there should be an FCP or, else, what we prefer to do

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • document reqd. approvals for target changes by davidtwco · Pull Request #834 · rust-lang/rust-forge
    • cc @Wesley Wiser when you have a sec for a quick check
  • “Implement asymmetrical precedence for closures and jumps” rust#134847 (last review activity: 4 months ago)
    • cc @fmease
  • “Tweak VecCache to improve performance” rust#138405 (last review activity: 2 months ago)
    • cc @nora (Noratrieb) (but feel free to re-assign)
  • “feat: add succinct-zkvm os and target” rust#138463
    • cc @Wesley Wiser
  • “Move coercion hack from coerce_unsized to check_castrust#138542 (last review activity: 2 months ago)
    • cc @lcnr
  • “Fix PostBorrowckAnalysis for old solver” rust#135899 (last review activity: about 35 days ago)
    • cc: @Michael (compiler-errors) Goulet / @lcnr
  • “Add regression test for nested replacement ranges in cfg_eval” rust#139286 (last review activity: about 49 days ago)
    • cc @fmease

Next meetings’ agenda draft: hackmd link