T-compiler Meeting Agenda 2026-03-26
Announcements
- Today, patch release 1.94.1, see blog post (patches are not for the compiler)
- FYI from @jieyouxu: WG-linker is now an active WG :) Zulip group is @WG-linker (see https://github.com/rust-lang/team/pull/2299)
- 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
- (TIP) get them from https://github.com/rust-lang/calendar
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- No new proposals this time.
- 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: about 0 days ago)
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 5 months ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 8 months ago)
- concern: proposal-wording
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 8 months ago)
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip) (last review activity: 5 months ago)- concern: why-not-ports-rustc
- concern: nonsystematic-breakage
- concern: version-churn
- “Stop bumping the bootstrap version on every rustc release” compiler-team#925 (Zulip) (last review activity: about 40 days ago)
- concern: we-like-using-the-features-we-ship
- concern: infra-and-bootstrap-burden
- “Doc comments and attributes on macro arms” compiler-team#935 (Zulip) (last review activity: 4 months ago)
- concern: lang
- “Publish
rustc_publiccrate v0.1 to crates.io” compiler-team#949 (Zulip) (last review activity: about 3 days ago) - “Add flag to pass MSRV/
package.rust-versionfor use by lints” compiler-team#950 (Zulip) (last review activity: about 55 days ago) - “Create a new Tier 3 target:
x86_64-nt-windows-msvc” compiler-team#952 (Zulip) (last review activity: about 55 days ago) - “Query
gitstate to get information on a currently ongoing rebase when encountering conflict markers” compiler-team#955 (Zulip) (last review activity: about 55 days ago)- concern: not worth the complexity
- “Add repro-check tool for build reproducibility” compiler-team#962 (Zulip) (last review activity: about 55 days ago)
- “Allow crates downstream of
rustc_middleto define queries” compiler-team#966 (Zulip) (last review activity: about 41 days ago)- concern: complexity
- concern: fragmentation
- “Add -Z dead-fn-elimination to skip codegen of BFS-unreachable functions” compiler-team#976 (Zulip) (last review activity: about 2 days ago)
- “Change the ABI of powerpc64-unknown-linux-gnu to ELFv2” compiler-team#977 (Zulip) (last review activity: about 6 days ago)
- Pending FCP requests (check your boxes!)
- merge: Promote loongarch32-unknown-none* to Tier 2 (compiler-team#968)
- @|124288 @|125250 @|119031 @|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: Make trait refs & assoc ty paths properly induce trait object lifetime defaults (rust#129543)
- @|116009 @|326176 @|216206 @|232957
- no pending concerns
- merge: Stabilize stack-protector (rust#146369)
- @|116266 @|426609 @_|444933
- concerns: mitigation-enforcement (by Noratrieb)
- merge: Stabilize the
supertrait_item_shadowingfeature (rust#148605)- @|124288 @|326176
- concerns: implementation-confidence (by BoxyUwU) inconsistent-name-res-semantics (by BoxyUwU)
- “Implement lint for black_boxing ZSTs” rust#150037
- merge: WF checks on closure arguments. (rust#151510)
- @|124288 @|326176 @_|232957
- concerns: jobsteal crater regression fix (by lcnr)
- merge: Clean up crate type names to fix dylib vs staticlib confusion (rust#153863)
- @|120518 @|116266 @|424212 @|124288 @|270929 @|125250 @|116107 @|248906 @|120179 @|245964 @|116118 @|415544 @|296292 @|353056
- concerns: cargo-impact (by epage)
- merge: Promote loongarch32-unknown-none* to Tier 2 (compiler-team#968)
- 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
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip)
- concern: continued-maintainer-interest
- concern: documentation
- “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
- “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) - “Emit retags in codegen” compiler-team#958 (Zulip)
- “Syntactically reject equality predicates” rust#153513
- “1.95 beta regression: “malformed
featureattribute input”” rust#153764 - “stabilize s390x vector registers” rust#154184
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Tier 3 targets proposal: LoongArch UEFI” compiler-team#953 (Zulip)
- “Remove -Csoft-float” compiler-team#971 (Zulip)
- “allow
incomplete_featuresin UI tests” compiler-team#974 (Zulip) - “Add
-Zsanitizer=kernel-hwaddress” compiler-team#975 (Zulip)
- Finalized FCPs (disposition merge)
- “rustc: Stop passing
--allow-undefinedon wasm targets” rust#149868 - “switch to v0 mangling by default on stable” rust#151994
- “rustc: Stop passing
- Other teams finalized FCPs
- [T-types] “Always make tuple elements a coercion site” rust#147834
- [T-rustdoc, T-lang] “Stabilize Frontmatter” rust#148051
- [T-types] “Always check
ConstArgHasTypeeven when otherwise ignoring” rust#152931
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “[beta] Revert #151380 in beta” rust#154307
- Authored by ShoyuVanilla
- Fixes #153816 and #153849. The fix has two parts:
- #154307 (this backport): reverts #151380 on beta
- #154308: reverts on nightly #151380 and #153869
- Voting Zulip topic, in favor
- :beta: “Init
self_declwith a correct visibility” rust#154313- Authored by mu001999
- Fixes #154295, code compiles that should not be accepted (debug builds only)
- Voting Zulip topic, in favor
- :beta: “Update LLVM to 22.1.2” rust#154344
- Authored by dianqk
- From (comment):
Fixes a not so important nightly-only miscompile for the s390x
f16::is_normalmiscompile BUT fixes quite a few long-standing LLVM 22 issues (at least a ppc64le miscompile affecting the Rust uuid crate, a crash when building with PGO, and a build hang on s390x) - List of changes
- Voting Zulip topic, in favor
- 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
- “Strict version hash is sensitive to presence of standard library source code on host” rust#153898
- Question: do we provide any stability guarantees for these hashes?
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 62 T-compiler P-high issues
- 1 P-critical, 4 P-high, 2 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 35 P-high, 100 P-medium, 31 P-low regression-from-stable-to-stable
P-critical
- None
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “Significant compilation time regression starting in v1.95.0-nightly (bevy)” rust#153910
- Still need investigation. A reduction would be useful (the bevy crate pulls in a lot of deps)
- “Complex EH flow miscompiled on wasm” rust#153948
- Investigated by xxx (comment), opened an upstream issue llvm-project#187302. Note: affects only legacy
eh, the codegen with-wasm-use-legacy-eh=falseis correct. - asks if in the meanwhile shouldn’t we revert #151771 (from @_apiraino: I would be in favor of reverting, seems quite self-contained)
- Investigated by xxx (comment), opened an upstream issue llvm-project#187302. Note: affects only legacy
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
Lot of mixed results this week. One big regression from #152931 makes the results look pretty negative, but otherwise the week was fairly quiet.
Triage done by @panstromek. Revision range: 5b61449e..6f22f613
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.0% | [0.1%, 4.2%] | 27 |
| Regressions (secondary) | 0.2% | [0.0%, 0.6%] | 36 |
| Improvements (primary) | -0.1% | [-0.2%, -0.1%] | 3 |
| Improvements (secondary) | -0.3% | [-2.8%, -0.0%] | 14 |
| All (primary) | 0.9% | [-0.2%, 4.2%] | 30 |
1 Regression, 1 Improvement, 4 Mixed; 1 of them in rollups 32 artifact comparisons made in total
Regressions
Always check ConstArgHasType even when otherwise ignoring #152931 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.9% | [0.1%, 4.1%] | 13 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 1.9% | [0.1%, 4.1%] | 13 |
These regressions look real, and it seems like they were not discussed before merge.
Regressed benchmarks are both type-heavy, and the regression seems to be entirely in typeck (assumed_wf_types, check_well_formed, predicates_of and type_alias_is_lazy all show some negative changes in detailed results). This seems to match the PR changes.
Asked on the PR, got response from reviewer: “typenum has a lot of type aliases, so doing additional work for them causing a regression seems expected to me. Looking at the code, I don’t know how to avoid this regression”
Improvements
DepNode use improvements #154076 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.0%] | 12 |
| All (primary) | - | - | 0 |
Mixed
Do not shallow resolve to root var while fudging #153869 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 7 |
| Improvements (primary) | -0.1% | [-0.1%, -0.1%] | 2 |
| Improvements (secondary) | -0.3% | [-0.3%, -0.2%] | 4 |
| All (primary) | -0.1% | [-0.1%, -0.1%] | 2 |
Improvements mostly outweigh regressions. Secondary regressions in projection-caching and regression-31157 seem to just undo part of the wins from https://github.com/rust-lang/rust/pull/151380, so this still seems like a net improvement overall.
Eagerly normalize in generalize #151746 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.3%] | 7 |
| Regressions (secondary) | 0.3% | [0.1%, 0.4%] | 10 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 1 |
| All (primary) | 0.2% | [0.2%, 0.3%] | 7 |
Reverted in https://github.com/rust-lang/rust/pull/154257 for other reasons
Remove the anon query modifier #154122 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.3%] | 3 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 2 |
| Improvements (secondary) | -0.1% | [-0.2%, -0.1%] | 2 |
| All (primary) | 0.1% | [-0.2%, 0.3%] | 5 |
Quoting the author (@Zalathar):
“Small regressions to cargo were expected, and everything else is green. I’m experimenting with #154162 to undo those small regressions, but that work will have to be judged on its own perf/complexity merits.”
Rollup of 8 pull requests #154273 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.4% | [0.4%, 0.4%] | 1 |
| Improvements (primary) | -0.2% | [-0.3%, -0.1%] | 7 |
| Improvements (secondary) | -0.2% | [-0.4%, -0.1%] | 17 |
| All (primary) | -0.2% | [-0.3%, -0.1%] | 7 |
Regressions are noise, already triaged by @JonathanBrouwer
Nominated Issues
- None
Open T-compiler RFCs with disposition-merge + finished FCP
From @_jieyouxu: I saw a IRLO thread recently regarding “FCP complete but not merged RFCs” so I was curious how we are doing. I only see two of them:
- “Mitigation enforcement” rfcs#3855
- Finished FCP 2 weeks ago: https://github.com/rust-lang/rfcs/pull/3855#issuecomment-4050365833
- AFAICT this one seems okay to merge, I don’t see any notable outstanding comments/concerns
- Comment from @_apiraino: I think I agree, also rust#146369 was waiting on this (see comment)
- “[RFC2603] Extend
<const>to include str and structural constants” rfcs#3161- Finished FCP in 2023: https://github.com/rust-lang/rfcs/pull/3161#issuecomment-1727997539
- Now this RFC I think is maybe not ready for merge: outstanding concerns / notable unresolved questions:
- There was some weak concern re. documenting unstable features at the time of FCP: https://github.com/rust-lang/rfcs/pull/3161#issuecomment-1930532909
- https://github.com/rust-lang/rfcs/pull/3161#issuecomment-2180425897
- https://github.com/rust-lang/rfcs/pull/3161#issuecomment-2191837103
- Maybe @_project-const-traits have some further feedback for the discussions?
- EDIT: oh, this is an amendment to an existing RFC. Then I’d say I agree with Eric’s comment where
Process-wise, instead of amending RFCs, this should probably be done as a PR to update the documentation at rust-lang/rust@master/src/doc/rustc/src/symbol-mangling/v0.md.
- Comment from @_apiraino: isn’t the mangling v0 in FCP now? See:
- “switch to v0 mangling by default on stable” rust#151994
- Very old story, I’d probably leave a ping there and ask about the status
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Store
chunk_domain_sizeexplicitly inChunk.” rust#147802 (last review activity: 5 months ago)- cc @cjgillot
Next meetings’ agenda draft: hackmd link