T-compiler Meeting Agenda 2024-04-11
Announcements
- Release of Rust stable 1.77.2 (blog post) (fixes the CVE on Windows platforms that is around now: args parsing for Windows scripts)
- 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)
- Types Team: ITE (Impl Trait Everywhere) Triage time:2024-04-11T22:00:00+01:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Partial compilation using MIR-only rlibs” compiler-team#738 (Zulip)
- Old MCPs (stale MCP might be closed as per MCP procedure)
- None at this time
- Old MCPs (not seconded, take a look)
- “Target families for executable format” compiler-team#716 (Zulip) (last review activity: 2 months ago)
- “Add
--emit=
to emit nothing” compiler-team#718 (Zulip) (last review activity: 2 months ago) - “Promote riscv64gc-unknown-linux-musl to tier 2” compiler-team#728 (Zulip) (last review activity: about 34 days ago)
- “Skip virtual drop for !needs_drop types” compiler-team#730 (Zulip) (last review activity: about 6 days ago)
- “Add
-Zemit-thin-lto-index=<path>
to enable distributed ThinLTO users” compiler-team#735 (Zulip) (last review activity: about 6 days ago) - “Only emit forward compatible v0 symbol names with graceful degradation” compiler-team#737 (Zulip) (last review activity: about 6 days ago)
- Pending FCP requests (check your boxes!)
- merge: Make casts of pointers to trait objects stricter (rust#120248)
- @|239881 @|116883 @_|125270
- no pending concerns
- merge: Make casts of pointers to trait objects stricter (rust#120248)
- Things in FCP (make sure you’re good with it)
- “allow all command line flags to be passed multiple times, overwriting previous usages” compiler-team#731
- “Tracking Issue for RFC 3013: Checking conditional compilation at compile time” rust#82450
- “Ignore
-C strip
on MSVC” rust#115120 - “sess: stabilize
-Zrelro-level
as-Crelro-level
” rust#121694
- Accepted MCPs
- No new accepted proposals this time.
- MCPs blocked on unresolved concerns
- merge: Retire the mailing list and make all decisions on zulip (compiler-team#649)
- merge: Stabilize
--env-set
option (rust#119926)- @|119009 @|116083 @|124288 @|123586 @|125250 @|119031 @|124287 @|116118
- other-rustc-vars (by petrochenkov)
- merge: Add a new
--build-id
flag to rustc (compiler-team#635)- @|125250 @|116107 @|125294 @|123856
- other-existing-options (by petrochenkov) option-name (by wesleywiser)
- “Add hygiene attributes to compile expanded source code” compiler-team#692 (Zulip)
- concern: added-complexity-to-frontend
- Finalized FCPs (disposition merge)
- “Pass list of defineable opaque types into canonical queries” rust#122077
- Other teams finalized FCPs
- “privacy: Stabilize lint
unnameable_types
” rust#120144 - “Pass list of defineable opaque types into canonical queries” rust#122077
- “privacy: Stabilize lint
WG checkins
- @_T-rust-analyzer by @Lukas Wirth (last checkin):
Checkin text
Backport nominations
T-compiler beta / T-compiler stable
- :beta: [1.78] “fix attribute validation on associated items in traits” rust#121545
- Merged. Fixes #121537 (ICE on AST lowering)
- Should also fix #123287, @_pnkfelix is investigating (comment)
- :beta: [1.78] “Only inspect user-written predicates for privacy concerns” rust#123377
- merged. Fixes #123288, P-high regression in latest crater run
- :beta: [1.78] “Check def id before calling
match_projection_projections
” rust#123471- merged. Fixes #123448, compilation started looping forever (comment about the fix)
- :beta: [1.78] “Update to LLVM 18.1.3” rust#123555
- merged. backports an LLVM patch. Fixes #122805 (p-medium codegen regression)
- :beta: [1.78] “Restore
pred_known_to_hold_modulo_regions
” rust#123578- merged. Fixes #123275 (regression from crater run)
- :beta: [1.78] “Properly handle emojis as literal prefix in macros” rust#123752
- Fixes #123696, old stable-to-stable regression, nice but not a vital backport (see comment)
- Not merged, waiting for 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
Issues of Note
Short Summary
- 2 T-compiler P-critical issues
- 64 T-compiler P-high issues
- 1 P-critical, 5 P-high, 4 P-medium, 1 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 5 P-medium, 2 P-low regression-from-stable-to-nightly
- 1 P-critical, 35 P-high, 100 P-medium, 17 P-low regression-from-stable-to-stable
P-critical
- “regression: unwrap on None in ast lowering” rust#123287
- could be fixed by #121545 (see comment, @pnkfelix thanks!)
- No
P-critical
issues forT-types
this time.
P-high regressions
- “regression: ICE failed to get output type of async function” rust#123273
- under @Michael Goulet (compiler-errors) eyes
- “regression: unexpected unsized tail ICE” rust#123275
- Fixed by #123578
- “regression: trait bound is not satisfied” rust#123279
- will be closed by #123302 (merged and beta accepted)
- “regression: f16 + f128 is unstable” rust#123282
- Will be fixed by #123466 (merged straight into beta with a few other patches)
Unassigned P-high nightly regressions
- “nightly-2024-04-05 regression: error[E0275]: overflow evaluating the requirement” rust#123573
- reported by a project using Bevy and by the Diesel maintainer
- seems the new solver could help here. See comment and PR #123594 (in FCP)
Performance logs
A quiet week; all the outright regressions were already triaged (the one biggish one was #122077, which is justified as an important bug fix). There was a very nice set of improvements from PR #122070, which cleverly avoids a lot of unnecessary allocator calls when building an incremental dep graph by reusing the old edges from the previous graph.
Triage done by @pnkfelix. Revision range: 3d5528c2..86b603cd
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 2.0% | [0.4%, 5.0%] | 83 |
Regressions (secondary) | 2.1% | [0.5%, 4.8%] | 79 |
Improvements (primary) | -1.5% | [-2.9%, -0.3%] | 121 |
Improvements (secondary) | -1.4% | [-3.5%, -0.3%] | 67 |
All (primary) | -0.1% | [-2.9%, 5.0%] | 204 |
3 Regressions, 3 Improvements, 7 Mixed; 1 of them in rollups 78 artifact comparisons made in total
Regressions
instantiate higher ranked goals outside of candidate selection #119820 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.3%, 0.8%] | 8 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.6% | [0.3%, 0.8%] | 8 |
- already triaged by Jakub as an expected small performance regresison
Pass list of defineable opaque types into canonical queries #122077 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.9% | [0.2%, 5.4%] | 101 |
Regressions (secondary) | 2.3% | [0.3%, 4.7%] | 77 |
| Improvements (secondary) | - | - | 0 | | All (primary) | 1.8% | [-0.6%, 5.4%] | 102 |
- already triaged by oli, as an expected performance regression that is justified as an important bugfix
Replace some CrateStore
trait methods with hooks. #123099 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.3% | [0.2%, 0.4%] | 14 |
Regressions (secondary) | 0.3% | [0.3%, 0.4%] | 2 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 0.3% | [0.2%, 0.4%] | 14 |
- already triaged by oli, categorized as noise.
Improvements
hir: Drop owner’s own item-local id (zero) from parenting tables #123415 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.4%, -0.2%] | 3 |
Improvements (secondary) | -0.4% | [-1.3%, -0.3%] | 13 |
All (primary) | -0.3% | [-0.4%, -0.2%] | 3 |
[perf] cache type info for ParamEnv #123058 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.9% | [-4.9%, -0.2%] | 47 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.9% | [-4.9%, -0.2%] | 47 |
Remove debuginfo from rustc-demangle too #123608 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.6% | [0.4%, 0.9%] | 4 |
Improvements (primary) | -1.6% | [-2.7%, -0.3%] | 7 |
Improvements (secondary) | -1.3% | [-2.4%, -0.3%] | 24 |
All (primary) | -1.6% | [-2.7%, -0.3%] | 7 |
Mixed
Add Ord::cmp
for primitives as a BinOp
in MIR #118310 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 0.7%] | 3 |
Regressions (secondary) | 0.3% | [0.2%, 0.4%] | 2 |
Improvements (primary) | -0.6% | [-0.6%, -0.6%] | 1 |
Improvements (secondary) | -3.1% | [-3.1%, -3.1%] | 1 |
All (primary) | 0.2% | [-0.6%, 0.7%] | 4 |
- The impact here is somewhat limited, and the graph indicates that the 0.69% instruction-count regression for image-0.24.1 was subsequently recovered.
Encode dep graph edges directly from the previous graph when promoting #122070 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 0.4% | [0.4%, 0.4%] | 1 |
Improvements (primary) | -1.6% | [-3.1%, -0.2%] | 113 |
Improvements (secondary) | -1.5% | [-3.6%, -0.3%] | 37 |
All (primary) | -1.6% | [-3.1%, -0.2%] | 113 |
- already marked as triaged by Jakub
Implement T-types suggested logic for perfect non-local impl detection #122747 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 2.3% | [0.6%, 4.4%] | 12 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.4%, -0.2%] | 9 |
Improvements (secondary) | - | - | 0 |
All (primary) | 1.2% | [-0.4%, 4.4%] | 21 |
- already marked as triaged by Urgau, with the comment “The perf regressions in diesel are due to the lint being triggered and producing nearly 300 warnings (with 155 actually shown)”
- (This reminds me of rustc-perf#1819)
Remove sharding for VecCache #123556 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.4%, 0.4%] | 1 |
Regressions (secondary) | 0.5% | [0.2%, 1.0%] | 5 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.9% | [-1.1%, -0.7%] | 4 |
All (primary) | 0.4% | [0.4%, 0.4%] | 1 |
- already marked as triaged by simulacrum, presumably because this is likely noise since it is “just” removing the sharded type whose feature was not in use.
Use unchecked_sub in str indexing #123561 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.9% | [0.9%, 0.9%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.5% | [-0.9%, -0.4%] | 7 |
All (primary) | 0.9% | [0.9%, 0.9%] | 1 |
- this is an improvement to the code for
str::get_unchecked
when overflow checks are enabled; its calling a compiler-intrinsic directly now. - it really doesn’t make any sense that it caused any regression at all. (Perhaps this change is causing a change to inlining decisions, at least for cargo?)
- marking as triaged.
Rollup of 9 pull requests #123645 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.6% | [0.6%, 0.6%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.3% | [-0.4%, -0.3%] | 2 |
Improvements (secondary) | -1.8% | [-1.8%, -1.8%] | 1 |
All (primary) | -0.0% | [-0.4%, 0.6%] | 3 |
- Looks like a temporary spike. Marking as triaged.
Only collect mono items from reachable blocks #123272 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 1.5%] | 8 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.8% | [-1.5%, -0.3%] | 6 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.1% | [-1.5%, 1.5%] | 14 |
- fixed an important bug.
- from the comment history, it looks like the minor restricted regressions were anticipated.
- marking as triaged.
Nominated Issues
- “Fallout from expansion of redundant import checking” rust#121708
- Fallout from #117772, added some linting improving
use
import redundancy. - Nominated for T-lang and T-compiler by @Josh Triplett see comment
- change is already on beta, but it has some impact, so in the meanwhile it will reverted (comment)
- Fallout from #117772, added some linting improving
- “Consider using
llvm-strip
” rust#123151- proposal advanced by @_Jubilee, there’s also a Zulip discussion
on various systems, we are encountering reports of people having inadequately-built strip binaries in their PATH that cannot support all Rust compiler use-cases (…)
llvm-strip
gets everything right, as far as we are concerned
- proposal advanced by @_Jubilee, there’s also a Zulip discussion
- “regression: compiler had non-unwinding abort” rust#123286
- No I-compiler-nominated RFCs this time.
Oldest PRs waiting for review
- “Issue 83060 fix” rust#119798 (last review activity: 3 months ago)
- cc @Wesley Wiser
- “Small improvements to internal documentation” rust#120388
- cc: @Esteban Küber
- “Suggest a borrow when using dbg” rust#120990 (last review activity: about 58 days ago)
- cc: @Esteban Küber
- “Always emit
native-static-libs
note, even if it is empty” rust#121216 (last review activity: about 54 days ago)- cc @Wesley Wiser CI fails and author asked for input. Can you help there? thanks
Next week’s WG checkins
- Impl Trait initiative by @oli
- @_WG-llvm by @nagisa and @Nikita Popov
Next meetings' agenda draft: hackmd link