T-compiler Meeting Agenda 2025-11-06
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-0625T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Doc comments and attributes on macro arms” compiler-team#935 (Zulip)
- concern: lang
- “Doc comments and attributes on macro arms” compiler-team#935 (Zulip)
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: 8 months ago)
- “Unify ui test inline error annotation style” compiler-team#859 (Zulip) (last review activity: 2 months ago)
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip) (last review activity: 4 months ago)
- “Add support for specifying split-debuginfo=unpacked output directory” compiler-team#871 (Zulip) (last review activity: 6 months ago)
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 3 months ago)
- “Experiment with replacing specialization in libcore with downcasting” compiler-team#904 (Zulip) (last review activity: 3 months ago)
- “Promote tvOS/watchOS/visionOS to Tier 2” compiler-team#918 (Zulip) (last review activity: about 28 days ago)
- “Rename
hexagon-unknown-{none-elf,linux-musl}targets” compiler-team#921 (Zulip) (last review activity: about 20 days ago) - “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) (last review activity: about 20 days ago) - “Stop bumping the bootstrap version on every rustc release” compiler-team#925 (Zulip) (last review activity: about 20 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: 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 @|116122 @_|444933
- concerns: mitigation-enforcement (by Noratrieb)
- merge: Not linting irrefutable_let_patterns on let chains (rust#146832)
- @|116009 @|116883 @_|125270
- no pending concerns
- merge: Stabilize
-Zremap-path-scope(rust#147611)- @|119031 @|248906 @|116122 @|444933
- no pending concerns
- “Fix ICE when applying test macro to crate root” rust#147841
- 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: impl-at-mir-level
- concern: inhibit-opts
- “Proposal for a dedicated test suite for the parallel frontend” compiler-team#906 (Zulip)
- concern: name-a-specific-reason
- concern: can-we-just-enhance-ui-suite
- “target tier 3 support for hexagon-unknown-qurt” compiler-team#919 (Zulip)
- “Omit suggestions when spans overlap” compiler-team#929 (Zulip)
- “Use
annotate-snippetsas the default emitter on nightly” compiler-team#937 (Zulip) - “Use v0 mangling by default on nightly” compiler-team#938 (Zulip)
- “remove support for
typeof” compiler-team#940 (Zulip) - “error out when
repr(align)exceeds COFF limit” rust#142638 - “Emit error when using path-segment keyword as cfg pred” rust#146978
- “const-eval: fix and re-enable pointer fragment support” rust#148259
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Turn emscripten-wasm-eh unwinding ABI on by default” compiler-team#920 (Zulip)
- “Run main rust-analyzer tests in rust-lang/rust CI” compiler-team#923 (Zulip)
- “Replace
rustc_target::specTarget::archstring with enum” compiler-team#926 (Zulip) - “Use
llvm-bitcode-linkeras the default linker fornvptx64-nvidia-cuda” compiler-team#927 (Zulip) - “Move annotation for profiling compiler-generated moves and copies.” compiler-team#928 (Zulip)
- “Rename
//@ add-core-stubsto//@ add-minicore” compiler-team#930 (Zulip) - “Move unreachable code lint from HIR type check to a proper lint” compiler-team#931 (Zulip)
- “Promote
riscv64a23-unknown-linux-gnuto Tier 2 without host tools” compiler-team#932 (Zulip) - “Switch to v0 mangling for symbols exceeding 64KB characters on targets generated PDB debug info” compiler-team#934 (Zulip)
- “Creating a new maintainable debuginfo test suite” compiler-team#936 (Zulip)
- MCPs blocked on unresolved concerns
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 4 months ago)
- concern: path-to-stabilization
- “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)
- concern: needs-a-blog-post
- concern: broad-change-needs-tlang-buy-in-possibly-fcp
- concern: needs-a-sufficiently-long-deprecation-timeline
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 30 days ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 3 months ago)
- concern: proposal-wording
- “Promote
armv7-unknown-linux-musleabihfto tier 2 with host tools” compiler-team#888 (Zulip) (last review activity: 3 months ago)- concern: lack-of-maintainers
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip) (last review activity: about 28 days ago)- concern: why-not-ports-rustc
- concern: version-churn
- concern: nonsystematic-breakage
- “Add Wild linker as a preview component for x86_64 and AArch64 Linux GNU” compiler-team#917 (Zulip) (last review activity: about 28 days ago)
- concern: unofficial project
- “Remove diagnostic translation infrastructure” compiler-team#924 (Zulip) (last review activity: about 20 days ago)
- concern: people-like-structs
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 4 months ago)
- Finalized FCPs (disposition merge)
- “Update bundled musl to 1.2.5” rust#142682
- “Fix backtraces with
-C panic=aborton linux; emit unwind tables by default” rust#143613 - “Stabilize -Zno-jump-tables into -Cjump-tables=bool” rust#145974
- “Remove current code for embedding command-line args in PDB” rust#147022
- Other teams finalized FCPs
- “Forbid freely casting lifetime bounds of dyn-types” rust#136776
- “Fix accidental type inference in array coercion” rust#140283
- “Document MaybeUninit bit validity” rust#140463
- “Allow
&raw [mut | const]for union field in safe code” rust#141469 - “prefer alias candidates for sizedness + auto trait goals " rust#144064
- “Do not materialise X in [X; 0] when X is unsizing a const” rust#145277
- “Allow borrowing array elements from packed structs with ABI align <= packed align” rust#145419
- “Reject invalid literal suffixes in tuple indexing, tuple struct indexing, and struct field name position” rust#145463
- “Opportunistically split
!=to successfully parse never type” rust#145536 - “docs(style): Specify the frontmatter style” rust#145617
- “Stabilize
std::panic::Location::file_as_c_str” rust#145664 - “the
#[track_caller]shim should not inherit#[no_mangle]” rust#145724 - “Temporary lifetime extension for blocks” rust#146098
- “Deny-by-default never type lints” rust#146167
- “Allow specifying multiple bounds for same associated item, except in trait objects” rust#146593
- “
-Znext-solverinstantiate predicate binder without recanonicalizing goal” rust#146725 - “Allow passing
exprmetavariable tocfg” rust#146961 - “FCW for repr(C) enums whose discriminant values do not fit into a c_int or c_uint” rust#147017
- “[beta-1.91] Warn on future errors from temporary lifetimes shortening in Rust 1.92” rust#147056
- “Add warn-by-default lint for visibility on
const _declarations” rust#147136 - “unused_must_use: Don’t warn on
Result<(), Uninhabited>orControlFlow<Uninhabited, ()>” rust#147382
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Fix
wasm_import_moduleattribute cross-crate” rust#148363- Authored by alexcrichton
- Voting Zulip topic, in favor
- Fixes #148347 a P-high regression. As Alex points out, a very small fix
- :stable: “Fix
wasm_import_moduleattribute cross-crate” rust#148363- Authored by alexcrichton
- Voting Zulip topic, mostly in favor though not justifying a dot release on its own
- For the record: I (@_apiraino) also find Jubilee’s argument compelling (comment)
honestly “a tier 2 target has runtime errors with common compiler options” does sound pretty close to worth a patch release on its own. even if it is technically within our support tier promises it is Very pushing it. but I am also sympathetic to not bothering if we don’t have other reasons.
- For the record: I (@_apiraino) also find Jubilee’s argument compelling (comment)
- FWIW: A Fastly employee chimed in (comment) pointing out the impact of this issue
- We have so far 2 stable-backport: #148322 (illumos cargo breakage, approved) and #148363 (wasm linker breakage, trending towards being stable-approved). T-release is waiting on us down at https://rust-lang.zulipchat.com/#narrow/channel/241545-t-release/topic/1.2E91.2E1/near/553918718 to then take a decision about a 1.91.1
- No beta nominations for
T-typesthis time. - No stable nominations for
T-typesthis time.
PRs S-waiting-on-t-compiler
- No PRs waiting on
T-compilerthis time. - Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 58 T-compiler P-high issues
- 1 P-critical, 1 P-high, 7 P-medium, 1 P-low regression-from-stable-to-beta
- 0 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
- No
P-criticalissues forT-compilerthis time.
- No
P-criticalissues forT-typesthis time.
P-high regressions
- No
P-highbeta regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
Mostly positive week. We saw a great performance win implemented by #148040 and #148182, which optimizes crates with a lot of trivial constants.
Triage done by @kobzol. Revision range: 23fced0f..35ebdf9b
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.8% | [0.1%, 2.9%] | 22 |
| Regressions (secondary) | 0.5% | [0.1%, 1.7%] | 48 |
| Improvements (primary) | -2.8% | [-16.4%, -0.1%] | 102 |
| Improvements (secondary) | -1.9% | [-8.0%, -0.1%] | 51 |
| All (primary) | -2.1% | [-16.4%, 2.9%] | 124 |
4 Regressions, 6 Improvements, 7 Mixed; 7 of them in rollups 36 artifact comparisons made in total
Regressions
Rollup of 14 pull requests #148202 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.7% | [0.3%, 2.9%] | 9 |
| Regressions (secondary) | 0.7% | [0.2%, 1.6%] | 10 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 1.7% | [0.3%, 2.9%] | 9 |
- The new solver regressions come from #147840.
- The bulk of the regression comes from #147185. The changes trigger a lint in
syn, which causes many more errors to be emitted, which caused the regressions. - Marked as triaged.
Update cc-rs to 1.2.39 #146186 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.3%, 3.7%] | 259 |
| Regressions (secondary) | 0.9% | [0.0%, 3.0%] | 287 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.7% | [0.3%, 3.7%] | 259 |
- Unexpected regression from updating cc-rs, perhaps because it stopped passing
-fltotojemalloc. - Reverted in https://github.com/rust-lang/rust/pull/148298.
Rollup of 5 pull requests #148241 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 3.1% | [3.1%, 3.1%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 3.1% | [3.1%, 3.1%] | 1 |
- Noise.
- Already marked as triaged.
compiletest: rename add-core-stubs/core-stubs-compile-flags to add-minicore/minicore-compile-flags #148305 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 3.1% | [3.1%, 3.1%] | 1 |
| Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 3.1% | [3.1%, 3.1%] | 1 |
- Noise.
- Marked as triaged.
Improvements
Rollup of 4 pull requests #148245 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
Move wasm throw intrinsic back to unwind #148291 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -3.0% | [-3.0%, -3.0%] | 1 |
| Improvements (secondary) | -0.8% | [-0.8%, -0.8%] | 1 |
| All (primary) | -3.0% | [-3.0%, -3.0%] | 1 |
Revert “Update cc-rs to 1.2.39 #146186” #148298 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.7% | [-3.6%, -0.3%] | 251 |
| Improvements (secondary) | -0.9% | [-2.9%, -0.0%] | 288 |
| All (primary) | -0.7% | [-3.6%, -0.3%] | 251 |
Adjust successor iterators. #148157 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.4%, -0.1%] | 19 |
| Improvements (secondary) | -0.2% | [-0.4%, -0.0%] | 21 |
| All (primary) | -0.2% | [-0.4%, -0.1%] | 19 |
Rollup of 10 pull requests #148356 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -3.0% | [-3.0%, -3.0%] | 1 |
| Improvements (secondary) | -0.4% | [-1.0%, -0.1%] | 10 |
| All (primary) | -3.0% | [-3.0%, -3.0%] | 1 |
Rollup of 7 pull requests #148412 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -2.8% | [-2.8%, -2.8%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -2.8% | [-2.8%, -2.8%] | 1 |
Mixed
Add a fast path for lowering trivial consts #148040 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.4%] | 14 |
| Regressions (secondary) | 0.5% | [0.0%, 2.1%] | 36 |
| Improvements (primary) | -3.7% | [-15.5%, -0.1%] | 71 |
| Improvements (secondary) | -4.0% | [-8.2%, -0.0%] | 22 |
| All (primary) | -3.0% | [-15.5%, 0.4%] | 85 |
- Improvements greatly outweigh regressions.
- Marked as triaged.
Skip codegen_crate call in check mode #148035 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.2% | [1.2%, 1.2%] | 1 |
| Regressions (secondary) | 1.2% | [1.2%, 1.2%] | 1 |
| Improvements (primary) | -0.8% | [-0.8%, -0.8%] | 3 |
| Improvements (secondary) | -0.3% | [-0.7%, -0.2%] | 11 |
| All (primary) | -0.3% | [-0.8%, 1.2%] | 4 |
- The
synregression is noise. - Already marked as triaged.
Accept trivial consts based on trivial consts #148182 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 2 |
| Improvements (primary) | -0.7% | [-1.1%, -0.2%] | 13 |
| Improvements (secondary) | -1.4% | [-1.4%, -1.4%] | 1 |
| All (primary) | -0.7% | [-1.1%, -0.2%] | 13 |
- Tiny regression on a secondary benchmark, improvements outweigh regressions.
- Marked as triaged.
Remove QPath::LangItem #148193 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.1% | [0.2%, 2.9%] | 3 |
| Regressions (secondary) | 0.4% | [0.1%, 1.3%] | 21 |
| Improvements (primary) | -0.2% | [-0.4%, -0.1%] | 18 |
| Improvements (secondary) | -0.1% | [-0.2%, -0.0%] | 2 |
| All (primary) | -0.0% | [-0.4%, 2.9%] | 21 |
- The single primary regression is noise, otherwise it’s a few small wins on primary benchmarks and a few small losses on secondary ones. Overall a wash. And since this is compiler refactoring/cleanup, there’s probably not that much to be done anyway.
- Marked as triaged.
Rollup of 9 pull requests #148337 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.2% | [0.3%, 3.0%] | 5 |
| Regressions (secondary) | 0.2% | [0.1%, 0.3%] | 5 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
| All (primary) | 1.2% | [0.3%, 3.0%] | 5 |
Rollup of 3 pull requests #148425 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.2%] | 5 |
| Regressions (secondary) | 0.2% | [0.1%, 0.2%] | 15 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.2%] | 5 |
| All (primary) | 0.1% | [0.1%, 0.2%] | 5 |
- Tiny
doclosses caused likely either by stdlib doc changes introduced by #146260 or #148402 or both. - Marked as triaged.
Revert “unicode_data refactors RUST-147622” #148436 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.1%, 0.3%] | 5 |
| Improvements (primary) | -0.8% | [-1.0%, -0.4%] | 3 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.8% | [-1.0%, -0.4%] | 3 |
- Performance-wish it’s a wash, and this is a revert anyway.
- Marked as triaged.
Nominated Issues
- “library: core: document layout guarantee of
TypeId” rust#148265- We did a first round of discussion last week (on Zulip)
- T-compiler opinion, not the final decision, was that (comment) we are not yet ready to commit to a stability guarantee
- Further discussion ensued down at https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/TypeId.20minimum.20size.20guarantees/with/553234173, main points (AFAICS):
- The new form of this proposal (from comment, sample code on github) is a
unionwith a pointer to an additional hash (which can cover cases on arch where 16 bytes might not be enough)
- The new form of this proposal (from comment, sample code on github) is a
- Topic was also t-libs nominated but they basically defer to us (comment)
- We did a first round of discussion last week (on Zulip)
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Revert “Change prefetch to avoid deadlock”” rust#121910 (last review activity: 20 months ago)
- cc @cjgillot
- “Change codegen of LLVM intrinsics to be name-based, and add llvm linkage support for
bf16(xN)andi1xN” rust#140763 (last review activity: 4 months ago)- cc @Nikita Popov
- “Remove fewer Storage calls in CopyProp and GVN” rust#142531 (last review activity: 2 months ago)
- cc @cjgillot
- “Compute jump threading opportunities in a single pass” rust#142821 (last review activity: 3 months ago)
- cc: @Ben Kimock (Saethlin)
Next meetings’ agenda draft: hackmd link