T-compiler Meeting Agenda 2025-03-27
Announcements
- Tomorrow time:2025-03-28T09:00:00-05:00 meeting about “Cleanup of T-compiler stale proposals” (meeting proposal)
- HackMD document (WIP)
- Next week release of Rust 1.86.0 blog post draft
- All old Working Groups Zulip channels are now read-only and renamed, see mcp#848
- Archived Working Groups will soon be removed from the Governance page of the Rust website
- 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
- Stable MIR Weekly Meeting time:2025-03-28T17:00:00+01:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Enable autodiff testcases in CI” compiler-team#855 (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: 6 months ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 5 months ago)
- “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 5 months ago)
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip) (last review activity: about 13 days ago)
- “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)
- “
rustc_targetfor rust-analyzer” compiler-team#839 (Zulip) (last review activity: about 33 days ago) - “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: about 20 days ago)
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 6 days ago)
- “Add one more “late metadata”/“digest” file to rlib archives” compiler-team#853 (Zulip) (last review activity: about 6 days ago)
- Pending FCP requests (check your boxes!)
- “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
- “Warn about C-style octal literals” rust#131309
- “Stabilize
-Zdwarf-versionas-Cdwarf-version” rust#136926
- Things in FCP (make sure you’re good with it)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- cc @Wesley Wiser I think @_Sparrow Li needs some feedback
- “Policy: Require MCP and relevant team nominations for adding (ecosystem, custom codegen backend) testing jobs that would block PR/Merge CI and require documenting failure protocol” compiler-team#845 (Zulip)
- “Split
run-maketest suite into slower-building test suite with suitably-staged cargo and faster-building test suite without cargo” compiler-team#847 (Zulip) - “Add
-Zsplit-metadataflag to reduce disk usage” compiler-team#851 (Zulip) - “Allow boolean literals in
--check-cfg” compiler-team#854 (Zulip)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Enable
warn(unused_crate_dependencies)onrustc_*crates” compiler-team#844 (Zulip) - “Add
--print=llvm-target-tuple” compiler-team#846 (Zulip) - “Renaming Zulip T-compiler WGs streams” compiler-team#848 (Zulip)
- “Enable
- MCPs blocked on unresolved concerns
- “Add
-C hint-mostly-unusedoption” compiler-team#829 (Zulip) (last review activity: about 58 days ago) - “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: automatic-sync
- “Add
- Finalized FCPs (disposition merge)
- “Add
--print host-tupleto print host target tuple” rust#125579 - “make unsupported_calling_conventions a hard error” rust#129935
- “Fix ICE when passing DefId-creating args to legacy_const_generics.” rust#130443
- “Stabilize WebAssembly
multivalue,reference-types, andtail-calltarget features” rust#131080 - “Lint on combining
#[no_mangle]and#[export_name]” rust#131558
- “Add
- Other teams finalized FCPs
- “Add lint against function pointer comparisons” rust#118833
- “Fixup Windows verbatim paths when used with the
include!macro” rust#125205 - “Uplift
clippy::double_neglint asdouble_negations” rust#126604 - “Allow dropping
dyn Traitprincipal” rust#126660 - “atomics: allow atomic and non-atomic reads to race” rust#128778
- “Lint against getting pointers from immediately dropped temporaries” rust#128985
- “Do not consider match/let/ref of place that evaluates to
!to diverge, disallow coercions from them too” rust#129392 - “Make deprecated_cfg_attr_crate_type_name a hard error” rust#129670
- “Stabilize expr_2021 fragment specifier in all editions” rust#129972
- “Check elaborated projections from dyn don’t mention unconstrained late bound lifetimes” rust#130367
- “Finish stabilization of
result_ffi_guarantees” rust#130628 - “Stabilize const
ptr::write*andmem::replace” rust#130954 - “Stabilize s390x inline assembly” rust#131258
- “Stabilize Arm64EC inline assembly” rust#131781
- “Always display first line of impl blocks even when collapsed” rust#132155
- “rework winnowing to sensibly handle global where-bounds” rust#132325
- “mark is_val_statically_known intrinsic as stably const-callable” rust#132449
- “Fix ICE when multiple supertrait substitutions need assoc but only one is provided” rust#133392
- “[rustdoc] Add sans-serif font setting” rust#133636
- “disallow
repr()on invalid items” rust#133925 - “Make the wasm_c_abi future compat warning a hard error” rust#133951
- “fully de-stabilize all custom inner attributes” rust#134276
- “remove long-deprecated no-op attributes no_start and crate_id” rust#134300
- “Stabilize
feature(trait_upcasting)” rust#134367 - “Fix parsing of ranges after unary operators” rust#134900
- “Future incompatibility warning
unsupported_fn_ptr_calling_conventions: Also warn in dependencies” rust#135767 - “Reject
?Traitbounds in various places where we unconditionally warned since 1.0” rust#135841 - “Make cenum_impl_drop_cast a hard error” rust#135964
- “Allow
*const W<dyn A> -> *const dyn Aptr cast” rust#136127 - “Do not deduplicate list of associated types provided by dyn principal” rust#136458
- “Do not allow attributes on struct field rest patterns” rust#136490
- “Make
ptr_cast_add_auto_to_objectlint into hard error” rust#136764 - “Turn order dependent trait objects future incompat warning into a hard error” rust#136968
- “add a “future” edition” rust#137606
- “Stabilize
#![feature(precise_capturing_in_traits)]” rust#138128
Backport nominations
T-compiler beta / T-compiler stable
- No beta nominations for
T-compilerthis time. - 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-team
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 59 T-compiler P-high issues
- 0 P-critical, 1 P-high, 2 P-medium, 2 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 33 P-high, 100 P-medium, 20 P-low regression-from-stable-to-stable
P-critical
- No
P-criticalissues forT-compilerthis time.
- No
P-criticalissues forT-typesthis time.
P-high regressions
- None
Unassigned P-high nightly regressions
- “
rustc.exe -vVdidn’t exit successfully (exit code: 0xc000007b) oni686-pc-windows-gnu” rust#136795- fixed by (beta-backport approved) #136815
Performance logs
A nearly noise-free week, which is exciting, with a number of fairly large improvements landing for a cumulative average speed up 0.5%, possibly larger if we ignore the likely to be fixed or reverted regressions from #138674.
Triage done by @simulacrum. Revision range: 493c38ba..4510e86a
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 3.4% | [0.2%, 13.5%] | 17 |
| Regressions (secondary) | 2.2% | [0.2%, 6.9%] | 38 |
| Improvements (primary) | -1.0% | [-4.9%, -0.1%] | 135 |
| Improvements (secondary) | -1.4% | [-4.3%, -0.2%] | 118 |
| All (primary) | -0.5% | [-4.9%, 13.5%] | 152 |
3 Regressions, 4 Improvements, 2 Mixed; 3 of them in rollups 35 artifact comparisons made in total
Regressions
Rollup of 10 pull requests #138693 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 6.8% | [0.5%, 14.7%] | 10 |
| Regressions (secondary) | 3.2% | [0.2%, 9.5%] | 32 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 6.8% | [0.5%, 14.7%] | 10 |
Significant regression in query methods due to https://github.com/rust-lang/rust/pull/138674, @oli-obk is bisecting which of the changes actually caused it (it should have been a no-op PR).
expand: Leave traces when expanding cfg_attr attributes #138515 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.4% | [0.1%, 1.8%] | 29 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.4% | [0.1%, 1.8%] | 29 |
Slight regressions are expected as we’re preserving more information for later in the compiler (see comment in https://github.com/rust-lang/rust/pull/138515#issuecomment-2726426176).
Only use the new node hashmap for anonymous nodes #138629 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.1%, 0.5%] | 31 |
| Regressions (secondary) | 0.4% | [0.1%, 0.8%] | 17 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
| All (primary) | 0.3% | [0.1%, 0.5%] | 31 |
Perf turns on incremental-verify-ich, but this should have no effect on builds with that turned off.
Improvements
Rollup of 7 pull requests #138630 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.1% | [-0.2%, -0.1%] | 5 |
| Improvements (secondary) | -0.4% | [-0.7%, -0.2%] | 4 |
| All (primary) | -0.1% | [-0.2%, -0.1%] | 5 |
Represent diagnostic side effects as dep nodes #122156 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.7% | [-1.4%, -0.2%] | 117 |
| Improvements (secondary) | -0.9% | [-1.6%, -0.0%] | 37 |
| All (primary) | -0.7% | [-1.4%, -0.2%] | 117 |
Rollup of 10 pull requests #138873 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.1% | [0.1%, 0.1%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -2.2% | [-4.3%, -0.2%] | 20 |
| Improvements (secondary) | -1.3% | [-3.7%, -0.2%] | 98 |
| All (primary) | -2.1% | [-4.3%, 0.1%] | 21 |
Optimize hash map operations in the query system #115747 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.2% | [-0.4%, -0.1%] | 20 |
| Improvements (secondary) | -0.2% | [-0.3%, -0.1%] | 24 |
| All (primary) | -0.2% | [-0.4%, -0.1%] | 20 |
Mixed
Consider fields to be inhabited if they are unstable #133889 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 3 |
| Regressions (secondary) | 1.4% | [0.3%, 1.9%] | 11 |
| Improvements (primary) | -0.0% | [-0.0%, -0.0%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.1% | [-0.0%, 0.2%] | 4 |
This is a soundness fix and the regression is limited to our stress test for this area of the code:
The perf diff is in the match exhaustiveness stress-test. I don’t think we’re running any new code for this test, but it’s always very sensitive to things like inlining decisions so I’m not surprised. Good to know, and ok to ignore.
(https://github.com/rust-lang/rust/pull/133889)
Reduce FormattingOptions to 64 bits #136974 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 3 |
| Improvements (primary) | -0.4% | [-0.5%, -0.2%] | 7 |
| Improvements (secondary) | -1.5% | [-1.5%, -1.5%] | 1 |
| All (primary) | -0.4% | [-0.5%, -0.2%] | 7 |
Regressions are limited to the coercions secondary benchmark, which sometimes
has natural bimodality. It doesn’t seem worth further investigation into this
regression given the limited regression.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Improve parse item fallback” rust#125388 (last review activity: 10 months ago)
- cc: @Esteban Küber
- “Silence errors in expressions caused by bare traits in paths in 2021 edition” rust#125784 (last review activity: 9 months ago)
- cc: @Esteban Küber for a rebase, cc: @_León Orell Liehr (fmease) for review
- “collect doc alias as tips during resolution” rust#127721 (last review activity: 8 months ago)
- cc @Esteban Küber
- “Detect tuple structs that are unconstructable due to re-export” rust#133477 (last review activity: 4 months ago)
- cc: @cjgillot
- “Share the naked asm impl between cg_ssa and cg_clif” rust#134232 (last review activity: 3 months ago)
- cc @Esteban Küber
- “Look at proc-macro attributes when encountering unknown attribute” rust#134841 (last review activity: 2 months ago)
- cc @Wesley Wiser
Next meetings’ agenda draft: hackmd link