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
- WG-async design meeting time:2025-11-27T13:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Parse unstable keywords for experimental syntax” compiler-team#945 (Zulip)
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “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 13 days ago)
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 4 months ago)
- “Promote tvOS/watchOS/visionOS to Tier 2” compiler-team#918 (Zulip) (last review activity: about 49 days ago)
- “Rename
hexagon-unknown-{none-elf,linux-musl}targets” compiler-team#921 (Zulip) (last review activity: about 41 days ago) - “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) (last review activity: about 41 days ago) - “Stop bumping the bootstrap version on every rustc release” compiler-team#925 (Zulip) (last review activity: about 41 days ago)
- Pending FCP requests (check your boxes!)
- merge: Promote
riscv64a23-unknown-linux-gnuto Tier 2 with host tools (compiler-team#910)- @|125250 @|119031 @|426609 @|116122 @|116118 @|259697 @_|444933
- concerns: no-hardware-available (by davidtwco) unclear-justification (by jieyouxu)
- merge: Destabilise target-spec-json (compiler-team#944)
- @|125250 @|119031 @|116118 @|353056
- no pending concerns
- merge: sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets (rust#123617)
- no pending checkboxes
- concerns: stabilization-scope (by wesleywiser)
- merge: Stabilize stack-protector (rust#146369)
- @|116266 @|119031 @|426609 @|444933
- concerns: mitigation-enforcement (by Noratrieb)
- merge: Revert “Do not check privacy for RPITIT.” (rust#146470)
- @|116009 @|116883 @_|125270
- concerns: is my understanding correct (by tmandry)
- “Fix ICE when applying test macro to crate root” rust#147841
- merge: Stabilize the
supertrait_item_shadowingfeature (rust#148605)- @|116266 @|116009 @|124288 @|326176 @_|232957
- concerns: pending-reference-pr (by traviscross) rename-lints (by traviscross)
- merge: Warn on codegen attributes on required trait methods (rust#148756)
- @_|116009
- concerns: jackh726-concern (by nikomatsakis)
- merge: Promote
- Things in FCP (make sure you’re good with it)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: lose-debuginfo-data
- concern: inhibit-opts
- concern: impl-at-mir-level
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip)
- concern: documentation
- concern: continued-maintainer-interest
- “Proposal for a dedicated test suite for the parallel frontend” compiler-team#906 (Zulip)
- concern: can-we-just-enhance-ui-suite
- concern: name-a-specific-reason
- “Not linting irrefutable_let_patterns on let chains” rust#146832
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Add support for specifying split-debuginfo=unpacked output directory” compiler-team#871 (Zulip)
- “Begin enforcing Tier 2 target maintainer requirements” compiler-team#896 (Zulip)
- “Experiment with replacing specialization in libcore with downcasting” compiler-team#904 (Zulip)
- “target tier 3 support for hexagon-unknown-qurt” compiler-team#919 (Zulip)
- “Omit suggestions when spans overlap” compiler-team#929 (Zulip)
- “Use v0 mangling by default on nightly” compiler-team#938 (Zulip)
- “remove support for
typeof” compiler-team#940 (Zulip) - “Contracts: primitive ownership assertions:
ownedandalloc_block” compiler-team#942 (Zulip)
- MCPs blocked on unresolved concerns
- “Allow using prebuilt sanitizer libraries” compiler-team#943 (Zulip)
- concern: what-about-combinatorics
- concern: why-not-third-party-tool
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 5 months ago)
- concern: path-to-stabilization
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 51 days ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 4 months ago)
- concern: proposal-wording
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip) (last review activity: about 49 days ago)- concern: nonsystematic-breakage
- concern: version-churn
- concern: why-not-ports-rustc
- “Remove diagnostic translation infrastructure” compiler-team#924 (Zulip) (last review activity: about 41 days ago)
- concern: people-like-structs
- “Doc comments and attributes on macro arms” compiler-team#935 (Zulip) (last review activity: about 20 days ago)
- concern: lang
- “Allow using prebuilt sanitizer libraries” compiler-team#943 (Zulip)
- Finalized FCPs (disposition merge)
- “Update bundled musl to 1.2.5” rust#142682
- Blog post annnouncement at blog.rust-lang.org#1641
- I (@_apiraino) approved the blog post PR as it seems ok, if anyone else wants to give a second look, feel free to do so.
- “Fix backtraces with
-C panic=aborton linux; emit unwind tables by default” rust#143613 - “Stabilize
-Zremap-path-scope” rust#147611
- “Update bundled musl to 1.2.5” rust#142682
- Other teams finalized FCPs
- “parser/lexer: bump to Unicode 17, use faster unicode-ident” rust#148321
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-compilerthis time.
- No beta nominations for
T-typesthis time. - No stable nominations for
T-typesthis time.
PRs S-waiting-on-t-compiler
- “library: core: document layout guarantee of
TypeId” rust#148265- xxx
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 58 T-compiler P-high issues
- 1 P-critical, 1 P-high, 8 P-medium, 1 P-low regression-from-stable-to-beta
- 1 P-critical, 0 P-high, 2 P-medium, 1 P-low regression-from-stable-to-nightly
- 0 P-critical, 31 P-high, 100 P-medium, 25 P-low regression-from-stable-to-stable
P-critical
- “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
- “1.92 regression in PyO3: unable to determine layout for … because … cannot be normalized” rust#149081
- (see above)
P-high regressions
- No
P-highbeta 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-highnightly regressions this time.
Performance logs
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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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) | mean | range | count |
|---|---|---|---|
| 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
- None
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “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