T-compiler Meeting Agenda 2026-08-06
Announcements
- Reschedule P-high review triage (2nd run)
- 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-13T16:00:00+02:00 and time:2026-07-16T16:00:00+02:00
MCPs/FCPs
New MCPs (take a look, see if you like them!)
- “Add
codeview_annotationintrinsic” compiler-team#1026 (Zulip) - “Introduce new -C flag for cross-target control of stack walking features” compiler-team#1027 (Zulip)
- “Add
Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
Old MCPs (not seconded, take a look)
- “
{cwd}placeholder in –remap-path-prefix” compiler-team#998 ([Zulip](@rustbot label +major-change +T-compiler)) (last review activity: about 55 days ago) - “Add testing for lint machinery at runtime” compiler-team#1004 (Zulip) (last review activity: about 41 days ago)
- “More strongly point people to link to Tracking Issues in the PR template” compiler-team#1009 (Zulip) (last review activity: about 27 days ago)
- “Add -Z stack-protector-guard” compiler-team#1013 (Zulip) (last review activity: about 8 days ago)
- “MCP: Add -Zasync-panic for binary size” compiler-team#1016 (Zulip) (last review activity: about 13 days ago)
- “
Pending FCP requests (check your boxes!)
- merge: Drop tier 2
i686-pc-windows-gnuhost tools (compiler-team#1020)- @|124288 @|125250 @|119031 @|116122 @|370197 @|343125
- no pending concerns
- merge: Promote riscv64a23-unknown-linux-gnu to Tier 2 with host tools (compiler-team#1022)
- cc: @|124288 @|125250 @|116107 @|370197 @|343125
- 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)
- t-types nominated
- merge: Error on projection of dyn noncompat type in old trait solver (rust#154992)
- @|116266 @|326176 @_|232957
- no pending concerns
- merge: Stabilize
optimizeattribute (rust#157273)- @|116009 @|125270 @|370197 @|343125
- concerns: should-apply-to-closures (by tmandry) make-optimize-none-be-c-opt-level-0 (by scottmcm)
- merge: Drop tier 2
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: lose-debuginfo-data
- concern: impl-at-mir-level
- “Optimize
repr(Rust)enums by omitting tags in more cases involving uninhabited variants.” compiler-team#922 (Zulip) - “Promote
wasm32-wasip3to Tier 2” compiler-team#1001 (Zulip) - “Add
target_feature_available_at_call_site” compiler-team#1010 (Zulip)- concern: debugging-the-llvmir
- “Encode OpenBSD
-currentversion in targets’target_env” compiler-team#1018 (Zulip) - “Implement a naming convention for lint/diagnostic-only
rustc_attrs” compiler-team#1021 (Zulip) - “Stabilize
-Zprofile-sample-use” rust#155942 - “lint against repeated repr attributes” rust#157036
- “Ensure inferred let pattern types are well-formed” rust#157841
- “Shallow resolve ty and const vars to their root vars, attempt 2” rust#158447
- “stabilize
c_variadic_naked_functions” rust#159746
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
Accepted MCPs
- “group target modifier options under
-T” compiler-team#980 (Zulip) - “Let the OS handle stack growth” compiler-team#1011 (Zulip)
- “Wasm proc macro support” compiler-team#1017 (Zulip)
- “Emit
notewhen callingrustcwithout specifying an edition” compiler-team#1019 (Zulip)
- “group target modifier options under
MCPs blocked on unresolved concerns (tracking HackMD doc)
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 10 months ago)
- concern: wont-stop-target-names-from-proliferating
- Left a comment asking about the RFC proposal and suggesting to close the MCP. Does anyone know anything about the RFC?
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 12 months ago)
- concern: proposal-wording
- Author never replied. Proposal Seems dead in the water, suggesting to close
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 2 months ago)
- concern: needs-champion
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip)- concern: version-churn
- concern: why-not-ports-rustc
- concern: nonsystematic-breakage
- No reply from anyone. Will revisit in a month or two and maybe understand if it’s abandoned
- “Doc comments and attributes on macro arms” compiler-team#935 (Zulip) (last review activity: 9 months ago)
- concern: lang
- Left a ping on Zulip thread) to check progress
- “Publish
rustc_publiccrate v0.1 to crates.io” compiler-team#949 (Zulip) (last review activity: 4 months ago)- concern: ease of refreshing in tree rustc_public to match actual rustc
- concern: clarify blocking/non-blocking nature of librarification project reviews
- left a ping, checking for updates
- “Query
gitstate to get information on a currently ongoing rebase when encountering conflict markers” compiler-team#955 (Zulip) (last review activity: 6 months ago)- concern: not worth the complexity
- left a ping, suggested to close
- “Allow crates downstream of
rustc_middleto define queries” compiler-team#966 (Zulip) (last review activity: 5 months ago)- concern: complexity
- concern: fragmentation
- left a ping, suggested to close
- “Single-byte counter support in coverage instrumentation” compiler-team#1002 (Zulip) (last review activity: about 29 days ago)
- concern: state-of-the-impl
- concern: question-boolean-valued-counters
- waiting on author
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 10 months ago)
Finalized FCPs (disposition merge)
- No new finished FCP (disposition merge) this time.
Backport nominations
T-compiler beta / T-compiler stable
- No beta nominations for
T-compilerthis time. - No stable nominations for
T-compilerthis time.
PRs S-waiting-on-t-compiler
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 63 T-compiler P-high issues
- 0 P-critical, 2 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, 31 P-high, 100 P-medium, 30 P-low regression-from-stable-to-stable
P-critical
- “dist-i686-msvc hang on lint-docs” rust#158378
- Discussion on Zulip about demoting the target
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “1.98 beta regression due to name collision with
splat” rust#159428- (fyi) Solved by renaming the attribute (#159817)
- “1.98 beta regression due to name collision with
unroll” rust#159429- (fyi) Solved by renaming the attribute (#160211)
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
A lot of optimizations landed this week. Some big improvements to rustdoc in #159854, one big improvement in control flow graph traversal for cranelift-codegen, few more improvements to next-solver benchmarks and various other micro-optimizations, bringing the total to a nice round number of 10 improvements this week.
Triage done by @panstromek. Revision range: ad0c9dce..65dd30fb
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.2%, 0.5%] | 18 |
| Regressions (secondary) | 2.1% | [0.1%, 16.8%] | 64 |
| Improvements (primary) | -3.3% | [-39.8%, -0.2%] | 97 |
| Improvements (secondary) | -6.1% | [-39.6%, -0.1%] | 111 |
| All (primary) | -2.7% | [-39.8%, 0.5%] | 115 |
1 Regression, 5 Improvements, 11 Mixed; 6 of them in rollups 32 artifact comparisons made in total
Regressions
Rollup of 20 pull requests #160190 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.4% | [0.1%, 0.6%] | 16 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.1%] | 2 |
| All (primary) | - | - | 0 |
Already triaged by @jhpratt: “caused by #158693, which is apparently needed for kernel stuff”
Looks like the depgraph size has increased on all benchmarks because the new query is called on every function. I left a comment there. @Sa4dUs (original author) opened a PR which addresses the regression https://github.com/rust-lang/rust/pull/160454.
Improvements
- Skip query machinery when promoting disk-cached values #158059 (Comparison Link)
- rustdoc: Only analyze head of self type when deciding impl inlining #159854 (Comparison Link)
- Avoid TrustedLen specialization that optimize poorly in collect_remaining_errors #160073 (Comparison Link)
- perf: Avoid a heap allocation per basic block in MoveData’s location maps #160245 (Comparison Link)
- [perf] defer the unconditional output resolution #160312 (Comparison Link)
Mixed
Rollup of 14 pull requests #160003 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.8% | [0.1%, 1.3%] | 5 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.1%] | 4 |
| All (primary) | - | - | 0 |
New solver changes are at least partially caused by https://github.com/rust-lang/rust/pull/159649. There’s a pre-merge perf run, so this is accepted for a correctness fix.
Also started perf run on https://github.com/rust-lang/rust/pull/159840 (Mark tried it before but had a typo in the command). This returned no significant results.
I don’t think we need to dig further into this. The rest are tiny secondary changes.
Rollup of 9 pull requests #160047 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.4%, 0.4%] | 2 |
| Regressions (secondary) | 0.3% | [0.1%, 0.6%] | 8 |
| Improvements (primary) | -0.8% | [-0.8%, -0.8%] | 1 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All (primary) | 0.0% | [-0.8%, 0.4%] | 3 |
Already triaged by @jhpratt: “caused by #159220”
#159220 fixes a miscompilation introduced by an optimization, so this is acceptable.
Avoid excessive memcpys with the new solver #160005 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.4% | [0.1%, 0.6%] | 7 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -1.9% | [-4.9%, -0.1%] | 15 |
| All (primary) | - | - | 0 |
Already triaged before merge. Improvements outweigh regressions, affects only new solver. There are also 20-40% improvements in crates outside the of the benchmark suite, see https://github.com/rust-lang/rust/pull/160005#issuecomment-5097871218.
Rollup of 21 pull requests #160102 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.3%, 0.3%] | 1 |
| Regressions (secondary) | 0.2% | [0.1%, 0.3%] | 11 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.1%] | 3 |
| All (primary) | 0.3% | [0.3%, 0.3%] | 1 |
Seems to be mostly caused by https://github.com/rust-lang/rust/pull/160057.
Left a comment there, the author will look into it. It looks like there’s an unexpected increase in query calls to def_kind (and therefore increase in depgraph size).
Update cargo submodule #159857 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 0.6%] | 15 |
| Regressions (secondary) | 37.3% | [0.2%, 104.0%] | 18 |
| Improvements (primary) | -0.2% | [-0.3%, -0.2%] | 3 |
| Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 1 |
| All (primary) | 0.3% | [-0.3%, 0.6%] | 18 |
Triaged by Kobzol:
“The big regression on large-workspace was expected, and comes from Cargo passing in many more -L flags to rustc, which is not optimized for something like this at the moment. In absolute wall-time numbers, it was a regression of a few milliseconds on a crate with a thousand transitive dependencies, so it shouldn’t be such a big deal in practice.
#158823 should improve the performance here considerably.”
Rollup of 25 pull requests #160238 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.1%, 0.3%] | 5 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.1%] | 6 |
| All (primary) | - | - | 0 |
Looks to be mostly noise or tiny impact. Not worth more investigation. Already triaged by @JonathanBrouwer
Unify two for_each_relevant_impl methods #159836 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 4 |
| Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 9 |
| Improvements (primary) | -2.8% | [-20.6%, -0.2%] | 16 |
| Improvements (secondary) | -0.5% | [-0.8%, -0.3%] | 7 |
| All (primary) | -2.2% | [-20.6%, 0.2%] | 20 |
Improvements outweigh regressions. The impact was measured before merge and accepted.
Flatten all -L search paths into a single list of files #158823 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
| Regressions (secondary) | 0.6% | [0.6%, 0.6%] | 3 |
| Improvements (primary) | -0.4% | [-0.6%, -0.2%] | 14 |
| Improvements (secondary) | -23.8% | [-49.2%, -0.1%] | 17 |
| All (primary) | -0.3% | [-0.6%, 0.2%] | 15 |
Improvements greatly outweigh tiny regressions (might as well be noise but not sure).
Improve CFG traversal #160193 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.2%, 0.3%] | 6 |
| Improvements (primary) | -6.4% | [-21.7%, -0.3%] | 10 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -6.4% | [-21.7%, -0.3%] | 10 |
include-blob regressions are noise.
Rollup of 12 pull requests #160339 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 15.8% | [14.6%, 17.3%] | 6 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.3% | [-0.3%, -0.2%] | 3 |
| All (primary) | - | - | 0 |
Already triaged by @JonathanBrouwer: “Caused by #160012”
Big part of the regression will be addressed by #160399.
Implement Debug for C-like enums with a concatenated string #155452 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.7%, 0.7%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.4% | [-0.7%, -0.2%] | 13 |
| All (primary) | 0.7% | [0.7%, 0.7%] | 1 |
cranelift-codegen regression is probably unrelated because it wasn’t present in the pre-merge results (it was actually an improvement there). Looks like a codegen unit scheduling change, based on the graph.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- Skipping this week
Next meetings’ agenda draft: hackmd link