T Compiler Meeting Agenda 2025 11 27

T-compiler Meeting Agenda 2025-11-27

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

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Fix the issue of unused assignment from MIR liveness checking” rust#149072
    • Authored by chenyukang
    • Part of the work to fix #142390, see summary last week
    • Voting Zulip topic, seems greenlit
  • :beta: “Skip unused variables warning for unreachable code” rust#149096
    • Authored by chenyukang
    • Part of the work to fix #142390, see summary last week
    • Voting Zulip topic, the jury is still out :-)
  • :beta: “Handle cycles when checking impl candidates for doc(hidden)rust#149185
    • Authored by Jules-Bertholet
    • Fixes #149092, a regression where rustc would hang on invalid code (stable rustc would correctly produce an error)
    • Voting Zulip topic, greenlit
  • 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-t-compiler

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

  • “1.92 regression in PyO3: unable to determine layout for … because … cannot be normalized” rust#149081
    • Zulip discussion
    • This has a big impact and seems we do not have an owner yet
    • Affects PyO3 in uncommon conditions (repro: compile a dependency with debug mode but optimizations on)
    • Py03 maintainer seems to have worked around the issue in https://github.com/PyO3/pyo3/pull/5638
    • Reverting th culprit PR #147793 might not be trivial
    • There is a way out detailed by @lcnr in #149283 but it’s labelled as E-hard

T-types

  • “1.92 regression in PyO3: unable to determine layout for … because … cannot be normalized” rust#149081
    • (see above)

P-high regressions

P-high beta regressions

  • No P-high beta regressions this time.
  • “regression: temporary value dropped while borrowed” rust#148974
    • This looks like an intended/accepted regression from #145838, affects an unusually big number (25) of crates
    • Question: we don’t need to open issues on other repos, right?

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

2025-11-25 Triage Log

Only a handful of performance-related changes landed this week. The largest one was changing the default name mangling scheme in nightly to the v0 version, which produces slightly larger symbol names, so it had a small negative effect on binary sizes and compilation time.

Triage done by @kobzol. Revision range: 6159a440..b64df9d1

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.9%[0.3%, 2.7%]48
Regressions (secondary)0.9%[0.2%, 2.1%]25
Improvements (primary)-0.5%[-6.8%, -0.1%]33
Improvements (secondary)-0.5%[-1.4%, -0.1%]53
All (primary)0.4%[-6.8%, 2.7%]81

1 Regression, 2 Improvements, 5 Mixed; 1 of them in rollups 28 artifact comparisons made in total

Regressions

Turn moves into copies after copy propagation #147804 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.6%[0.1%, 0.9%]6
Regressions (secondary)0.8%[0.8%, 0.8%]1
Improvements (primary)--0
Improvements (secondary)--0
All (primary)0.6%[0.1%, 0.9%]6
  • The perf. regression was deemed acceptable, as this fixes miscompilations.
  • Marked as triaged.

Improvements

Bump compiler dependencies #148831 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.3%[-0.6%, -0.1%]27
Improvements (secondary)-0.4%[-1.3%, -0.1%]36
All (primary)-0.3%[-0.6%, -0.1%]27

Rollup of 9 pull requests #149222 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.2%[-0.2%, -0.2%]3
Improvements (secondary)--0
All (primary)-0.2%[-0.2%, -0.2%]3

Mixed

Update wasm-related dependencies in CI #149037 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.4%[0.4%, 0.4%]1
Regressions (secondary)0.5%[0.2%, 0.9%]9
Improvements (primary)-2.8%[-2.8%, -2.8%]1
Improvements (secondary)-0.1%[-0.1%, -0.1%]1
All (primary)-1.2%[-2.8%, 0.4%]2
  • Noise.
  • Already marked as triaged.

sess: default to v0 symbol mangling on nightly #89917 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.2%, 1.5%]31
Regressions (secondary)0.7%[0.2%, 1.6%]14
Improvements (primary)-0.4%[-0.4%, -0.4%]1
Improvements (secondary)-0.2%[-0.6%, -0.1%]6
All (primary)0.7%[-0.4%, 1.5%]32
  • This PR caused binary size regressions, which is expected, as the v0 mangling scheme produces larger symbols than the legacy mangling scheme, in general.
  • The compile-time regressions were likely caused by the same thing, more symbol string handling and more time spent in LLVM due to processing longer symbols.
  • Marked as triaged.

See if this is the time we can remove layout::size_align #149109 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.4%[0.1%, 0.6%]4
Improvements (primary)--0
Improvements (secondary)-0.7%[-1.3%, -0.2%]8
All (primary)--0
  • Just noise returning to steady state.
  • Already marked as triaged.

library: upgrade to hashbrown v0.16.1 #149159 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.4%, 1.4%]4
Regressions (secondary)1.5%[1.5%, 1.5%]1
Improvements (primary)-0.2%[-0.2%, -0.2%]2
Improvements (secondary)-0.3%[-0.5%, -0.1%]25
All (primary)0.4%[-0.2%, 1.4%]6
  • More improvements than regressions.
  • Marked as triaged.

Fix MaybeUninit codegen using GVN #147827 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.1%[0.1%, 0.1%]1
Regressions (secondary)0.3%[0.1%, 0.5%]6
Improvements (primary)-7.3%[-7.3%, -7.3%]1
Improvements (secondary)--0
All (primary)-3.6%[-7.3%, 0.1%]2
  • Tiny regressions on secondary benchmarks, but a large (and real) win on the cranelift-codegen opt benchmark.
  • This should ideally produce better codegen.
  • Marked as triaged.

Nominated Issues

T-compiler

  • None

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • “Compute jump threading opportunities in a single pass” rust#142821 (last review activity: 3 months ago)
    • cc: @Ben Kimock (Saethlin)
  • “RDR: avoid rebuilding dependent crates after comment changes” rust#143249 (last review activity: about 58 days ago)
    • cc @bjorn3

Next meetings’ agenda draft: hackmd link