T-compiler Meeting Agenda 2025-04-03
Announcements
- New rustc 1.86 release: https://blog.rust-lang.org/2025/04/03/Rust-1.86.0.html
- Tomorrow time:2025-04-04T16:00:00+02:00 Design meeting about parallel compilation support strategy mcp#492
- cc: @Sparrow Li @Zoxc
- Draft for meeting agenda: https://hackmd.io/HWL6sKDySqaHlXvs1cL6tA (feel free to edit!)
- 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-04-03T19:00:00+02:00
- Stable MIR Weekly Meeting time:2025-04-04T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “
-Zemit-code-for-final-artifact-to-link(officially supported__rust_allocreplacement)” compiler-team#858 (Zulip)- relevant issue: #139265
- “
- 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 20 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)
- “Add
-C hint-mostly-unusedoption” compiler-team#829 (Zulip) (last review activity: 2 months ago) - “
rustc_targetfor rust-analyzer” compiler-team#839 (Zulip) (last review activity: about 40 days ago) - “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: about 26 days ago)
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 13 days ago)
- “Add one more “late metadata”/“digest” file to rlib archives” compiler-team#853 (Zulip) (last review activity: about 13 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)
- concern: inhibit-opts
- concern: impl-at-mir-level
- concern: lose-debuginfo-data
- “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)
- “Allow boolean literals in
--check-cfg” compiler-team#854 (Zulip) - “Enable autodiff testcases in CI” compiler-team#855 (Zulip)
- “Review rotation policy: remove reviewer from active review rotation if there’s prolonged lack of feedback on randomly-rolled PRs / indication that unavailability is temporary” compiler-team#856 (Zulip)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- Accepted MCPs
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- “Enable
warn(unused_crate_dependencies) onrustc_*` crates” compiler-team#844 (Zulip) - “Add
--print=llvm-target-tuple” compiler-team#846 (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) - “Renaming Zulip T-compiler WGs streams” compiler-team#848 (Zulip)
- “Add
-Zsplit-metadataflag to reduce disk usage” compiler-team#851 (Zulip)
- MCPs blocked on unresolved concerns
- Finalized FCPs (disposition merge)
- “Add
--print host-tupleto print host target tuple” rust#125579 - “Do not consider match/let/ref of place that evaluates to
!to diverge, disallow coercions from them too” rust#129392 - “make unsupported_calling_conventions a hard error” rust#129935
- “Check elaborated projections from dyn don’t mention unconstrained late bound lifetimes” rust#130367
- “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 - “Always display first line of impl blocks even when collapsed” rust#132155
- “rework winnowing to sensibly handle global where-bounds” rust#132325
- “Fix ICE when multiple supertrait substitutions need assoc but only one is provided” rust#133392
- “[rustdoc] Add sans-serif font setting” rust#133636
- “Reject
?Traitbounds in various places where we unconditionally warned since 1.0” rust#135841 - “Remove backticks from
ShouldPanic::YesWithMessage’sTrFailedMsg” rust#136160 - “Do not deduplicate list of associated types provided by dyn principal” rust#136458
- “add a “future” edition” rust#137606
- “Prefer built-in sized impls (and only sized impls) for rigid types always” rust#138176
- “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 - “Remove backticks from
ShouldPanic::YesWithMessage’sTrFailedMsg” rust#136160 - “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 - “Prefer built-in sized impls (and only sized impls) for rigid types always” rust#138176
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
- “Better errors with bad/missing identifiers in MBEs” rust#118939
- “Implement RFC 3349, mixed utf8 literals” rust#120286
- “Emit a warning if a
matchis too complex” rust#122685 - “privacy: normalize associated types before visiting” rust#126076
- “Warn about C-style octal literals” rust#131309
- “lexer: Treat more floats with empty exponent as valid tokens” rust#131656
- “Tracking Issue for
bare_link_kind” rust#132061 - “Lint on fn pointers comparisons in external macros” rust#134536
- “aarch64-softfloat: forbid enabling the neon target feature” rust#135160
- “Stabilize
-Zdwarf-versionas-Cdwarf-version” rust#136926 - Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 56 T-compiler P-high issues
- 0 P-critical, 0 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, 32 P-high, 100 P-medium, 21 P-low regression-from-stable-to-stable
P-critical
- No
P-criticalissues forT-compilerthis time.
- No
P-criticalissues forT-typesthis time.
P-critical nightly regression
- “
__rust_alloccan no longer be used to provide a custom allocator” rust#139265- Chromium uses a different linker (clang’s one), they cannot build on nightly anymore since #127213
- Did we in any (more or less) official way support this?
- @RalfJ suggests a stopgap solution (comment)
- In the long run should be solved by compiler-team#858
- Downgrade as not a release stopper?
P-high regressions
- No
P-highbeta regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-highnightly regressions this time.
Performance logs
Positive week, with a lot of primary improvements and just a few secondary regressions. Single big regression got reverted.
Triage done by @panstromek (recently joined perf. triaging! :tada:) Revision range: 4510e86a..2ea33b59
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.9% | [0.2%, 1.5%] | 17 |
| Improvements (primary) | -0.4% | [-4.5%, -0.1%] | 136 |
| Improvements (secondary) | -0.6% | [-3.2%, -0.1%] | 59 |
| All (primary) | -0.4% | [-4.5%, -0.1%] | 136 |
1 Regression, 6 Improvements, 4 Mixed; 3 of them in rollups 39 artifact comparisons made in total
Regressions
perform less decoding if it has the same syntax context #129827 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.9% | [0.1%, 3.8%] | 77 |
| Regressions (secondary) | 2.3% | [0.2%, 6.1%] | 37 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
| All (primary) | 0.9% | [0.1%, 3.8%] | 77 |
Reverted in #139130.
Improvements
rustdoc: Rearrange Item/ItemInner. #138927 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.3% | [-0.3%, -0.3%] | 2 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.3% | [-0.3%, -0.3%] | 2 |
Rollup of 7 pull requests #139023 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.4% | [-0.5%, -0.2%] | 21 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 1 |
| All (primary) | -0.4% | [-0.5%, -0.2%] | 21 |
Avoid wrapping constant allocations in packed structs when not necessary #138503 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -1.6% | [-4.9%, -0.3%] | 6 |
| Improvements (secondary) | -2.0% | [-3.3%, -0.3%] | 9 |
| All (primary) | -1.6% | [-4.9%, -0.3%] | 6 |
Rollup of 7 pull requests #139054 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -0.4% | [-2.2%, -0.1%] | 9 |
| All (primary) | - | - | 0 |
Remove terminating_scopes hash set. #139067 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.1% | [-0.1%, -0.1%] | 1 |
| Improvements (secondary) | -0.1% | [-0.2%, -0.1%] | 9 |
| All (primary) | -0.1% | [-0.1%, -0.1%] | 1 |
Revert “Auto merge of #129827 - bvanjoi:less-decoding, r=petrochenkov” #139130 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.5% | [0.4%, 0.6%] | 2 |
| Improvements (primary) | -0.9% | [-3.6%, -0.1%] | 74 |
| Improvements (secondary) | -2.2% | [-5.7%, -0.2%] | 37 |
| All (primary) | -0.9% | [-3.6%, -0.1%] | 74 |
Addresses the regression above.
Mixed
Rollup of 9 pull requests #138923 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.9% | [0.2%, 1.4%] | 14 |
| Improvements (primary) | -0.6% | [-0.6%, -0.6%] | 1 |
| Improvements (secondary) | -0.3% | [-0.6%, -0.2%] | 10 |
| All (primary) | -0.6% | [-0.6%, -0.6%] | 1 |
Regressions for unused-warnings, seems to be somewhere in the frontend (check build regressed the most).
Seems like it’s #138580.
Quoting comment from the author
Probably fine, unused-warnings is a stress test for single_imports.
Part of it is probably continuation of that PR in #138837
hygiene: Ensure uniqueness of SyntaxContextDatas #130324 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.1%, 0.2%] | 2 |
| Improvements (primary) | -0.4% | [-0.7%, -0.2%] | 30 |
| Improvements (secondary) | -0.5% | [-0.5%, -0.5%] | 3 |
| All (primary) | -0.4% | [-0.7%, -0.2%] | 30 |
Improvements outweigh regressions. Regression tt-muncher seems spurious (the benchmark got back to previous state in a following rollup). deep-vector looks like noise.
Remove prev_index_to_index field from CurrentDepGraph #138824 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.3% | [0.3%, 0.4%] | 3 |
| Improvements (primary) | -0.3% | [-0.4%, -0.2%] | 30 |
| Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 3 |
| All (primary) | -0.3% | [-0.4%, -0.2%] | 30 |
Instruction count improvements outweigh regressions. Regression in unused-warnings looks real, but small.
There’s a somewhat large max-rss and wall-time regression in small incremental scenarios.
Simplify expansion for format_args!(). #139131 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.2% | [0.2%, 0.2%] | 1 |
| Improvements (primary) | -0.5% | [-0.8%, -0.2%] | 8 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 1 |
| All (primary) | -0.5% | [-0.8%, -0.2%] | 8 |
Pre-merge results look better than post-merge. Single regression in tt-muncher looks like noise.
Nominated Issues
- No I-compiler-nominated issues this time.
- “RFC:
--crate-attr” rfcs#3791
Oldest PRs waiting for review
- “Do not eagerly reject inference vars when trying to resolve method calls.” rust#126316 (last review activity: 9 months ago)
- cc: @lcnr
- “[Coverage][MCDC] Do not initialize mcdc parameters for instances containing no mcdc statements” rust#129989 (last review activity: 5 months ago)
- cc: @Zalathar (I think the contributor has some pending questions)
- “Show pending obligations as unsatisfied constraints in
report_similar_impl_candidates” rust#134348 (last review activity: 3 months ago)- cc: @Michael Goulet (compiler-errors) (worth pursuing?)
- “Look at proc-macro attributes when encountering unknown attribute” rust#134841 (last review activity: 3 months ago)
- cc: @Wesley Wiser , @Esteban Küber for a rebase when you have a chance
- “Implement asymmetrical precedence for closures and jumps” rust#134847 (last review activity: 3 months ago)
- cc @León Orell Liehr (fmease)
- “Move coroutine upvars into locals for better memory economy” rust#135527 (last review activity: 2 months ago)
- Shouldn’t this go through some T-lang/T-compiler approval process? See comment
Next meetings’ agenda draft: hackmd link