T-compiler Meeting Agenda 2023-11-16
Announcements
- Today Rust stable 1.74 release (blog post)
- Compiler Team Planning meeting at time:2023-11-17T10:00:00-05: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)
- AFIT/RPITIT Impl Triage at time:2023-11-16T16:00:00-05:00
- Stable MIR Weekly Meeting at time:2023-11-17T10:00:00-05:00
- Types team meeting at time:2023-11-20T10:00:00-05:00
- [Types] Rotating new solver / formality / polonius deep dive at time:2023-11-20T11:00:00-05:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Require
--known-broken-llvm
flag for x.py to skip codegen tests on old LLVM” compiler-team#687 (Zulip)
- “Require
- Old MCPs (not seconded, take a look)
- “Add
$message_type
field to distinguish json diagnostic outputs” compiler-team#673 (Zulip) (last review activity: about 6 days ago)
- “Add
- 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
- “Stabilize
--json=unused-externs(-silent)
” compiler-team#674 (Zulip)- concern lint-interactions
- “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
- “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)
- “Add infrastructure to “compute the ABI of a Rust type, described as a C type”” compiler-team#672 (Zulip)
- “Support response files generated by ninja with
@ninja:path
syntax” compiler-team#684 (Zulip) - “Add
-Zexperimental-target
” compiler-team#685 (Zulip)- concern doesn-t-justify-the-maintenance
- “Tracking issue for dyn upcasting coercion” rust#65991
- Proposal is now T-lang nominated
- “Add a stable flag to enable/disable codegen UB checks” compiler-team#625 (Zulip)
- Accepted MCPs
- “Set alignment of
i128
to 128 bits for x86” compiler-team#683 (Zulip)
- “Set alignment of
- Finalized FCPs (disposition merge)
- “TAIT defining scope options” rust#107645
- “dropck_outlives check whether generator witness needs_drop” rust#117134
WG checkins
-
@_WG-async-foundations by @nikomatsakis and @tmandry
Checkin text
-
@WG-diagnostics by @Esteban Küber and @oli
Checkin text
Backport nominations
T-compiler stable / T-compiler beta
- :beta: [1.75] “Update to LLVM 17.0.5” rust#117907
- Fixes #116177 perf regression on MIPS
- nominated by @nikic: “Mips is tier 3, but it probably still makes sense to backport this, as the target is currently completely broken.” (comment)
- Note: backport is for the next beta
- No beta nominations for
T-types
this time. - No stable nominations for
T-types
this time.
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
- 61 T-compiler P-high issues
- 1 P-critical, 1 P-high, 4 P-medium, 1 P-low regression-from-stable-to-beta
- 0 P-critical, 0 P-high, 3 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
- No
P-critical
issues forT-compiler
this time.
- No
P-critical
issues forT-types
this time.
P-high regressions
- No unassigned
P-high
beta regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
A week dominated by one particular perf improvement that lead to huge performance gains - an avg of 5% improvement across 121 test cases! The perf improvement comes from adding an #[inline]
hint to the output from #[derive(Debug)]
which presumably allows the compiler to more easily do deadcode elimination reducing the binary size and the amount of code that actually needs to be code-gened.
Triage done by @rylev. Revision range: 7b97a5ca..173b6e68
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 0.9%] | 10 |
Regressions (secondary) | 1.9% | [0.2%, 3.6%] | 12 |
Improvements (primary) | -5.6% | [-49.2%, -0.1%] | 111 |
Improvements (secondary) | -3.5% | [-25.0%, -0.2%] | 155 |
All (primary) | -5.1% | [-49.2%, 0.9%] | 121 |
2 Regressions, 2 Improvements, 3 Mixed; 3 of them in rollups 55 artifact comparisons made in total
Regressions
Bump libc dependency #117617 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 8.3% | [1.1%, 19.0%] | 9 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 8.3% | [1.1%, 19.0%] | 9 |
- A curious perf infra glitch - the regression returned to normal after a few runs.
Rollup of 6 pull requests #117736 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 0.5%] | 5 |
Regressions (secondary) | 0.6% | [0.6%, 0.6%] | 1 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.4% | [0.2%, 0.5%] | 5 |
- The only PR that includes actual changes to the compiler is #117645. Kicked off a test to see if that’s the root cause.
Improvements
Rollup of 4 pull requests #117680 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -9.1% | [-16.0%, -2.6%] | 7 |
Improvements (secondary) | - | - | 0 |
All (primary) | -9.1% | [-16.0%, -2.6%] | 7 |
- The flip side of #117617’s strange perf regression.
Add std::hash::{DefaultHasher, RandomState}
exports (needs FCP) #115694 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.9% | [-1.2%, -0.4%] | 6 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.9% | [-1.2%, -0.4%] | 6 |
Mixed
Only use normalize_param_env
when normalizing predicate in check_item_bounds
#117542 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.4%, 0.4%] | 1 |
Regressions (secondary) | 1.4% | [0.8%, 2.3%] | 12 |
Improvements (primary) | -18.4% | [-49.6%, -0.2%] | 20 |
Improvements (secondary) | - | - | 0 |
All (primary) | -17.5% | [-49.6%, 0.4%] | 21 |
- Fixing https://github.com/rust-lang/rust/pull/117131#issuecomment-1791852906 and deemed acceptable for the small regressions.
Emit #[inline] on derive(Debug) #117727 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 3.1% | [0.3%, 13.7%] | 5 |
Regressions (secondary) | 1.8% | [0.2%, 3.4%] | 6 |
Improvements (primary) | -2.3% | [-10.6%, -0.1%] | 110 |
Improvements (secondary) | -3.2% | [-25.2%, -0.1%] | 177 |
All (primary) | -2.1% | [-10.6%, 13.7%] | 115 |
- Huge wins outweigh the small losses.
Rollup of 6 pull requests #117769 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.3%, 0.3%] | 1 |
Regressions (secondary) | 1.0% | [1.0%, 1.0%] | 1 |
Improvements (primary) | -6.5% | [-12.3%, -0.7%] | 2 |
Improvements (secondary) | - | - | 0 |
All (primary) | -4.2% | [-12.3%, 0.3%] | 3 |
- Noise
Nominated Issues
- No I-compiler-nominated issues this time.
- “RFC: Packages as (optional) namespaces” rfcs#3243
- See relevant Zulip topic
- (will now remove the nomination label, the RFC has been widely announced)
Oldest PRs waiting for review
- “Require
type_map::stub
callers to supply file information” rust#104342 (last review activity: 5 months ago)- cc: @wesley wiser
- looking closely at this comment, seems the PR author is asking for guidance on how to implement a
-Z
flag.
- “Add illumos aarch64 target for rust.” rust#112936 (last review activity: 4 months ago)
- cc: @jack huey
- PR seems approved (comment), maybe just needs a little nudge from the assigned reviewer?
- “fix(parse): avoid panic when cfg wrapper by bracket under
capture-cfg
mode” rust#113056 (last review activity: 3 months ago)- cc: @Aaron Hill (reviewer assigned by @_davidtwco)
- “Add
$message_type
field to distinguish json diagnostic outputs” rust#115691 (last review activity: 2 months ago) - “Try to use approximate placeholder regions when outputting an AscribeUserType error in borrowck” rust#116097 (last review activity: about 52 days ago)
- cc: @wesley wiser