T-compiler Meeting Agenda 2025-10-02
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-09-25T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Adding cargo::no-new-rust-code to speed up compilation” compiler-team#915 (Zulip)
- “Promote tvOS/watchOS/visionOS to Tier 2” compiler-team#918 (Zulip)
- “target tier 3 support for hexagon-unknown-qurt” compiler-team#919 (Zulip)
- “Turn emscripten-wasm-eh unwinding ABI on by default” compiler-team#920 (Zulip)
- 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: 3 months ago)
- concern: path-to-stabilization
- “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: 2 months ago)
- concern: needs-a-blog-post
- concern: needs-a-sufficiently-long-deprecation-timeline
- concern: broad-change-needs-tlang-buy-in-possibly-fcp
- “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: 6 months ago)
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: 2 months ago)
- “Unify ui test inline error annotation style” compiler-team#859 (Zulip) (last review activity: about 54 days ago)
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip) (last review activity: 3 months ago)
- “Add support for specifying split-debuginfo=unpacked output directory” compiler-team#871 (Zulip) (last review activity: 5 months ago)
- “WebAssembly for procedural macros” compiler-team#876 (Zulip) (last review activity: 2 months ago)
- concern: proposal-wording
- “Promote
armv7-unknown-linux-musleabihfto tier 2 with host tools” compiler-team#888 (Zulip) (last review activity: 2 months ago)- concern: lack-of-maintainers
- “Relative VTables for Rust” compiler-team#903 (Zulip) (last review activity: 2 months ago)
- “Experiment with replacing specialization in libcore with downcasting” compiler-team#904 (Zulip) (last review activity: 2 months ago)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 3 months ago)
- Pending FCP requests (check your boxes!)
- merge: Promote
riscv64a23-unknown-linux-gnuto Tier 2 with host tools (compiler-team#910)- @|124288 @|125250 @|119031 @|426609 @|116122 @|116118 @|259697 @|444933
- concerns: no-hardware-available (by davidtwco) unclear-justification (by jieyouxu)
- merge: sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets (rust#123617)
- no pending checkboxes
- concerns: stabilization-scope (by wesleywiser)
- merge: Stabilize -Zno-jump-tables into -Cjump-tables=bool (rust#145974)
- @|116266 @|124288 @|125250 @|116107 @|119031 @|426609 @_|444933
- no pending concerns
- merge: Stabilize stack-protector (rust#146369)
- @|116266 @|119031 @|426609 @|116122 @_|444933
- concerns: mitigation-enforcement (by Noratrieb)
- merge: Remove current code for embedding command-line args in PDB (rust#147022)
- @|116266 @|124288 @|125250 @|119031
- 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: inhibit-opts
- concern: lose-debuginfo-data
- concern: impl-at-mir-level
- “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
- “Promote armv7a-none-eabihf to Tier 2” compiler-team#913 (Zulip)
- “Promote armv8r-none-eabihf to Tier 2” compiler-team#914 (Zulip)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Demote both armebv7r-none-* targets” compiler-team#912 (Zulip)
- MCPs blocked on unresolved concerns
- “Split the
-openbsd*targets by version” compiler-team#916 (Zulip)- concern: nonsystematic-breakage
- concern: why-not-ports-rustc
- concern: version-churn
- “Add Wild linker as a preview component for x86_64 and AArch64 Linux GNU” compiler-team#917 (Zulip)
- concern: unofficial project
- “Split the
- Finalized FCPs (disposition merge)
- “Fix backtraces with
-C panic=aborton linux; emit unwind tables by default” rust#143613
- “Fix backtraces with
- Other teams finalized FCPs
- “Allow
&raw [mut | const]for union field in safe code” rust#141469 - “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 - “Stabilize
std::panic::Location::file_as_c_str” rust#145664 - “the
#[track_caller]shim should not inherit#[no_mangle]” rust#145724 - “Deny-by-default never type lints” rust#146167
- “Allow specifying multiple bounds for same associated item, except in trait objects” rust#146593
- “Allow
Backport nominations
T-compiler beta / T-compiler stable
- Make #[link=“dl”] an FCW rather than an error by JonathanBrouwer · Pull Request #147262 · rust-lang/rust
- Fixes #147254 (hard error which should just be a FCW for now)
- Voting Zulip topic, in favor
- :beta: “Warn on future errors from temporary lifetimes shortening in Rust 1.92” rust#147056
- Authored by @dianne (cc @lcnr , @Jieyou Xu, @theemathas for discussion)
- Voting Zulip topic
- Implements a FCW to mitigate #145838 (introduced a breaking change to formatting and lifetimes in macros)
- beta 1.91 will be stable on october 30th
- Option 2: Revert the breaking change in #145838 and fix the issue with #146098 which would undo the breaking (comment). #146098 is being discussed by T-lang
- :beta: “remove incorrect fast path” rust#146919
- Authored by lcnr
- Fixes #146813 (a P-high stable regression)
- Perf. run shows minor regressions (comment)
- Voting Zulip topic, in favor
- :stable: “remove incorrect fast path” rust#146919
- Authored by lcnr
- Voting Zulip topic, now in favor as well (after we have perf. run data). Not so pressing for a dot release.
- No beta nominations for
T-typesthis time. - No stable nominations for
T-typesthis time.
PRs S-waiting-on-team
- “Tracking Issue for
bare_link_kind” rust#132061 - “Add new
function_casts_as_integerlint” rust#141470 - “error out when
repr(align)exceeds COFF limit” rust#142638 - “Stabilize -Zno-jump-tables into -Cjump-tables=bool” rust#145974
- “arbitrary_self_types: Split the Autoderef chain” rust#146095
- “Add lint about redefining runtime symbols” rust#146505
- “Remove current code for embedding command-line args in PDB” rust#147022
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 57 T-compiler P-high issues
- 1 P-critical, 3 P-high, 2 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, 28 P-high, 100 P-medium, 25 P-low regression-from-stable-to-stable
P-critical
- “
#[link="dl"]should be an FCW, not a hard error. Affects 450+ crates.” rust#147254
- No
P-criticalissues forT-typesthis time.
P-high regressions
- “
alloc-variant-zeroedcausing issues with LTO” rust#145995- in beta reverted by #147030 and then fixed by #146766 (waiting for feedback from the issue reporter)
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
A relatively quiet week. Most of the improvements are to doc builds, driven by continued packing of the search index in rustdoc-search: stringdex update with more packing #147002 and simplifications to doc(cfg) in Implement RFC 3631: add rustdoc doc_cfg features #138907.
Triage done by @simulacrum. Revision range: ce4beebe..8d72d3e1
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.1%, 1.6%] | 19 |
| Regressions (secondary) | 0.5% | [0.1%, 2.7%] | 39 |
| Improvements (primary) | -0.9% | [-8.5%, -0.1%] | 66 |
| Improvements (secondary) | -0.4% | [-3.2%, -0.1%] | 80 |
| All (primary) | -0.6% | [-8.5%, 1.6%] | 85 |
1 Regressions, 6 Improvements, 4 Mixed; 2 of them in rollups 29 artifact comparisons made in total
Regressions
remove incorrect fast path #146919 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.5% | [0.1%, 0.8%] | 15 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | - | - | 0 |
Necessary regression for correctness.
Improvements
Avoid invalidating CFG caches from MirPatch::apply. #146697 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.2%, -0.1%] | 3 |
| Improvements (secondary) | -0.3% | [-0.4%, -0.1%] | 10 |
| All (primary) | -0.2% | [-0.2%, -0.1%] | 3 |
support opaque types in method selection #146885 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.1%] | 10 |
| All (primary) | - | - | 0 |
Remove most #[track_caller] from allocating Vec methods #147042 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.9% | [0.9%, 0.9%] | 1 |
| Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 4 |
| Improvements (primary) | -0.3% | [-0.7%, -0.1%] | 37 |
| Improvements (secondary) | -0.3% | [-0.5%, -0.0%] | 26 |
| All (primary) | -0.3% | [-0.7%, 0.9%] | 38 |
rustdoc-search: use the same ID for entry and path to same item #147045 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.1% | [-0.2%, -0.1%] | 3 |
| Improvements (secondary) | -0.2% | [-0.4%, -0.1%] | 2 |
| All (primary) | -0.1% | [-0.2%, -0.1%] | 3 |
JumpThreading: Avoid computing dominators to identify loop headers. #146829 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
| Improvements (primary) | -0.2% | [-0.3%, -0.2%] | 2 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.2%] | 2 |
| All (primary) | -0.2% | [-0.3%, -0.2%] | 2 |
One regression is bimodality.
rustdoc-search: stringdex update with more packing #147002 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 1 |
| Improvements (primary) | -1.9% | [-5.8%, -0.2%] | 6 |
| Improvements (secondary) | -1.2% | [-3.1%, -0.1%] | 3 |
| All (primary) | -1.9% | [-5.8%, -0.2%] | 6 |
One regression is bimodality.
Mixed
Rollup of 8 pull requests #147037 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 2 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 2 |
| Improvements (primary) | -1.0% | [-1.1%, -0.9%] | 2 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.4% | [-1.1%, 0.1%] | 4 |
Several rustdoc changes, including what looks like net-new feature work. I don’t think it’s worth digging deeper into the relatively small, relatively few-benchmark-affecting doc regressions here.
Extended temporary argument to format_args!() in all cases #145882 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.2%, 0.8%] | 15 |
| Regressions (secondary) | 0.5% | [0.0%, 2.9%] | 19 |
| Improvements (primary) | -1.0% | [-1.7%, -0.4%] | 5 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.1%] | 3 |
| All (primary) | 0.0% | [-1.7%, 0.8%] | 20 |
Correctness fix, likely affects a bunch of code across the compiler and probably not worth digging deeper.
Rollup of 10 pull requests #147074 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.3%] | 4 |
| Regressions (secondary) | 0.3% | [0.1%, 0.5%] | 3 |
| Improvements (primary) | -0.3% | [-0.3%, -0.3%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.1% | [-0.3%, 0.3%] | 5 |
Regression in a few benchmarks that seem to have slowly regressed over several commits…. Mostly limited to incremental scenarios, but I’m not seeing anything obvious in this PR related to incremental – given it’s a rollup doesn’t seem worth digging further. Cachegrind results show regressions mostly in fluent_syntax/bundle loading, which doesn’t clearly map to any of the contained PRs.
Implement RFC 3631: add rustdoc doc_cfg features #138907 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.1%, 0.6%] | 6 |
| Regressions (secondary) | 0.4% | [0.1%, 0.6%] | 17 |
| Improvements (primary) | -1.6% | [-4.2%, -0.3%] | 12 |
| Improvements (secondary) | -0.4% | [-1.0%, -0.1%] | 4 |
| All (primary) | -1.0% | [-4.2%, 0.6%] | 18 |
Mixed results, but since it’s a new feature and an overall improvement seems acceptable.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Next meetings’ agenda draft: hackmd link