T-compiler Meeting Agenda 2026-07-16
Announcements
- Today Rust 1.97.1 released, blog post draft
- Mainly for #159035, a miscompilation introduced in 1.97.0
- 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 @Boxy so we can pass it along).
Other WG meetings
- @_Jana office hours time:2026-07-16T16:00:00+02:00 and time:2026-07-20T16:00:00+02:00
MCPs/FCPs
New MCPs (take a look, see if you like them!)
- “Add -Z stack-protector-guard” compiler-team#1013 (Zulip)
Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
Old MCPs (not seconded, take a look)
- “group target modifier options under
-T” compiler-team#980 (Zulip) (last review activity: 3 months ago) - “
{cwd}placeholder in –remap-path-prefix” compiler-team#998 ([Zulip](@rustbot label +major-change +T-compiler)) (last review activity: about 34 days ago) - “Add testing for lint machinery at runtime” compiler-team#1004 (Zulip) (last review activity: about 19 days ago)
- “More strongly point people to link to Tracking Issues in the PR template” compiler-team#1009 (Zulip) (last review activity: about 6 days ago)
- “group target modifier options under
Pending FCP requests (check your boxes!)
- merge: Promote
wasm32-wasip3to Tier 2 (compiler-team#1001)- @|116266 @|119031 @_|370197
- no pending concerns
- merge: WF checks on closure arguments and improved type-test promotion. (rust#151510)
- @|124288 @|326176 @_|232957
- concerns: jobsteal crater regression fix (by lcnr)
- merge: Stabilize
-Zprofile-sample-use(rust#155942)- @|116266 @|125250 @|119031 @|370197 @_|343125
- no pending concerns
- merge: Stabilize
optimizeattribute (rust#157273)- @|116266 @|116009 @|125270 @|370197 @_|343125
- concerns: should-apply-to-closures (by tmandry)
- merge: Ensure inferred let pattern types are well-formed (rust#157841)
- @|116266 @|124288 @|326176 @|232957
- 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
- “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) - “Add
target_feature_available_at_call_site” compiler-team#1010 (Zulip)- concern: debugging-the-llvmir
- “Let the OS handle stack growth” compiler-team#1011 (Zulip)
- concern: back-to-the-past
- “Stabilizing the state of the debuginfo test suite” compiler-team#1012 (Zulip)
- “Enable
-Znext-solveron nightly by default for testing” compiler-team#1014 (Zulip) - “Enable
-Zpolonius=nexton nightly” compiler-team#1015 (Zulip) - “Avoid computing layout of enums with non-int discriminants” rust#157562
- “rustc_passes: lint unused
#[path]attributes on inline modules” rust#158835 - “enable
unreachable_cfg_select_predicateslint as part ofunusedlint group” rust#159179
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
Accepted MCPs
- No new accepted proposals this time.
MCPs blocked on unresolved concerns
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 9 months ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 12 months ago)
- concern: proposal-wording
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: about 42 days ago)
- concern: needs-champion
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip) (last review activity: 9 months ago)- concern: nonsystematic-breakage
- concern: why-not-ports-rustc
- concern: version-churn
- “Stop bumping the bootstrap version on every rustc release” compiler-team#925 (Zulip) (last review activity: 5 months 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: 8 months ago)
- concern: lang
- “Publish
rustc_publiccrate v0.1 to crates.io” compiler-team#949 (Zulip) (last review activity: 3 months ago) - “Query
gitstate to get information on a currently ongoing rebase when encountering conflict markers” compiler-team#955 (Zulip) (last review activity: 5 months ago)- concern: not worth the complexity
- “Allow crates downstream of
rustc_middleto define queries” compiler-team#966 (Zulip) (last review activity: 5 months ago)- concern: complexity
- concern: fragmentation
- “Single-byte counter support in coverage instrumentation” compiler-team#1002 (Zulip) (last review activity: about 8 days ago)
- concern: state-of-the-impl
- concern: question-boolean-valued-counters
- “Move
LayoutandTyAndLayouttorustc_type_ir” compiler-team#1008 (Zulip) (last review activity: about 13 days ago)- concern: type_ir-is-a-pain
Finalized FCPs (disposition merge)
- [T-types] “Infer all anonymous lifetimes in assoc consts as
'static” rust#156508 - [T-compiler] “enable eager
param_envnorm in new solver” rust#156976 - [T-types] “consider subtyping when checking if an infer var is sized” rust#157820
- [T-types] “Infer all anonymous lifetimes in assoc consts as
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “resolve: fix effective visibilities for items in ambiguous glob sets” rust#159039
- Authored by calvinrp
- Voting Zulip topic, seems everyone was against, so the backport is declined
- :beta: “Revert extension of
-1forNone-like tags” rust#159047- Authored by workingjubilee
- Voting Zulip topic, approved
- :stable: “resolve: fix effective visibilities for items in ambiguous glob sets” rust#159039
- Authored by calvinrp
- Voting Zulip topic, given the lack of consensus, so backport declined
PRs S-waiting-on-t-compiler
- “Stabilize
-Zprofile-sample-use” rust#155942- @_Jieyou Xu pinged the people that still need to check the FCP box
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 2 T-compiler P-critical issues
- 59 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 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, 34 P-high, 100 P-medium, 30 P-low regression-from-stable-to-stable
P-critical
- “dist-i686-msvc hang on lint-docs” rust#158378
- “Miscompilation with FFI
boolreturn type on AArch64” rust#159244
- 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
This week many new optimizations landed, making this a very good week for performance. The only real regression was a fix for a miscompile that will likely be re-landed in the future.
Triage done by @JonathanBrouwer. Revision range: 3659db0d..5503df87
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.4%] | 3 |
| Regressions (secondary) | 0.9% | [0.1%, 2.5%] | 25 |
| Improvements (primary) | -1.2% | [-9.9%, -0.2%] | 195 |
| Improvements (secondary) | -3.4% | [-92.1%, -0.1%] | 174 |
| All (primary) | -1.2% | [-9.9%, 0.4%] | 198 |
2 Regressions, 10 Improvements, 10 Mixed; 7 of them in rollups 36 artifact comparisons made in total
Regressions
Revert extension of -1 for None-like tags #159047 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.0%, 0.7%] | 16 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | - | - | 0 |
Revert of a PR that caused a miscompile in LLVM. Likely to be re-landed in the future.
Rollup of 3 pull requests #159166 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.1% | [0.0%, 0.2%] | 11 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All (primary) | - | - | 0 |
Bi-modal noise in the include-blob benchmark.
Improvements
- Use
LowerAvailableDepth::Nofor normalizes-to goal itself instead of its nested goals #158705 (Comparison Link) - Polish some macro parsing code #158577 (Comparison Link)
- Predicate/clause cleanups #157104 (Comparison Link)
- Shrink no-op drop elaboration #157491 (Comparison Link)
- Try to mark param env as rigid with the next solver #158643 (Comparison Link)
- Use SmallVec for return places in MIR #158842 (Comparison Link)
- Clippy subtree update #159030 (Comparison Link)
- Remove some AST
tokensfields #158942 (Comparison Link) - Lang item cleanups #159004 (Comparison Link)
- Rollup of 3 pull requests #159170 (Comparison Link)
Mixed
Rollup of 12 pull requests #158864 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 1 |
| Regressions (secondary) | 8.5% | [0.2%, 16.6%] | 7 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 2 |
| All (primary) | 0.1% | [0.1%, 0.1%] | 1 |
Triaged to be fully caused by [https://github.com/rust-lang/rust/pull/156976](enable eager param_env norm in new solver). Author claims the perf impact is fully fixed by the later merge of https://github.com/rust-lang/rust/pull/158643.
Rollup of 24 pull requests #158847 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.2%, 0.3%] | 2 |
| Improvements (primary) | -0.2% | [-0.3%, -0.1%] | 3 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.2% | [-0.3%, -0.1%] | 3 |
Regressions are noise, improvements seem real to me. Not worth figuring out which PR caused the unexpected improvements.
Rollup of 23 pull requests #158991 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 1 |
| Regressions (secondary) | 0.0% | [0.0%, 0.0%] | 1 |
| Improvements (primary) | -0.3% | [-0.3%, -0.2%] | 2 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.2%] | 7 |
| All (primary) | -0.1% | [-0.3%, 0.1%] | 3 |
Regressions seem like noise, and are tiny. Improvements seem real to me. Not worth figuring out which PR caused the unexpected improvements.
[perf] Specialize common (1, 1) case for arg unification. #158865 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
| Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 7 |
| Improvements (primary) | -0.5% | [-0.7%, -0.2%] | 8 |
| Improvements (secondary) | -0.3% | [-0.5%, -0.1%] | 6 |
| All (primary) | -0.4% | [-0.7%, 0.2%] | 9 |
Improvements caused by a new fast path in type checking for two-argument tuples. Regressions are noise.
Inline some Symbol functions #158931 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.3%] | 4 |
| Regressions (secondary) | 0.1% | [0.1%, 0.2%] | 2 |
| Improvements (primary) | -0.3% | [-0.5%, -0.1%] | 50 |
| Improvements (secondary) | -0.4% | [-0.9%, -0.1%] | 55 |
| All (primary) | -0.3% | [-0.5%, 0.3%] | 54 |
Improvements caused by marking Symbol::intern and Symbol::as_str as inline.
Regressions seem real but improvements seriously outweigh regressions.
perf: Rework read deduplication with pooled read recorders #158794 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.3%] | 13 |
| Regressions (secondary) | 0.5% | [0.1%, 1.7%] | 29 |
| Improvements (primary) | -1.5% | [-10.0%, -0.2%] | 89 |
| Improvements (secondary) | -1.0% | [-2.8%, -0.0%] | 77 |
| All (primary) | -1.2% | [-10.0%, 0.3%] | 102 |
Improvements by deduplicating reads in the query infrastructure. Further improvements might be possible and are being discussed in the comments of the PR.
Rollup of 24 pull requests #159046 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.1%, 0.7%] | 3 |
| Regressions (secondary) | 0.0% | [0.0%, 0.0%] | 1 |
| Improvements (primary) | -0.4% | [-0.4%, -0.4%] | 1 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All (primary) | 0.1% | [-0.4%, 0.7%] | 4 |
Some of the regressions are noise, and I’m still trying to triage which PR caused the last regressions. Regressions are relatively small and most likely will just be accepted.
Rollup of 15 pull requests #159113 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.5% | [0.2%, 0.6%] | 5 |
| Regressions (secondary) | 0.3% | [0.0%, 0.6%] | 9 |
| Improvements (primary) | -0.6% | [-0.6%, -0.6%] | 1 |
| Improvements (secondary) | -0.1% | [-0.2%, -0.0%] | 6 |
| All (primary) | 0.3% | [-0.6%, 0.6%] | 6 |
Triaged to be caused by https://github.com/rust-lang/rust/pull/158767 and https://github.com/rust-lang/rust/pull/157690. Author of the first PR has been pinged, regressions in the second PR are tiny.
Resolver: Wrap arenas in WorkerLocal #159019 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.0%, 0.5%] | 10 |
| Improvements (primary) | -0.4% | [-0.5%, -0.2%] | 10 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.0%] | 7 |
| All (primary) | -0.4% | [-0.5%, -0.2%] | 10 |
Small regressions on two stress benchmarks from worker local arenas. It’s acceptable, and we’ll need to integrate resolver into the parallel compiler sooner or later anyway. The build reduced graph changes are potential micro-optimizations (that’s where the diesel improvements come from), and the worker local changes are pessimizations.
Preparatory changes for macro parsing BFS->DFS #158974 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.3%] | 2 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.4% | [-0.4%, -0.4%] | 2 |
| Improvements (secondary) | -3.8% | [-5.2%, -2.1%] | 9 |
| All (primary) | -0.1% | [-0.4%, 0.3%] | 4 |
Great perf results on tt-muncher! icounts, cycles, and wall-time all agree that it got significantly faster. Improvements outweigh regressions significantly.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
None this week