T Compiler Meeting Agenda 2025 01 09

T-compiler Meeting Agenda 2025-01-09

Announcements

  • T-lang have scheduled a C++ interop design meeting on time:2025-02-26T17:30:00Z and they want anyone interested/with opinions from compiler to attend
  • Today release of Rust stable 1.84 :tada: and 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

MCPs/FCPs

Note: there are a few MCP in FCP status that technically can be closed as accepted. Due to the overlapping holidays in western timezones, we allowed a bit more time for people to look at them. We’re going to close them soon :-)

  • New MCPs (take a look, see if you like them!)
    • “Rename “dylib” crate type to “rdylib” (keep old name but deprecate it), and maybe do the same for “staticlib” → “cstaticlib”” compiler-team#825 (Zulip)
    • “Add new targets for Cygwin (and MSYS2)” compiler-team#826 (Zulip)
  • Old MCPs (stale MCP might be closed as per MCP procedure)
    • None at this time
  • Old MCPs (not seconded, take a look)
  • Pending FCP requests (check your boxes!)
    • “sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets” rust#123617
  • Things in FCP (make sure you’re good with it)
  • Accepted MCPs
    • No new accepted proposals this time.
  • MCPs blocked on unresolved concerns
  • Finalized FCPs (disposition merge)
    • “Add --print host-tuple to 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, and tail-call target features” rust#131080
    • “Lint on combining #[no_mangle] and #[export_name]rust#131558
  • Other teams finalized FCPs
    • “Add lint against function pointer comparisons” rust#118833
    • “Fixup Windows verbatim paths when used with the include! macro” rust#125205
    • “Allow dropping dyn Trait principal” 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_guaranteesrust#130628
    • “Stabilize const ptr::write* and mem::replacerust#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
    • --nocapture doesn’t follow common CLI conventions, making it a stumbling block to people debugging failures” rust#133073
    • “Fix ICE when multiple supertrait substitutions need assoc but only one is provided” rust#133392
    • “Stabilize asm_goto feature gate” rust#133870
    • “Stabilize feature(trait_upcasting)rust#134367

Backport nominations

T-compiler beta / T-compiler stable

  • :beta: “Run borrowck tests on BIDs and emit tail-expr-drop-order lints for violations” rust#134523
    • Authored by dingxiangfei2009
    • (TIL) “BID” stands for “backward-incompatible drop statements generated exclusively when edition migration is run” (link and link)
    • Fixes a lint so that it triggers the lint on edition 2024. Perf. run almost neutral.
    • Backport nominated by @_Michael Goulet (compiler-errors) to have this lint trigger actually trigger on 2024 edition (comment)
  • No stable nominations for T-compiler this time.

T-types stable / T-types beta

  • No beta nominations for T-types this time.
  • No stable nominations for T-types this time.

PRs S-waiting-on-team

T-compiler

Issues of Note

Short Summary

P-critical

T-compiler

  • “Rustc strips all symbols on MacOS when strip = “debuginfo” is specified, but not when strip = “symbols” is specified” rust#135028
    • Fixed by #135034, beta backport approved on Zulip (thanks @nora (Noratrieb) )

T-types

  • No P-critical issues for T-types this time.

P-high regressions

P-high beta regressions

  • No P-high beta regressions this time.

Unassigned P-high nightly regressions

  • No unassigned P-high nightly regressions this time.

Performance logs

triage logs for 2025-01-07

A quiet week with not much going on. A small regression was caused by a bugfix related to traits, but it was somewhat offset by a cargo update that brought a small perf. win.

Triage done by @kobzol. Revision range: 93722f7e..0f1e965f

Summary:

(instructions:u)meanrangecount
Regressions (primary)0.4%[0.1%, 1.1%]20
Regressions (secondary)0.4%[0.1%, 2.5%]19
Improvements (primary)-0.4%[-1.6%, -0.2%]8
Improvements (secondary)-1.3%[-1.7%, -0.2%]13
All (primary)0.1%[-1.6%, 1.1%]28

0 Regressions, 2 Improvements, 4 Mixed; 4 of them in rollups 51 artifact comparisons made in total

Improvements

Rollup of 4 pull requests #135059 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.2%[-0.2%, -0.1%]5
Improvements (secondary)--0
All (primary)-0.2%[-0.2%, -0.1%]5

Rollup of 7 pull requests #135086 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)--0
Improvements (primary)-0.3%[-0.4%, -0.2%]7
Improvements (secondary)--0
All (primary)-0.3%[-0.4%, -0.2%]7

Mixed

Update cargo #135089 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)--0
Regressions (secondary)0.9%[0.9%, 0.9%]1
Improvements (primary)-0.1%[-0.2%, -0.1%]38
Improvements (secondary)-0.3%[-0.6%, -0.1%]35
All (primary)-0.1%[-0.2%, -0.1%]38
  • Many small improvements and only a tiny regression.
  • Marked as triaged.

Project to TyKind::Error when there are unconstrained non-lifetime (ty/const) impl params #135057 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.2%[0.1%, 0.3%]76
Regressions (secondary)0.3%[0.0%, 0.7%]39
Improvements (primary)--0
Improvements (secondary)-1.0%[-1.0%, -1.0%]1
All (primary)0.2%[0.1%, 0.3%]76
  • Small performance loss, but this was a bugfix, so it was deemed justifiable.
  • Marked as triaged.

Rollup of 6 pull requests #135101 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.7%[0.7%, 0.8%]4
Regressions (secondary)0.7%[0.3%, 2.2%]4
Improvements (primary)--0
Improvements (secondary)-1.3%[-1.8%, -0.2%]13
All (primary)0.7%[0.7%, 0.8%]4
  • The deep-vector benchmark changes were most likely caused by #135046.
  • Marked as triaged.

Rollup of 3 pull requests #135140 (Comparison Link)

(instructions:u)meanrangecount
Regressions (primary)0.5%[0.5%, 0.6%]2
Regressions (secondary)--0
Improvements (primary)-1.7%[-1.7%, -1.7%]1
Improvements (secondary)-0.4%[-0.4%, -0.4%]2
All (primary)-0.2%[-1.7%, 0.6%]3
  • Only tiny changes, and the combined result is a wash.
  • Marked as triaged.

Nominated Issues

T-compiler

  • “Built-in attributes are treated differently vs prelude attributes, unstable built-in attributes can name-collide with stable macro, and built-in attributes can break back-compat” rust#134963
    • nominated by @Jieyou Xu (also T-lang nominated)
    • Questions for T-compiler (in opening comment):
      • Built-in attributes like #[coverage(..)] are handled differently versus prelude attributes like #[test], including name resolution.
      • Current feature-gating of unstable built-in attributes is insufficient: adding a new unstable built-in attribute gated behind a feature gate (e.g. #[coverage]) can still break stable code without any feature gates (e.g. use of a user-defined macro of the same name as the newly added built-in attribute).
      • (also for T-lang) Stabilization of a built-in attribute can break backwards compatibility: old code can be broken by addition of a new built-in attribute.

RFC

  • No I-compiler-nominated RFCs this time.

Oldest PRs waiting for review

T-compiler

  • None this week

Next meeting’s agenda draft: hackmd link