T-compiler Meeting Agenda 2025-05-08
Announcements
- Next week, release of Rust 1.87 (“10 Years Edition” :birthday: ), blog post
- 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-05-08T19:00:00+02:00
- Stable MIR Weekly Meeting time:2025-05-09T17:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- No new proposals this time.
- 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: 7 months ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 6 months ago)
- “Policy change around adding new unstable flags” compiler-team#787 (Zulip) (last review activity: 6 months ago)
- “setup typos check in CI (for rust repo)” compiler-team#817 (Zulip) (last review activity: about 54 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: 3 months ago)
- “Compile UI tests as libraries by default” compiler-team#842 (Zulip) (last review activity: 2 months ago)
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 47 days ago)
- “Add one more “late metadata”/“digest” file to rlib archives” compiler-team#853 (Zulip) (last review activity: about 47 days ago)
- “Unify ui test inline error annotation style” compiler-team#859 (Zulip) (last review activity: about 19 days ago)
- “Introduce debug information to statements in MIR” compiler-team#867 (Zulip) (last review activity: about 5 days ago)
- “Flags for retpoline mitigation” compiler-team#868 (Zulip) (last review activity: about 5 days ago)
- “Flags for mitigating straight line speculation” compiler-team#869 (Zulip) (last review activity: about 5 days ago)
- “Promote Solaris Targets to Tier 2 with Host Tools” compiler-team#870 (Zulip) (last review activity: about 5 days ago)
- “Add support for specifying split-debuginfo=unpacked output directory” compiler-team#871 (Zulip) (last review activity: about 5 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
- “Add
target_env = "macabi"andtarget_env = "sim"” rust#139451 - “Use lld by default on
x86_64-unknown-linux-gnustable” rust#140525
- Things in FCP (make sure you’re good with it)
- “Extend
--printrequests with output format suffixes” compiler-team#860 (Zulip) - “Tier 3 target proposal: bare-metal loongarch32” compiler-team#865 (Zulip)
- “Extend
- Accepted MCPs
- No new accepted proposals this time.
- MCPs blocked on unresolved concerns
- “Add
-C hint-mostly-unusedoption” compiler-team#829 (Zulip) - “Run the UI test suite with multiple editions” compiler-team#861 (Zulip)
- concern: edition-directive-meaning
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip)
- concern: ask-libs-consensus-on-limited-std-support
- concern: fd-duplication
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: inhibit-opts
- concern: impl-at-mir-level
- concern: lose-debuginfo-data
- @Wesley Wiser can you have a look into it? I think this was waiting on you
- “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 - “Stabilize
-Zdwarf-versionas-Cdwarf-version” rust#136926
- “Add
- Other teams finalized FCPs
- “Implement a lint for implicit autoref of raw pointer dereference - take 2” rust#123239
- “Fixup Windows verbatim paths when used with the
include!macro” rust#125205 - “Uplift
clippy::double_neglint asdouble_negations” rust#126604 - “atomics: allow atomic and non-atomic reads to race” rust#128778
- “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
- “lexer: Treat more floats with empty exponent as valid tokens” rust#131656
- “Stabilize Arm64EC inline assembly” rust#131781
- “Always display first line of impl blocks even when collapsed” rust#132155
- “mark is_val_statically_known intrinsic as stably const-callable” rust#132449
- “Stabilize let chains in the 2024 edition” rust#132833
- “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
- “de-stabilize bench attribute” rust#134273
- “fully de-stabilize all custom inner attributes” rust#134276
- “remove long-deprecated no-op attributes no_start and crate_id” rust#134300
- “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 allow attributes on struct field rest patterns” rust#136490
- “add a “future” edition” rust#137606
- “Stabilize
#![feature(precise_capturing_in_traits)]” rust#138128 - “Stabilize
cfg_boolean_literals” rust#138632 - “Make closure capturing have consistent and correct behaviour around patterns” rust#138961
- “Do not remove trivial
SwitchIntin analysis MIR” rust#139042 - “indirect-const-stabilize the
exact_divintrinsic” rust#139163 - “make abi_unsupported_vector_types a hard error” rust#139309
- “check types of const param defaults” rust#139646
- “Unify sidebar buttons to use the same image” rust#140135
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “[beta] [also fit for beta rollup] [HOTFIX] Don’t delay a bug on malformed meta items involving interpolated tokens” rust#140601
- Authored by fmease
- Fixes #140612, P-critical regression in the latest crater run, affects user created macros
- Scheduled for rollup, @Jieyou Xu is it approved, correct?
- Waiting on T-compiler beta backport approval. Would backport directly on
betabranch before May, 12th
- :beta: “Report the
unsafe_attr_outside_unsafelint at the closest node” rust#140617- Authored by Urgau
- Affects code for editions 2015-2021 (regression is on stable)
- @Jieyou Xu comments:
This PR fixes #140602, where it wasn’t possible to #[allow(unsafe_attr_outside_unsafe)] in scopes within crate root, e.g. the following will error and not compile
- 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
- 2 T-compiler P-critical issues
- 56 T-compiler P-high issues
- 1 P-critical, 0 P-high, 1 P-medium, 2 P-low regression-from-stable-to-beta
- 1 P-critical, 2 P-high, 1 P-medium, 0 P-low regression-from-stable-to-nightly
- 0 P-critical, 30 P-high, 100 P-medium, 20 P-low regression-from-stable-to-stable
P-critical
- “closures in dead code are no longer borrowchecked” rust#140583
- regression in nightly (slip into beta soon)
- Fixed by #140590, being reviewed (thanks @_lcnr)
- “regression: ICE: expr in place where literal is expected (builtin attr parsing)” rust#140612
- Fixed by #140601
- No
P-criticalissues forT-typesthis time.
P-high regressions
- No
P-highbeta regressions this time.
Unassigned P-high nightly regressions
- “Performance regression in nightly with target-cpu=native on znver4” rust#139370
- Investigation led to upstream LLVM issue llvm-project#137808
Performance logs
A relatively noisy week due to addition of new benchmarks as part of our 2025 benchmark update, and a number of large regressions in a rollup landing late in the week, with investigation here.
Triage done by @simulacrum. Revision range: 25cdf1f6..62c5f58f
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.9% | [0.2%, 14.4%] | 47 |
| Regressions (secondary) | 2.0% | [0.1%, 11.8%] | 156 |
| Improvements (primary) | -0.6% | [-3.4%, -0.2%] | 34 |
| Improvements (secondary) | -1.6% | [-3.7%, -0.3%] | 20 |
| All (primary) | 0.9% | [-3.4%, 14.4%] | 81 |
2 Regressions, 2 Improvements, 6 Mixed; 3 of them in rollups 31 artifact comparisons made in total
Regressions
Introduce Arena::try_alloc_from_iter. #140023 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.3%, 0.4%] | 3 |
| Regressions (secondary) | 0.3% | [0.1%, 0.4%] | 15 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.3% | [0.3%, 0.4%] | 3 |
Regressions look plausibly real (they’ve held up for a bit) but given they’re small and limited to just doc builds I’m inclined to accept. It seems plausible this is just some slight differences in the ABI of the functions here or similar. Marking as triaged.
Set groundwork for proper const normalization #140549 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.3%, 1.4%] | 3 |
| Regressions (secondary) | 0.5% | [0.1%, 0.6%] | 7 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 0.7% | [0.3%, 1.4%] | 3 |
Mostly what looks like inlining noise. See comment for more details.
Improvements
perf: delay checking of #[rustc_no_implicit_autorefs] in autoref lint #140406 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -1.2% | [-3.4%, -0.2%] | 13 |
| Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 1 |
| All (primary) | -1.2% | [-3.4%, -0.2%] | 13 |
Use a closure instead of three chained iterators #140464 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.3% | [-0.6%, -0.2%] | 13 |
| Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 2 |
| All (primary) | -0.3% | [-0.6%, -0.2%] | 13 |
Mixed
Rollup of 7 pull requests #140474 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.3% | [0.3%, 0.3%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -2.9% | [-2.9%, -2.9%] | 1 |
| Improvements (secondary) | -0.2% | [-0.2%, -0.2%] | 2 |
| All (primary) | -1.3% | [-2.9%, 0.3%] | 2 |
Regression is limited to unicode-normalization-0.1.19 and appears within noise limit for that benchmark. Marking as triaged.
Simplify LazyAttrTokenStream #127516 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.6% | [0.3%, 0.8%] | 7 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | -2.1% | [-4.0%, -1.4%] | 16 |
| All (primary) | - | - | 0 |
Improvements outweigh regressions, and all the movement is in secondary benchmarks.
Streamline the format macro. #140188 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
| Regressions (secondary) | 1.8% | [1.7%, 1.9%] | 6 |
| Improvements (primary) | -0.3% | [-0.4%, -0.1%] | 10 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.2% | [-0.4%, 0.2%] | 11 |
The improvements on primary benchmarks were deemed to outweigh the regressions on secondary benchmarks.
shared-generics: Do not share instantiations that contain local-only types #138522 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.9% | [0.4%, 1.5%] | 3 |
| Regressions (secondary) | 0.1% | [0.1%, 0.1%] | 1 |
| Improvements (primary) | -0.5% | [-0.7%, -0.3%] | 6 |
| Improvements (secondary) | -1.0% | [-1.0%, -1.0%] | 1 |
| All (primary) | -0.0% | [-0.7%, 1.5%] | 9 |
Marking perf as triaged. There’s some improvements, some regressions, but the regressions look like potentially bimodality – and where they’re possibly real hard to justify further digging in. The change seems overall a slight improvement on our benchmarks.
Rollup of 9 pull requests #140596 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.4% | [0.2%, 0.5%] | 2 |
| Improvements (primary) | -1.2% | [-1.2%, -1.2%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -1.2% | [-1.2%, -1.2%] | 1 |
Regression triaged. Regressions look like bimodality/noise, not worth further follow up.
Rollup of 7 pull requests #140633 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.2% | [0.2%, 13.4%] | 77 |
| Regressions (secondary) | 1.9% | [0.2%, 11.0%] | 155 |
| Improvements (primary) | -1.5% | [-1.5%, -1.5%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 1.2% | [-1.5%, 13.4%] | 78 |
Per investigation on the PR, the root cause is #139675. Per discussion here we expect that this will be mostly resolved in our next LLVM bump, but is likely an acceptable regression in the meantime (primarily to very short compiles) for the feature in question.
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “collect doc alias as tips during resolution” rust#127721 (last review activity: 9 months ago)
- cc @Esteban Küber or maybe reroll?
- “Look at proc-macro attributes when encountering unknown attribute” rust#134841 (last review activity: 3 months ago)
- 2025-05-08 cc @Wesley Wiser (needs a little rebase either)
- “Implement asymmetrical precedence for closures and jumps” rust#134847 (last review activity: 3 months ago)
- 2025-05-08 cc @fmease
Next meetings’ agenda draft: hackmd link