T-compiler Meeting Agenda 2026-02-12
Announcements
- Today we release 1.93.1 to fix a few regressions on stable (not compiler related), see blog post
- 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!)
- “Allow crates downstream of
rustc_middleto define queries” compiler-team#966 (Zulip)- concern: complexity
- concern: fragmentation
- “Allow crates downstream of
- 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: 3 months ago)
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 6 months ago)
- “Rename
hexagon-unknown-{none-elf,linux-musl}targets” compiler-team#921 (Zulip) (last review activity: 3 months ago) - “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) (last review activity: 3 months ago) - “Stop bumping the bootstrap version on every rustc release” compiler-team#925 (Zulip) (last review activity: 3 months ago)
- “Parse unstable keywords for experimental syntax” compiler-team#945 (Zulip) (last review activity: 2 months ago)
- “Introduce a tier-3
wasm32-componenttarget” compiler-team#948 (Zulip) (last review activity: about 13 days ago) - “Publish
rustc_publiccrate v0.1 to crates.io” compiler-team#949 (Zulip) (last review activity: about 13 days ago) - “Add flag to pass MSRV/
package.rust-versionfor use by lints” compiler-team#950 (Zulip) (last review activity: about 13 days ago) - “Create a new Tier 3 target:
x86_64-nt-windows-msvc” compiler-team#952 (Zulip) (last review activity: about 13 days ago) - “Tier 3 targets proposal: LoongArch UEFI” compiler-team#953 (Zulip) (last review activity: about 13 days ago)
- “Emit retags in codegen” compiler-team#958 (Zulip) (last review activity: about 13 days ago)
- “Add repro-check tool for build reproducibility” compiler-team#962 (Zulip) (last review activity: about 13 days ago)
- Pending FCP requests (check your boxes!)
- merge: Promote aarch64-unknown-freebsd to Tier 2 with host tools (compiler-team#961)
- @|116266 @|124288 @|119031 @|116122 @_|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 @|119031 @|426609 @|444933
- concerns: mitigation-enforcement (by Noratrieb)
- merge: Revert “Do not check privacy for RPITIT.” (rust#146470)
- no pending checkboxes
- concerns: crater run results (by tmandry)
- merge: Stabilize the
supertrait_item_shadowingfeature (rust#148605)- @|124288 @|326176
- concerns: implementation-confidence (by BoxyUwU) inconsistent-name-res-semantics (by BoxyUwU)
- merge: rustc: Stop passing
--allow-undefinedon wasm targets (rust#149868)- @|116266 @|124288 @|125250 @|119031 @_|353056
- no pending concerns
- “Implement lint for black_boxing ZSTs” rust#150037
- merge: switch to v0 mangling by default on stable (rust#151994)
- @|116266 @|123586 @|119031 @|116122 @|116118 @|353056
- no pending concerns
- merge: Promote aarch64-unknown-freebsd to Tier 2 with host tools (compiler-team#961)
- Things in FCP (make sure you’re good with it)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: inhibit-opts
- concern: impl-at-mir-level
- 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
- “For
nvptx64, drop old CPUs and ISAs - drop support fortarget-cpu< SM 7.0 and PTX ISA < 7.0” compiler-team#965 (Zulip) - “Remove the translation
-Zoptions” compiler-team#967 (Zulip) - “Support importing path-segment keyword with renaming” rust#146972
- “Inhibit all-absent-variant optimization for all enum reprs that inhibit layout optimization, not just repr(C).” rust#146989
- “
-Znext-solverRemove the forced ambiguity hack from search graph” rust#149904
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Extend the
x.pypolicy forTODOandFIXMEto other in-tree projects” compiler-team#963 (Zulip) - “Create linker subteam/Working Group” compiler-team#964 (Zulip)
- “Extend the
- MCPs blocked on unresolved concerns
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 7 months ago)
- concern: path-to-stabilization
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 4 months ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 7 months ago)
- concern: proposal-wording
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip) (last review activity: 4 months ago)- concern: why-not-ports-rustc
- concern: nonsystematic-breakage
- concern: version-churn
- “Doc comments and attributes on macro arms” compiler-team#935 (Zulip) (last review activity: 3 months ago)
- concern: lang
- “Allow using prebuilt sanitizer libraries” compiler-team#943 (Zulip) (last review activity: 2 months ago)
- concern: why-not-third-party-tool
- concern: what-about-combinatorics
- “Query
gitstate to get information on a currently ongoing rebase when encountering conflict markers” compiler-team#955 (Zulip) (last review activity: about 13 days ago)- concern: not worth the complexity Finalized FCPs (disposition merge)
- No new finished FCP (disposition merge) this time.
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 7 months ago)
- Other teams finalized FCPs
- “Stabilize Frontmatter” rust#148051
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Fix suppression of
unused_assignmentin binding ofunused_variable” rust#151556- Authored by eggyal
- Voting Zulip topic, green light
- Fixes #151514 (another one stemming from #142390)
- :beta: “layout: handle rigid aliases without params” rust#151814
- Authored by lcnr
- Voting Zulip topic, in favor
- Fixes #151791, a P-high (discussed during past meetings, we were waiting for it to be merged)
- :beta: “Fix missing unused_variables lint when using a match guard” rust#151990
- Authored by eggyal
- Voting Zulip topic
- Fixes #151983 (another one stemming from #142390)
- :beta: “[BETA]: parse array lengths without stripping const blocks” rust#152237
- Authored by BoxyUwU
- Voting Zulip topic, in favor
- Flaky rustdoc tests are blocking merging, see comment and canary PR #152393
- :beta: “Partially revert “resolve: Update
NameBindingData::visin place”” rust#152498- Authored by petrochenkov
- Voting Zulip topic, in favor
- By partially reverting 227e7bd we fix #152004, #151124 and #152347
- :beta: “Fix feature gating for new
try bikeshedexpressions” rust#152519- Authored by scottmcm
- Voting Zulip topic
- Nice little fix for #152519 that is leaking the experimental
try {}
- :stable: “layout: handle rigid aliases without params” rust#151814
- Authored by lcnr
- Voting Zulip topic, in favor but the backport couldn’t make it in 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
- 61 T-compiler P-high issues
- 0 P-critical, 4 P-high, 3 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 0 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 32 P-high, 100 P-medium, 28 P-low regression-from-stable-to-stable
P-critical
- No
P-criticalissues forT-compilerthis time.
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “
try bikeshed $ty { … }is not pre-expansion gated (affects beta+nightly)” rust#152501- will be fixed by #152519
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
This week we saw quite a few improvements. Largest one comes from adding two targeted with_capacity calls in #151929.
Another source of multiple improvements is the ongoing migration away from using external files to store diagnostic messages.
Triage done by @panstromek. Revision range: a60d12cb..39219ceb
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | 2.0% | [2.0%, 2.0%] | 1 |
| Regressions ❌ (secondary) | 0.6% | [0.0%, 2.0%] | 22 |
| Improvements ✅ (primary) | -0.8% | [-2.8%, -0.2%] | 179 |
| Improvements ✅ (secondary) | -3.1% | [-31.1%, -0.0%] | 211 |
| All ❌✅ (primary) | -0.7% | [-2.8%, 2.0%] | 180 |
1 Regression, 6 Improvements, 7 Mixed; 9 of them in rollups 36 artifact comparisons made in total
Regressions
Pass on the feedable query modifier to macros #151546 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | 0.4% | [0.2%, 0.9%] | 20 |
| Regressions ❌ (secondary) | 0.5% | [0.0%, 1.0%] | 47 |
| Improvements ✅ (primary) | - | - | 0 |
| Improvements ✅ (secondary) | -0.0% | [-0.0%, -0.0%] | 2 |
| All ❌✅ (primary) | 0.4% | [0.2%, 0.9%] | 20 |
Regressions coming from enabling assertions that were previously disabled by accident. Already triaged by @lqd.
Improvements
resolve: Use IdentKey in resolve_ident_in_scope_set #151820 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | - | - | 0 |
| Improvements ✅ (primary) | -0.3% | [-0.3%, -0.2%] | 8 |
| Improvements ✅ (secondary) | -0.4% | [-0.9%, -0.1%] | 22 |
| All ❌✅ (primary) | -0.3% | [-0.3%, -0.2%] | 8 |
Use with_capacity in query_key_hash_verify and PlaceholderExpander #151929 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | - | - | 0 |
| Improvements ✅ (primary) | -0.6% | [-3.3%, -0.2%] | 166 |
| Improvements ✅ (secondary) | -0.9% | [-3.4%, -0.1%] | 161 |
| All ❌✅ (primary) | -0.6% | [-3.3%, -0.2%] | 166 |
Rollup of 12 pull requests #152104 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | - | - | 0 |
| Improvements ✅ (primary) | - | - | 0 |
| Improvements ✅ (secondary) | -0.7% | [-1.5%, -0.2%] | 29 |
| All ❌✅ (primary) | - | - | 0 |
skip codegen for intrinsics with big fallback bodies if the backend does not need them #150605 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | - | - | 0 |
| Improvements ✅ (primary) | -1.3% | [-2.3%, -0.4%] | 2 |
| Improvements ✅ (secondary) | - | - | 0 |
| All ❌✅ (primary) | -1.3% | [-2.3%, -0.4%] | 2 |
Note: This PR addresses a regression from November.
Rollup of 9 pull requests #152163 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | - | - | 0 |
| Improvements ✅ (primary) | - | - | 0 |
| Improvements ✅ (secondary) | -1.3% | [-3.6%, -0.2%] | 38 |
| All ❌✅ (primary) | - | - | 0 |
Rollup of 13 pull requests #152213 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
| Improvements ✅ (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
| Improvements ✅ (secondary) | -1.8% | [-5.5%, -0.1%] | 42 |
| All ❌✅ (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
Mixed
Rollup of 12 pull requests #152063 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | 0.3% | [0.2%, 0.7%] | 12 |
| Improvements ✅ (primary) | - | - | 0 |
| Improvements ✅ (secondary) | -0.4% | [-0.7%, -0.2%] | 14 |
| All ❌✅ (primary) | - | - | 0 |
Caused by https://github.com/rust-lang/rust/pull/151944. Already triaged by @JonathanBrouwer.
Rollup of 7 pull requests #152075 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | 0.8% | [0.2%, 1.4%] | 10 |
| Improvements ✅ (primary) | - | - | 0 |
| Improvements ✅ (secondary) | -0.3% | [-0.4%, -0.2%] | 15 |
| All ❌✅ (primary) | - | - | 0 |
Caused by https://github.com/rust-lang/rust/pull/148967. @JonathanBrouwer proposes to accept it in https://github.com/rust-lang/rust/pull/148967#issuecomment-3846276431. The perf impact was assesed before the merge, final results are only slightly different from the last per-merge results. All regressions are secondary stress tests, often related to CTFE.
Rollup of 18 pull requests #152156 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | 1.1% | [1.1%, 1.1%] | 1 |
| Improvements ✅ (primary) | -0.3% | [-0.5%, -0.2%] | 9 |
| Improvements ✅ (secondary) | -1.8% | [-7.0%, -0.1%] | 64 |
| All ❌✅ (primary) | -0.3% | [-0.5%, -0.2%] | 9 |
Already triaged by @JonathanBrouwer. Improvements from inline diagnostics change. One regression in UCD is noise.
Rollup of 3 pull requests #152239 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | 0.9% | [0.5%, 1.4%] | 9 |
| Improvements ✅ (primary) | - | - | 0 |
| Improvements ✅ (secondary) | -4.7% | [-15.6%, -0.4%] | 32 |
| All ❌✅ (primary) | - | - | 0 |
Impact caused by https://github.com/rust-lang/rust/pull/152189, Improvements outweigh regressions. Already triaged by @JonathanBrouwer.
Rollup of 4 pull requests #152264 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | - | - | 0 |
| Regressions ❌ (secondary) | 0.2% | [0.1%, 0.2%] | 4 |
| Improvements ✅ (primary) | - | - | 0 |
| Improvements ✅ (secondary) | -1.0% | [-3.2%, -0.4%] | 17 |
| All ❌✅ (primary) | - | - | 0 |
Already triaged by @JonathanBrouwer. Caused by inline diagnostics changes in https://github.com/rust-lang/rust/pull/152126 and https://github.com/rust-lang/rust/pull/152186.
Rollup of 7 pull requests #152308 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | 0.8% | [0.4%, 1.1%] | 12 |
| Regressions ❌ (secondary) | 0.1% | [0.0%, 0.1%] | 2 |
| Improvements ✅ (primary) | - | - | 0 |
| Improvements ✅ (secondary) | -2.1% | [-3.8%, -1.1%] | 4 |
| All ❌✅ (primary) | 0.8% | [0.4%, 1.1%] | 12 |
Caused by https://github.com/rust-lang/rust/pull/152217, already triaged by @JonathanBrouwer in https://github.com/rust-lang/rust/pull/152308#issuecomment-3867053365.
Another inline diagnostic migration change. Regressed benchmark generates a lot of diagnostics. There’s a plan to address regressions from this diagnostic migration later.
GVN: Only propagate borrows from SSA locals #150485 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions ❌ (primary) | 1.0% | [0.3%, 2.0%] | 3 |
| Regressions ❌ (secondary) | 0.7% | [0.3%, 1.9%] | 4 |
| Improvements ✅ (primary) | -1.0% | [-1.0%, -1.0%] | 2 |
| Improvements ✅ (secondary) | - | - | 0 |
| All ❌✅ (primary) | 0.2% | [-1.0%, 2.0%] | 5 |
Results match pre-merge results, which was accepted in https://github.com/rust-lang/rust/pull/150485#issuecomment-3853373696.
Nominated Issues
- “Do not use dlltool to create DLL Import Libraries for Windows” rust#147274
- previously discussed
- now the binutils part is not blocking anymore but @Mateusz Mikuła (mati865) points out that we don’t have a binutils minimal supported version policy
- So how can we introduce such breaking change?
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Add support for xray in aarch64 unknown none target” rust#148666 (last review activity: 3 months ago)
- cc @Wesley Wiser
- “Do not use dlltool to create DLL Import Libraries for Windows” rust#147274 (last review activity: about 55 days ago)
- @Wesley Wiser
Next meetings’ agenda draft: hackmd link