T-compiler Meeting Agenda 2025-11-13
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-1325T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Allow using prebuilt sanitizer libraries” compiler-team#943 (Zulip)
- concern: what-about-combinatorics
- concern: why-not-third-party-tool
- “Allow using prebuilt sanitizer libraries” compiler-team#943 (Zulip)
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “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 34 days ago)
- “Rename
hexagon-unknown-{none-elf,linux-musl}targets” compiler-team#921 (Zulip) (last review activity: about 27 days ago) - “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) (last review activity: about 27 days ago) - “Remove diagnostic translation infrastructure” compiler-team#924 (Zulip) (last review activity: about 27 days ago)
- concern: people-like-structs
- “Stop bumping the bootstrap version on every rustc release” compiler-team#925 (Zulip) (last review activity: about 27 days ago)
- “Doc comments and attributes on macro arms” compiler-team#935 (Zulip) (last review activity: about 6 days ago)
- concern: lang
- 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)
- @|116266 @|123586 @|125250 @|116107 @|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: Not linting irrefutable_let_patterns on let chains (rust#146832)
- @|116009 @|116883 @_|125270
- no pending concerns
- “Fix ICE when applying test macro to crate root” rust#147841
- merge: Warn on codegen attributes on required trait methods (rust#148756)
- @|116009 @|116883 @_|125270
- no pending concerns
- merge: Promote
- Things in FCP (make sure you’re good with it)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: impl-at-mir-level
- concern: inhibit-opts
- concern: lose-debuginfo-data
- “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
- “target tier 3 support for hexagon-unknown-qurt” compiler-team#919 (Zulip)
- “Contracts: primitive ownership assertions:
ownedandblock” compiler-team#942 (Zulip) - “error out when
repr(align)exceeds COFF limit” rust#142638 - “Stabilize
-Zremap-path-scope” rust#147611 - “const-eval: fix and re-enable pointer fragment support” rust#148259
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “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)
- 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
- cc: @Wesley Wiser can you check MCP author’s reply?
- “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
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 37 days ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 3 months ago)
- concern: proposal-wording
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip) (last review activity: about 34 days ago)- concern: version-churn
- concern: nonsystematic-breakage
- concern: why-not-ports-rustc
- “Add Wild linker as a preview component for x86_64 and AArch64 Linux GNU” compiler-team#917 (Zulip) (last review activity: about 34 days ago)
- concern: unofficial project
- “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
- “Implement pin-project in pattern matching for
&pin mut|const T” rust#139751 - “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 - “Add new
function_casts_as_integerlint” rust#141470 - “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 - “stabilize extern_system_varargs” rust#145954
- “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 - “resolve: Preserve ambiguous glob reexports in crate metadata” rust#147984
- “Make deref_nullptr deny by default instead of warn” rust#148122
Backport nominations
T-compiler beta / T-compiler stable
- No beta nominations for
T-compilerthis time. - 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
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 59 T-compiler P-high issues
- 1 P-critical, 1 P-high, 8 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, 30 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 quiet week, with the majority of changes coming from the standard library work towards removal of Copy specialization (#135634).
Triage done by @simulacrum. Revision range: 35ebdf9b..055d0d6a
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.8% | [0.1%, 3.4%] | 144 |
| Regressions (secondary) | 0.8% | [0.1%, 2.1%] | 76 |
| Improvements (primary) | -0.7% | [-1.4%, -0.4%] | 12 |
| Improvements (secondary) | -0.3% | [-0.5%, -0.2%] | 9 |
| All (primary) | 0.7% | [-1.4%, 3.4%] | 156 |
3 Regressions, 1 Improvement, 7 Mixed; 3 of them in rollups 37 artifact comparisons made in total
Regressions
feat: Use annotate-snippets by default on nightly #148188 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.8% | [0.3%, 2.9%] | 21 |
| Regressions (secondary) | 0.4% | [0.2%, 0.6%] | 6 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.0% | [-0.0%, -0.0%] | 1 |
| All (primary) | 0.8% | [0.3%, 2.9%] | 21 |
Likely some opportunity for improvements in annotate-snippets, but not particularly large or widespresad regressions in our suite.
mgca: Add ConstArg representation for const items #139558 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.5%] | 24 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 6 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.2% | [0.1%, 0.5%] | 24 |
Required next step for min_generic_const_args, regressions are within range
to be acceptable.
Encode cfg trace, not its early counterpart to fix cross-crate doc(auto_cfg) #148660 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.1%, 0.3%] | 10 |
| Regressions (secondary) | 0.1% | [0.1%, 0.3%] | 8 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.2% | [0.1%, 0.3%] | 10 |
Bug fix. See https://github.com/rust-lang/rust/pull/148660#issuecomment-3505481311 for details.
Improvements
Liveness: Cache the set of string constants for suggestions. #147641 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.9% | [-1.4%, -0.5%] | 4 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.9% | [-1.4%, -0.5%] | 4 |
Mixed
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 |
Nothing particularly interesting: “Performance-wish it’s a wash, and this is a revert anyway.”
Add LLVM range attributes to slice length parameters #148350 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
| Regressions (secondary) | 0.7% | [0.1%, 2.0%] | 29 |
| Improvements (primary) | -0.3% | [-0.5%, -0.1%] | 6 |
| Improvements (secondary) | -0.3% | [-0.7%, -0.1%] | 27 |
| All (primary) | -0.3% | [-0.5%, 0.2%] | 7 |
Primary benchmarks seeing mostly improvements. See more detailed analysis.
Rollup of 4 pull requests #148472 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.5% | [0.1%, 0.9%] | 8 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.6% | [-0.6%, -0.5%] | 3 |
| All (primary) | - | - | 0 |
My sense is that the large workspace crate is probably weakly (sparsely?) bimodal given those results. Could be an interesting thing to dig into but not particularly worthwhile here.
Rollup of 6 pull requests #148507 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 2 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.5% | [-0.9%, -0.1%] | 8 |
| All (primary) | 0.2% | [0.2%, 0.2%] | 1 |
Regressions look likely to be bimodality to me.
Add LLVM realtime sanitizer #147935 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 1 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 5 |
| Improvements (primary) | -1.2% | [-1.2%, -1.2%] | 1 |
| Improvements (secondary) | -1.2% | [-1.2%, -1.2%] | 1 |
| All (primary) | -0.5% | [-1.2%, 0.1%] | 2 |
Regressions seem plausibly real, but the change doesn’t seem likely to be further tweakable to reduce them. Marking as triaged.
Rollup of 22 pull requests #148721 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.8% | [0.8%, 0.8%] | 2 |
| Regressions (secondary) | 0.2% | [0.0%, 0.3%] | 5 |
| Improvements (primary) | -0.2% | [-0.3%, -0.1%] | 2 |
| Improvements (secondary) | -0.5% | [-0.8%, -0.2%] | 2 |
| All (primary) | 0.3% | [-0.3%, 0.8%] | 4 |
Still searching for the cause of the regression.
stop specializing on Copy #135634 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.1%, 3.2%] | 110 |
| Regressions (secondary) | 0.8% | [0.1%, 1.8%] | 50 |
| Improvements (primary) | -0.9% | [-1.4%, -0.5%] | 2 |
| Improvements (secondary) | -0.4% | [-0.5%, -0.1%] | 7 |
| All (primary) | 0.7% | [-1.4%, 3.2%] | 112 |
Expected widespread changes, this is largely a soundness fix.
Nominated Issues
- None
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “[Debug Info] Generate typedef nodes for ptr/ref types (and msvc arrays)” rust#144394 (last review activity: 2 months ago)
- cc @Wesley Wiser lost a bit track on this one. Anything new after this comment?
- “minimally implement
is(RFC 3573), sans parsing” rust#144174 (last review activity: 3 months ago)- Waiting on a review (from who?) maybe waiting on author?
- “Suggest only Span without source changes when source code is unavailable” rust#144585 (last review activity: 3 months ago)
- cc @Esteban Küber
- “More
iter().last()->last(),iter().next()->first()” rust#145402 (last review activity: 3 months ago)- This was r’ed by Esteban, unsure if Michael can look at it right now
Next meetings’ agenda draft: hackmd link