T-compiler Meeting Agenda 2025-04-17
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-04-17T19:00:00+02:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Unify ui test inline error annotation style” compiler-team#859 (Zulip)
- “Promote tier 3 riscv32 ESP-IDF targets to tier 2” compiler-team#864 (Zulip)
- 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 34 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: about 40 days ago)
- “Basic target naming rules” compiler-team#850 (Zulip) (last review activity: about 27 days ago)
- “Add one more “late metadata”/“digest” file to rlib archives” compiler-team#853 (Zulip) (last review activity: about 27 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 - “compiletest: Make diagnostic kind mandatory on line annotations” compiler-team#862 (Zulip)
- “document RUSTC_BOOTSTRAP in the unstable book” compiler-team#863 (Zulip)
- Accepted MCPs
- “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)
- “Allow boolean literals in
- MCPs blocked on unresolved concerns
- “Add
--print-json=...flag” compiler-team#860 (Zulip)- concern: duplicate-flag-impl-and-docs
- “Add
- Things in FCP (make sure you’re good with it)
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- concern: lose-debuginfo-data
- concern: impl-at-mir-level
- concern: inhibit-opts
- “Add
-C hint-mostly-unusedoption” compiler-team#829 (Zulip) (last review activity: 2 months ago) - “Run the UI test suite with multiple editions” compiler-team#861 (Zulip)
- concern: edition-directive-meaning
- “Proposal for Adapt Stack Protector for Rust” compiler-team#841 (Zulip)
- 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
- “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
- “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
- “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
- “Stabilize
repr128” rust#138285 - “Stabilize
cfg_boolean_literals” rust#138632 - “indirect-const-stabilize the
exact_divintrinsic” rust#139163
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Ignore zero-sized types in wasm future-compat warning” rust#139498
- Authored by alexcrichton
- Wesley just approved the PR
- From comment:
This commit fixes a false positive of the warning triggered for #138762 (“Tracking issue for wasm32-unknown-unknown’s future-incompat warning for C ABI changes”) and the fix is to codify that zero-sized types are “safe” in both the old and new ABIs.
- nominated because the false positive warning progressed to beta
- :beta: “Don’t warn about
v128in wasm ABI transition” rust#139809- Authored by alexcrichton
- review in progress
- just like #139498, nominated because the false positive warning progressed to beta
- :beta: “Revert “Deduplicate template parameter creation”” rust#139878
- Authored by petrochenkov
- Reverts part of #139874 which caused some CI regressions
- 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
- 57 T-compiler P-high issues
- 0 P-critical, 0 P-high, 2 P-medium, 1 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, 31 P-high, 100 P-medium, 22 P-low regression-from-stable-to-stable
P-critical
- No
P-criticalissues forT-compilerthis time.
- 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
- Seems that LLVM is producing worse code for the (comment)
- target affected is
znver4. Seems that for now @Nikita Popov has it on their radar.
Performance logs
Relatively small changes this week, nothing terribly impactful (positive or negative).
Triage done by @simulacrum. Revision range: e643f59f..15f58c46
Summary:
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.1%, 2.1%] | 39 |
| Regressions (secondary) | 0.8% | [0.2%, 3.2%] | 23 |
| Improvements (primary) | -0.6% | [-0.9%, -0.3%] | 7 |
| Improvements (secondary) | -0.6% | [-1.5%, -0.1%] | 40 |
| All (primary) | 0.5% | [-0.9%, 2.1%] | 46 |
1 Regressions, 3 Improvements, 3 Mixed; 2 of them in rollups 35 artifact comparisons made in total
Regressions
Rollup of 10 pull requests #139766 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.1% | [0.5%, 2.1%] | 15 |
| Regressions (secondary) | 1.0% | [0.3%, 2.4%] | 3 |
| Improvements (primary) | - | - | 0 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | 1.1% | [0.5%, 2.1%] | 15 |
Real regression, though limited only to doc builds. Investigating root cause in PR.
Improvements
speed up String::push and String::insert #124810 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.8% | [0.8%, 0.8%] | 1 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.3% | [-1.2%, -0.1%] | 35 |
| Improvements (secondary) | -0.3% | [-0.8%, -0.2%] | 46 |
| All (primary) | -0.3% | [-1.2%, 0.8%] | 36 |
Rollup of 13 pull requests #139622 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | 0.5% | [0.5%, 0.5%] | 1 |
| Improvements (primary) | -0.3% | [-0.3%, -0.2%] | 4 |
| Improvements (secondary) | -0.3% | [-0.6%, -0.2%] | 26 |
| All (primary) | -0.3% | [-0.3%, -0.2%] | 4 |
Polymorphize array::IntoIter’s iterator impl #139430 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | - | - | 0 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -1.2% | [-1.2%, -1.2%] | 1 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -1.2% | [-1.2%, -1.2%] | 1 |
Mixed
Allow GVN to produce places and not just locals. #139327 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.7%, 0.7%] | 1 |
| Regressions (secondary) | 0.7% | [0.7%, 0.7%] | 1 |
| Improvements (primary) | -0.6% | [-0.6%, -0.6%] | 1 |
| Improvements (secondary) | -0.6% | [-0.9%, -0.2%] | 10 |
| All (primary) | 0.0% | [-0.6%, 0.7%] | 2 |
Regressions look plausibly real, but are limited (~2 scenarios) and outweighed by benefits. No further investigation warranted.
Ensure swap_nonoverlapping is really always untyped #137412 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 0.7% | [0.4%, 1.7%] | 5 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.7% | [-1.1%, -0.3%] | 9 |
| Improvements (secondary) | - | - | 0 |
| All (primary) | -0.2% | [-1.1%, 1.7%] | 14 |
Correctness improvement. Regressions look real, though limited to just a few scenarios, and correctness is more important. No further investigation warranted.
Remove Nonterminal and TokenKind::Interpolated #124141 (Comparison Link)
| (instructions:u) | mean | range | count |
|---|---|---|---|
| Regressions (primary) | 1.0% | [0.3%, 2.1%] | 11 |
| Regressions (secondary) | - | - | 0 |
| Improvements (primary) | -0.5% | [-1.4%, -0.2%] | 48 |
| Improvements (secondary) | -1.0% | [-2.4%, -0.3%] | 36 |
| All (primary) | -0.2% | [-1.4%, 2.1%] | 59 |
Overall improvements outweigh limited regressions. Marking as triaged.
Nominated Issues
- None
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Detect struct construction with private field in field with default” rust#135846 (last review activity: 2 months ago)
- cc @fmease
- “Pattern Migration 2024: suggest nicer patterns” rust#136496
- cc @Nadrieril
- “Use the new solver in the
impossible_predicates” rust#136988 (last review activity: 2 months ago)- cc: @lcnr
- “not lint break with label and unsafe block” rust#137454 (last review activity: about 23 days ago)
- cc @Wesley Wiser
Next meeting’s agenda draft: hackmd link