T-compiler Meeting Agenda 2023-11-02
Announcements
- Compiler Team Steering Meeting - P-high review at time:2023-11-03T10:00:00-04:00
- 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 (calendar link)
- wg-async weekly at time:2023-11-02T12:00:00-04:00
- AFIT/RPITIT Impl Triage at time:2023-11-02T16:00:00-04:00
- wg-macros triage meeting at time:2023-11-03T11:00:00-04:00
- Types team meeting at time:2023-11-06T10:00:00-05:00
- Types Rotating new solver / formality / polonius deep dive at time:2023-11-06T11:00:00-05:00
- Async WG triage meeting at time:2023-11-06T11:30:00-05:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- " Add
$message_type
field to distinguish json diagnostic outputs" compiler-team#673 (Zulip) - “Allow and evaluate quoting in response files” compiler-team#684 (Zulip)
- “Add
-Zexperimental-target
” compiler-team#685 (Zulip)
- " Add
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- No old proposals this time.
- Pending FCP requests (check your boxes!)
- “Add a new
--build-id
flag to rustc” compiler-team#635 (Zulip)- concern option-name
- concern other-existing-options
- “Retire the mailing list and make all decisions on zulip” compiler-team#649 (Zulip)
- concern automatic-sync
- concern single-point-of-failure-via-stream-archival
- concern unanimous-approval (resolved)
- “Stabilize
--json=unused-externs(-silent)
” compiler-team#674 (Zulip) - “Tracking issue for dyn upcasting coercion” rust#65991
- concern ensure-we-discuss-lcnr’s-thoughts-in-triage (resolved)
- “Support overriding
warnings
level for a specific lint via command line” rust#113307- concern nesting
- “Update Windows platform support” rust#115141
- concern needs-blog-post (probably resolved)
- “make soft_unstable show up in future breakage reports” rust#116274
- “Stabilize Wasm target features that are in phase 4 and 5” rust#117457
- “Add a new
- Things in FCP (make sure you’re good with it)
- “Add a stable flag to enable/disable codegen UB checks” compiler-team#625 (Zulip)
- concern needs-fcp
- “Report all lints, even if other errors already occurred.” compiler-team#633 (Zulip)
- “Match the behavior of
strip
andsplit-debuginfo
across platforms” compiler-team#669 (Zulip) - “Add infrastructure to “compute the ABI of a Rust type, described as a C type”” compiler-team#672 (Zulip)
- “Stabilize
--json=unused-externs(-silent)
” compiler-team#674 (Zulip)- concern lint-interactions
- “Set alignment of
i128
to 128 bits for x86” compiler-team#683 (Zulip) - “Remove support for compiler plugins.” rust#116412
- “Add a stable flag to enable/disable codegen UB checks” compiler-team#625 (Zulip)
- Accepted MCPs
- “Have
rustc
produce a local log of execution metrics” compiler-team#679 (Zulip) - “Enable Parallel Rustc Front End In Nightly Builds” compiler-team#681 (Zulip)
- “Rename generator to coroutine” compiler-team#682 (Zulip)
- “Have
- Finalized FCPs (disposition merge)
- “Allow partially moved values in match” rust#103208
- “document ABI compatibility” rust#115476
- “Consider alias bounds when computing liveness in NLL (but this time sound hopefully)” rust#116733
WG checkins
-
Impl Trait initiative by @oli:
at the T-types meetup we came up with a type-alias-impl-trait stabilization plan, which does not match the latest T-lang plan, but a change necessitated by implementation concerns. Most notably, we’re restricting the defining scope even further (see rust#113169 for an implementation of this). The full proposal can be found at this HackMD link. As usual, the work is tracked in: https://github.com/orgs/rust-lang/projects/22/views/1
-
@_WG-llvm by @nagisa and @Nikita Popov
Checkin text
Backport nominations
T-compiler stable / T-compiler beta
- :beta: “Update to LLVM 17.0.4” rust#117436
- Fixes a number of
P-high
s: #116668, #116941, #116976 - (tangential: @apiraino wonders if there’s a way to see a clearer changelog of LLVM merges…)
- Fixes a number of
PRs S-waiting-on-team
- Other issues in progress or waiting on other teams
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 63 T-compiler P-high issues
- 1 P-critical, 3 P-high, 2 P-medium, 1 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 4 P-medium, 2 P-low regression-from-stable-to-nightly
- 0 P-critical, 40 P-high, 100 P-medium, 18 P-low regression-from-stable-to-stable
P-critical
- “Code no longer compiles after -Zdrop-tracking-mir was enabled by default” rust#116242
- Mentioned last week, postponed to this meeting
- Probably solved by rust#117134, authored by @lcnr, RFC reviewed, no crater regressions (link)
- anything to add? can remove
I-compiler-nominated
?
- No
P-critical
issues forT-types
this time.
P-high regressions
Notes:
- These regressions were triaged last week
- next stable in 2 weeks -> time:2023-11-16T12:00:00+01:00
- “regression: parameter type may not live long enough” rust#117055
- Crate that regressed was fixed
- “regression: new resolution failures in 1.74” rust#117056
- “regression: change in async capture rules?” rust#117059
- comments from last week
Ok, so this is the actual crater fallout from -Zdrop-tracking-mir that we were waiting for. It’s good to see that it’s relatively small and being addressed.
- Duplicate of rust#116242, under T-types scrutiny (
I-types-nominated
)
- comments from last week
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
Short triage this week, as last week’s was done later in the week than usual. As a result, a pretty quiet set of results.
Triage done by @simulacrum. Revision range: 698db856de0b67313ddcb96b6599598058489ea9..650991d62c3a2c80ba27009d06839adbb038bf5e
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.2%, 5.0%] | 48 |
Regressions (secondary) | 0.7% | [0.1%, 1.9%] | 18 |
Improvements (primary) | -0.9% | [-3.3%, -0.2%] | 11 |
Improvements (secondary) | -0.5% | [-0.8%, -0.4%] | 4 |
All (primary) | 0.4% | [-3.3%, 5.0%] | 59 |
2 Regressions, 1 Improvements, 1 Mixed; 0 of them in rollups 43 artifact comparisons made in total
Regressions
Lint overlapping ranges as a separate pass #116751 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 1.0%] | 19 |
Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 3 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.2%, 1.0%] | 19 |
Slight regressions across multiple benchmarks. This is expected impact with no planned mitigation, likely small enough to be acceptable for the functionality here.
Eat close paren if capture_cfg to avoid unbalanced parens #116889 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.1%, 0.2%] | 6 |
Regressions (secondary) | 0.6% | [0.4%, 0.9%] | 9 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.2% | [0.1%, 0.2%] | 6 |
This is indeed a slight perf regression for benchmarks with large number of function parameters, like externs with 3000 function definitions.
(https://github.com/rust-lang/rust/pull/116889#issuecomment-1784115059)
However a possibly faster version will be worked on by the author. In the meantime the regression is limited to just a few benchmarks, mostly stress tests.
Improvements
Only call mir_const_qualif
if absolutely necessary #117166 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.5%, -0.2%] | 35 |
Improvements (secondary) | -0.4% | [-0.4%, -0.4%] | 3 |
All (primary) | -0.3% | [-0.5%, -0.2%] | 35 |
Mixed
rustdoc: use JS to inline target type impl docs into alias #116471 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.8% | [0.3%, 5.0%] | 10 |
Regressions (secondary) | 1.0% | [0.2%, 1.9%] | 4 |
Improvements (primary) | -2.7% | [-3.4%, -1.5%] | 3 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.7% | [-3.4%, 5.0%] | 13 |
The perf regression was explained above; it’s very small, rustdoc-only, and is more than balanced by the large reductions in generated doc size.
https://github.com/rust-lang/rust/pull/116471#issuecomment-1784228010
Nominated Issues
- “Code no longer compiles after -Zdrop-tracking-mir was enabled by default” rust#116242
- (already discussed)
- “RFC: Packages as (optional) namespaces” rfcs#3243
- FIY also for T-compiler to make sure all voices are heard
Oldest PRs waiting for review
- “Save liveness results for DestinationPropagation” rust#115291
- cc @Jak{e,ob} Degen (can you comment if your review is final?)
- “Add
$message_type
field to distinguish json diagnostic outputs” rust#115691 (last review activity: about 51 days ago)- FCP in progress, missing a few checkboxes (cc: @michael goulet (compiler-errors) @nagisa)
- “Stabilize target_feature_11” rust#116114 (last review activity: about 31 days ago)
- RFC#2396
- Unsure if the review at this stage is more for T-libs or T-compiler
- “Stabilize
extended_varargs_abi_support
” rust#116161- cc @wesley wiser (autoassigned) (author has a small comment to check)
Next week’s WG checkins
- @_WG-mir-opt by @oli
- @_T-rust-analyzer by @Lukas Wirth
Next meetings' agenda draft: hackmd link