T-compiler Meeting Agenda 2024-08-15
Announcements
- Today released dot release 1.80.1: https://blog.rust-lang.org/2024/08/08/Rust-1.80.1.html
- Also published list of Project Goals 2024! https://blog.rust-lang.org/2024/08/12/Project-goals.html
- 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
- Types Team: ITE (Impl Trait Everywhere) Triage time:2024-08-15T22:00:00+01:00
- wg-rust-analyzer steering meeting on Zulip (https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Steering.20meeting) time:2024-08-15T17:00:00+01:00
- wg-macros triage meeting Zulip (https://rust-lang.zulipchat.com/#narrow/stream/410876-wg-macros.2Ftriage) time:2024-08-15T18:00:00+01:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Don’t track
--emit=
options as part of crate SVH” compiler-team#769 (Zulip) - “Opt-in flag for absolute paths in diagnostics” compiler-team#770 (Zulip)
- “
--msrv=version
option so the compiler can take MSRV into account when linting” compiler-team#772 (Zulip) - “Enable
deny(unreachable_pub)
onrustc_*
crates” compiler-team#773 (Zulip)
- “Don’t track
- 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)
- concern: added-complexity-to-frontend
- “Target families for executable format” compiler-team#716 (Zulip) (last review activity: 6 months ago)
- “Partial compilation using MIR-only rlibs” compiler-team#738 (Zulip) (last review activity: 4 months ago)
- “Add Hotpatch flag” compiler-team#745 (Zulip) (last review activity: 3 months ago)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip) (last review activity: 7 months ago)
- Pending FCP requests (check your boxes!)
- merge: sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets (rust#123617)
- no pending checkboxes
- concerns: stabilization-scope (by wesleywiser)
- merge: sanitizers: Stabilize AddressSanitizer and LeakSanitizer for the Tier 1 targets (rust#123617)
- Things in FCP (make sure you’re good with it)
- “Stabilize
raw_ref_op
(RFC 2582)” rust#127679
- “Stabilize
- Accepted MCPs
- No new accepted proposals this time.
- MCPs blocked on unresolved concerns
- merge: Add a new
--build-id
flag to rustc (compiler-team#635)- @|125250 @|116107 @|125294 @|123856
- concerns: other-existing-options (by petrochenkov) option-name (by wesleywiser)
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern: automatic-sync
- merge: Add
--print host-triple
to print host target triple (rust#125579)- @_|232957
- concerns: triple vs tuple (by lcnr)
- merge: Add a new
- Finalized FCPs (disposition merge)
- “Disallow setting some built-in cfg via the command-line” rust#126158
- Other teams finalized FCPs
- “Enforce supertrait outlives obligations hold when confirming impl” rust#124336
- “turn
invalid_type_param_default
into aFutureReleaseErrorReportInDeps
” rust#127655 - “Stabilize unsafe extern blocks (RFC 3484)” rust#127921
- “Unify run button display with “copy code” button and with mdbook buttons” rust#128394
WG checkins
None
Backport nominations
T-compiler beta / T-compiler stable
- :beta:“Do not apply
#[do_not_recommend]
if the feature flag is not set” rust#128674
- :beta:“Store
do_not_recommend
-ness in impl header” rust#128912- Authored by compiler-errors
- Alternate approach to #128674:
This only affects the error path, but it’s still strange and probably not something we want users to rely on implicitly. It’s less flexible, but also less invasive. Hopefully it’s also performant.
- :beta:“Revert #125915 on beta” rust#128760
- Authored by BoxyUwU
- Fixes #128016 (P-critical), reverts #125915:
This reverts commit #125915 on beta preventing #128016 from reaching stable. This breaks the
argon2rs
crate which causes a fair amount of downstream breakage of random projects. I don’t think its necessarily a huge deal but this was an incredibly clean revert and it does prevent breakage of code that used to work so I think this is worth it.
- :beta:“derive(SmartPointer): register helper attributes” rust#128925
- Authored by dingxiangfei2009
- Fixes #128888, P-high beta regression found by a crater run
- :beta:“Fix bug in
Parser::look_ahead
.” rust#128994- Authored by nnethercote
- Fixes #128895, P-high beta regression found by a crater run
- No stable nominations for
T-compiler
this time.
- No beta nominations for
T-types
this time. - No stable nominations for
T-types
this time.
PRs S-waiting-on-team
- “[crater] Make
missing_fragment_specifier
an unconditional error” rust#128425- See issue nominated for discussion
- Issues in progress or waiting on other teams
Issues of Note
Short Summary
- 2 T-compiler P-critical issues
- 67 T-compiler P-high issues
- 2 P-critical, 3 P-high, 3 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 5 P-medium, 2 P-low regression-from-stable-to-nightly
- 0 P-critical, 36 P-high, 100 P-medium, 16 P-low regression-from-stable-to-stable
P-critical
- “ICE:
adding a def'n for node-id NodeId(18) and def kind AnonConst but a previous def'n exists
” rust#128016- Reverted in beta by #128760
- Will be fixed by #128844
- “regression: adding a def’n for node-id NodeId(597) and def kind AnonConst but a previous def’n exists” rust#128901
- Can’t find a discussion but since it’s a duplicate of #128016, assumed it will be fixed by #128760
- No
P-critical
issues forT-types
this time.
P-high regressions
- “regression: overflow evaluating the requirement” rust#128887
- Breaking change introduced in #126128, which could be accepted (comment)
- “regression: expected one of
!
,(
,+
,::
,<
,>
, oras
, found:
” rust#128895- fixed by #128994 (nominated for beta backport)
Unassigned P-high nightly regressions
- “Generated WebAssembly unexpectedly requires reference types” rust#128475
- (discussed last week)
- Alex Chrichton authored #128511
Performance logs
A big week for compiler performance brought on mostly by statically linking the std library into rustc_driver
instead of dynamic linking. This overshadows all other improvements and regressions that were seen this week.
Triage done by @rylev. Revision range: 8c7e0e16..9cb1998e
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.3% | [-2.9%, -0.2%] | 217 |
Improvements (secondary) | -1.4% | [-4.9%, -0.2%] | 196 |
All (primary) | -1.3% | [-2.9%, -0.2%] | 217 |
2 Regressions, 2 Improvements, 2 Mixed; 1 of them in rollups 35 artifact comparisons made in total
Regressions
Rollup of 7 pull requests #128768 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.4%, 0.4%] | 1 |
Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 11 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.4% | [0.4%, 0.4%] | 1 |
- All docs regressions caused by #128417 which is simply just documenting more.
Stabilize min_exhaustive_patterns
#122792 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.8% | [0.3%, 1.5%] | 13 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.8% | [0.3%, 1.5%] | 13 |
- Seems this has a negative impact on the performance of coherence checking which I imagine is expected.
- Confirming with the author/reviewer.
Improvements
Cache supertrait outlives of impl header for soundness check #128746 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
Regressions (secondary) | 0.0% | [0.0%, 0.0%] | 1 |
Improvements (primary) | -0.5% | [-1.3%, -0.2%] | 69 |
Improvements (secondary) | -1.8% | [-3.8%, -0.2%] | 30 |
All (primary) | -0.5% | [-1.3%, 0.2%] | 70 |
Link std
statically in rustc_driver
#122362 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -1.0% | [-2.0%, -0.2%] | 229 |
Improvements (secondary) | -1.0% | [-2.0%, -0.2%] | 222 |
All (primary) | -1.0% | [-2.0%, -0.2%] | 229 |
Mixed
Only walk ribs to collect possibly shadowed params if we are adding params in our new rib #128550 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 2.2% | [2.2%, 2.2%] | 1 |
Improvements (primary) | -0.6% | [-2.0%, -0.2%] | 31 |
Improvements (secondary) | -0.3% | [-0.3%, -0.2%] | 6 |
All (primary) | -0.6% | [-2.0%, -0.2%] | 31 |
- Regression seems to be noise.
Apply “polymorphization at home” to RawVec #126793 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.5% | [0.2%, 1.6%] | 98 |
Regressions (secondary) | 0.4% | [0.1%, 1.2%] | 125 |
Improvements (primary) | -1.0% | [-3.5%, -0.2%] | 51 |
Improvements (secondary) | -1.3% | [-2.9%, -0.3%] | 13 |
All (primary) | -0.0% | [-3.5%, 1.6%] | 149 |
- “there’s a bunch of instruction regressions – improvements too, but fewer of those – but looking at cycles, wall time, bootstrap, and binary size it looks consistently great. And the overall approach is good, so there should be space to get smaller improvements with tweaks to things like mir inlining”
Nominated Issues
- “ill-typed unused FFI declarations can cause UB” rust#46188
- “[crater] Make
missing_fragment_specifier
an unconditional error” rust#128425 - “type_id is not sufficiently collision-resistant” rust#129014
- authored and nominated by @RalfJ
- See opening comment
- “Tracking Issue for the C-cmse-nonsecure-call ABI” rust#81391
- nominated by @Jieyou Xu (comment):
- also nominated for T-lang
- Does this need an MCP/FCP for stabilization, or does this need further design?
- Does this need a joint T-compiler/T-lang FCP?
- We should help the people working on cmse-related things to find knowledgeable reviewers / domain experts who can help reviewing the changes, or otherwise provide advice on how to split related PRs for easier reviewing.
- Are cmse-related efforts being tracked anywhere?
- “[DRAFT] #[contracts::requires(…)]” rust#128045
- nominated by @Jieyou Xu (comment): looking for a reviewer familiar with attribute handling / HIR/MIR changes
- Felix left a comment: this is no longer “ready for review” – the review feedback has made it clear that this should not land as-is
- The current challenge seems to be that existing attribute handling only supports a “single path segment”, i.e.
#[contracts(<inner_expr>)]
but not#[contracts::requires(<inner_expr>)]
. We also can’t trivially reuse existingregister_attr!
or visitor because they impose strict limits on the<inner_expr>
and require it to be very primitive (like literals or identifiers or simple lists) but does not support arbitrary expressions likex > 0
. To support the arbitrary inner expression (in that it may not necessarily be a valid rust expression), it may require relaxing that restriction, but it may raise further parsing/grammar questions. It’s not clear what’s the best path forward here.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
Skipping this week
Next week’s WG checkins
None
Next meetings' agenda draft: hackmd link