T-compiler Meeting Agenda 2023-12-21
Announcements
- Next week Rust stable release 1.75
- Compiler Team Steering: P-high review at time:2023-12-22T10: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-12-21T16:00:00-05:00
- Types team meeting at time:2023-12-25T10:00:00-05:00
- AFIT/RPITIT Impl Triage at time:2023-12-28T16:00:00-05:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Add -Z direct-access-external-data” compiler-team#707 (Zulip)
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Require
--known-broken-llvm
flag for x.py to skip codegen tests on old LLVM” compiler-team#687 (Zulip) - “Semantics of
-Cinstrument-coverage=all
” compiler-team#690 (Zulip) (last review activity: about 8 days ago) - “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip)
- concern: added-complexity-to-frontend
- “New Tier-3 target:
wasm32-wasi-preview2
” compiler-team#694 (Zulip) (last review activity: about 2 days ago) - “Smooth the renaming transition of
wasm32-wasi
” compiler-team#695 (Zulip) (last review activity: about 8 days ago) - “Introduce perma-unstable
wasm-c-abi
flag” compiler-team#703 (Zulip) (last review activity: about 6 days ago) - “Support patchable-function-entry” compiler-team#704 (Zulip) (last review activity: about 6 days ago)
- “Require
- 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
- “Stabilize Wasm target features that are in phase 4 and 5” rust#117457
- “Undeprecate lint
unstable_features
and make use of it in the compiler” rust#118639
- “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)
- “Stabilize
--json=unused-externs(-silent)
” compiler-team#674 (Zulip) - “Use the MSVC provided Address Sanitizer runtime when building for MSVC” compiler-team#702 (Zulip)
- “Provide option to shorten symbol names by replacing them with a digest” compiler-team#705 (Zulip)
- “uplift some -Zverbose calls and rename to -Zverbose-internals” compiler-team#706 (Zulip)
- “make soft_unstable show up in future breakage reports” rust#116274
- “Add a stable flag to enable/disable codegen UB checks” compiler-team#625 (Zulip)
- Accepted MCPs
- “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) - “De-llvm some integer intrinsics that on the Rust side always use
u32
” compiler-team#693 (Zulip) - “Consistent
Handler
naming” compiler-team#699 (Zulip) - “Promote tier 3 riscv32 bare metal targets to tier 2” compiler-team#701 (Zulip)
- Finalized FCPs (disposition merge)
- “Stabilize THIR unsafeck” rust#117673
- “Properly reject
default
on free const items” rust#117818 - “Make inductive cycles in coherence ambiguous always” rust#118649
WG checkins
- @_WG-llvm by @nagisa and @Nikita Popov (previous checkin):
LLVM 18 is going to branch in about a month
Backport nominations
T-compiler stable / T-compiler beta
- :beta: “Exhaustiveness: Improve complexity on some wide matches” rust#118796
- PR is being reviewed, fixes a (P-high) exhaustiveness check rust#118437 (comment)
- issue analysis and patch authored by @Nadrieril (big thanks!)
- nominated by @apiraino, could be nice to have it backported to beta after merge (issue report affects a real-world crate)
- 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
- Other issues in progress or waiting on other teams
Issues of Note
Short Summary
- 0 T-compiler P-critical issues
- 60 T-compiler P-high issues
- 0 P-critical, 1 P-high, 3 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 2 P-high, 3 P-medium, 2 P-low regression-from-stable-to-nightly
- 0 P-critical, 39 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 new
P-high
regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
A lot of noise in the results this week; there was an lull in the noise
recently, so our auto-inferred noise threshold went down, and thus five PR’s
were artificially flagged this week (and three supposed improvements were just
reverting to the mean). Beyond that, we had three nice improvements: the first
to debug builds in #117962 (by ceasing emission of expensive+unused
.debug_pubnames
and .debug_pubtypes
), a second to diesel and serde in
#119048 (by avoiding some unnecessary work), and a third to several benchmarks
in #117749 (by adding some caching of an internal compiler structure).
Triage done by @pnkfelix. Revision range: 57010939..bf9229a2
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.4%] | 9 |
Regressions (secondary) | 0.4% | [0.2%, 0.9%] | 21 |
Improvements (primary) | -1.8% | [-10.8%, -0.1%] | 103 |
Improvements (secondary) | -1.2% | [-2.6%, -0.2%] | 93 |
All (primary) | -1.6% | [-10.8%, 0.4%] | 112 |
6 Regressions, 9 Improvements, 3 Mixed; 5 of them in rollups 67 artifact comparisons made in total
Regressions
rustc_passes: Enforce rustc::potential_query_instability
lint #118870 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 13.5% | [0.5%, 44.5%] | 8 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 13.5% | [0.5%, 44.5%] | 8 |
- already marked as triaged by lqd; this PR did not regress things, the reported change is due to a periodic “slow s3 uploads on the collector”, i.e. instrument noise/bias.
fix –dry-run when the change-id warning is printed #118789 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.9% | [0.8%, 1.0%] | 4 |
Regressions (secondary) | 0.5% | [0.3%, 0.8%] | 18 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.9% | [0.8%, 1.0%] | 4 |
- already marked as triaged by lqd; this PR did not regress things. lqd hypothesized that the inferred noise threshold was lowered (due to a period of low noisiness?), and thus normal amounts of noise are tripping the threshold.
Rollup of 3 pull requests #118982 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.8% | [0.8%, 0.9%] | 4 |
Regressions (secondary) | 0.4% | [0.0%, 0.8%] | 32 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.8% | [0.8%, 0.9%] | 4 |
- already marked as triaged by lqd. We think this is another case where the inferred noise threshold was low and we are seeing regression reports as the noise ramps up again.
Rollup of 5 pull requests #119002 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.1%, 0.5%] | 40 |
Regressions (secondary) | 0.4% | [0.1%, 0.7%] | 36 |
Improvements (primary) | -0.3% | [-0.3%, -0.3%] | 1 |
Improvements (secondary) | -0.1% | [-0.1%, -0.1%] | 2 |
All (primary) | 0.2% | [-0.3%, 0.5%] | 41 |
- lqd identified PR #118396, “Collect lang items from AST, get rid of GenericBound::LangItemTrait” as the root cause for the regressions here.
- not marking as triaged
More unescaping cleanups #118897 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.1%, 0.8%] | 5 |
Regressions (secondary) | 0.4% | [0.2%, 0.7%] | 26 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.6% | [0.1%, 0.8%] | 5 |
- lqd theorized this is another instance of noise threshold wriggling
- pnkfelix agrees and marked as triaged.
coverage: Regression test for assert!(!false)
#119011 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.7% | [0.7%, 0.8%] | 4 |
Regressions (secondary) | 0.5% | [0.3%, 0.6%] | 2 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.7% | [0.7%, 0.8%] | 4 |
- yet again, helloworld check is being flagged as regressing (in four scenarios), probably due to wriggling noise threshold.
- pnkfelix marking as triaged
Improvements
Rollup of 8 pull requests #118838 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.9% | [-1.0%, -0.9%] | 6 |
All (primary) | - | - | 0 |
fix: stop emitting .debug_pubnames
and .debug_pubtypes
#117962 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -2.1% | [-5.2%, -0.3%] | 24 |
Improvements (secondary) | -1.6% | [-3.1%, -0.2%] | 61 |
All (primary) | -2.1% | [-5.2%, -0.3%] | 24 |
- nice improvement to debug builds, especially for ripgrep and serde_derive
Unbreak non-unix non-windows bootstrap #118894 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -10.4% | [-30.8%, -0.6%] | 8 |
Improvements (secondary) | - | - | 0 |
All (primary) | -10.4% | [-30.8%, -0.6%] | 8 |
- (don’t get excited; this is just a return-to-normal after the artificial regression flagged with PR #118870 above)
cache param env canonicalization #117749 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -2.0% | [-4.8%, -0.2%] | 32 |
Improvements (secondary) | -1.3% | [-1.4%, -1.3%] | 2 |
All (primary) | -2.0% | [-4.8%, -0.2%] | 32 |
- pretty solid improvement here to serde, diesel, bitmaps, hyper, image.
-Ztrait-solver=next
to -Znext-solver
#118937 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.9% | [-1.0%, -0.9%] | 4 |
Improvements (secondary) | -0.5% | [-0.8%, -0.3%] | 21 |
All (primary) | -0.9% | [-1.0%, -0.9%] | 4 |
- (just noise)
Use the LLVM option NoTrapAfterNoreturn #110494 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.9% | [-0.9%, -0.8%] | 4 |
Improvements (secondary) | -0.5% | [-0.8%, -0.3%] | 25 |
All (primary) | -0.9% | [-0.9%, -0.8%] | 4 |
- (just noise)
Add support for --env
on tracked_env::var
#118830 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.7% | [-0.8%, -0.7%] | 3 |
Improvements (secondary) | -0.5% | [-0.7%, -0.3%] | 7 |
All (primary) | -0.7% | [-0.8%, -0.7%] | 3 |
- (just noise)
don’t fold ParamEnv in register_predicate_obligation #119048 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -2.1% | [-7.3%, -0.2%] | 23 |
Improvements (secondary) | -0.3% | [-0.3%, -0.3%] | 1 |
All (primary) | -2.1% | [-7.3%, -0.2%] | 23 |
- nice improvement to diesel and serde.
resolve: Replace visibility table in resolver outputs with query feeding #118657 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.5%, -0.1%] | 70 |
Improvements (secondary) | -0.6% | [-1.2%, -0.1%] | 42 |
All (primary) | -0.3% | [-0.5%, -0.1%] | 70 |
Mixed
codegen_llvm: set DW_AT_accessibility
#115165 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.3%] | 4 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.7% | [-0.7%, -0.6%] | 4 |
Improvements (secondary) | -0.4% | [-0.7%, -0.2%] | 22 |
All (primary) | -0.2% | [-0.7%, 0.3%] | 8 |
- the improvements are helloworld noise; the regressions are minor.
Rollup of 6 pull requests #119009 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 1 |
Regressions (secondary) | 0.4% | [0.2%, 1.2%] | 8 |
Improvements (primary) | -1.3% | [-1.9%, -0.9%] | 8 |
Improvements (secondary) | - | - | 0 |
All (primary) | -1.1% | [-1.9%, 0.2%] | 9 |
- The single tiny regression to exa doc full does not warrant spending time trying to tease apart this rollup, IMO.
- marked as triaged
Rollup of 5 pull requests #119069 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.3% | [0.3%, 0.3%] | 2 |
Improvements (primary) | -0.2% | [-0.3%, -0.1%] | 12 |
Improvements (secondary) | -0.3% | [-0.5%, -0.2%] | 13 |
All (primary) | -0.2% | [-0.3%, -0.1%] | 12 |
- The two minor regressions to secondary benchmarks do not warrant spending time trying to tease apart this rollup, IMO.
- marked as triaged
Nominated Issues
- No I-compiler-nominated issues this time.
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “tidy watcher” rust#114209 (last review activity: 2 months ago)
- anyone wants to adopt this puppet? Seems it’s bouncing a bit around
- “Try Carbon’s new hashing strategy in the compiler” rust#117079 (last review activity: about 58 days ago)
- cc: @bjorn3 (IIUC)
- “mark ty::Const::Error when meet unsupport ty for const generic params” rust#117176 (last review activity: about 56 days ago)
- cc: @michael goulet (compiler-errors) (for some questions but review is assigned to @Wesley Wiser)
- “Make
#![allow_internal_unstable(..)]
work withstmt_expr_attributes
” rust#117420 (last review activity: about 51 days ago)- cc: @wesley wiser
Next week’s WG checkins
- @WG-mir-opt by @oli (on leave, other WG member?)
- @_T-rust-analyzer by @Lukas Wirth
Next meetings' agenda draft: hackmd link