T-compiler Meeting Agenda 2022-12-15
Announcements
- Today release of Rust stable 1.66
- Compiler Team Planning meeting at time:2022-12-16T10: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 the Core team know (or at least message @pnkfelix or @Wesley Wiser so we can pass it along).
Other WG meetings (calendar link)
- [Types team] Shallow subtyping weekly meeting at time:2022-12-19T10:00:00-05:00
- Async WG triage meeting at time:2022-12-19T11:30:00-05:00
- [wg-traits] GATs Sync at time:2022-12-19T16:00:00-05:00
MCPs/FCPs
- New MCPs (take a look, see if you like them!)
- “Upgrade
*-linux-musl
targets to musl 1.2” compiler-team#572
- “Upgrade
- Old MCPs (not seconded, take a look)
- “Add
#[alias]
attribute to allow symbol aliasing” compiler-team#526 (last review activity: 4 months ago) - " Promote
i586-unknown-linux-gnu
to Tier 2 with Host Tools " compiler-team#543 (last review activity: 3 months ago) - “Lower baseline expectations for i686 unix-like targets” compiler-team#548 (last review activity: 3 months ago)
- “configurable rustc timeout for compiletest tests” compiler-team#554 (last review activity: 3 months ago)
- “Rustc Contributor Program Major Change Proposal” compiler-team#557 (last review activity: about 51 days ago)
- “Introduce a
#[rustc::*]
tool attribute namespace and provide a stable#[rustc::on_unimplemented]
attribute” compiler-team#560 (last review activity: about 57 days ago) - “
-Z instrument-xray
option” compiler-team#561 (last review activity: about 57 days ago)
- “Add
- Pending FCP requests (check your boxes!)
- “Add
SEMICOLON_IN_EXPRESSIONS_FROM_MACROS
to future-incompat report” rust#103418 - “Change
bindings_with_variant_name
to deny-by-default” rust#104154
- “Add
- Things in FCP (make sure you’re good with it)
- “Arbitrary annotations in compiletest” compiler-team#513
- “New tier-3 targets for OpenHarmony” compiler-team#568
- “Encode spans relative to the enclosing item – enable by default” rust#84762
- Accepted MCPs
- No new accepted proposals this time.
- Finalized FCPs (disposition merge)
- “Make PROC_MACRO_DERIVE_RESOLUTION_FALLBACK a hard error” rust#84022
- “Make
Sized
coinductive, again” rust#100386 - “Elaborate supertrait obligations when deducing closure signatures” rust#101834
- “make const_err a hard error” rust#102091
- “make
order_dependent_trait_objects
show up in future-breakage reports” rust#102635 - “Stabilize raw-dylib for non-x86” rust#102793
- “Use
token::Lit
inast::ExprKind::Lit
.” rust#102944 - “Remove drop order twist of && and || and make them associative” rust#103293
- “Unreserve braced enum variants in value namespace” rust#103578
- “Remove const eval limit and implement an exponential backoff lint instead” rust#103877
- “Stabilize native library modifier
verbatim
” rust#104360 - “Expand a style-guide principle: readability in plain text” rust#104506
- “Find the right lower bound region in the scenario of partial order relations” rust#104765
WG checkins
-
@_WG-llvm by @nagisa and @Nikita Popov (previous checkin):
- @Patrick Walton has done some investigations into memcpy elimination and proposed a new transform in https://reviews.llvm.org/D140089. The big LLVM memcpy eliminator patch is up — 17% reduction in Rust memcpys now, with up to 42% possible in the future with more MIR optimization work.
LLVM 16 is expected to branch Jan 24, so we’ll be starting the LLVM 16 upgrade around that time. A key blocker on the Rust side is the mingw-w64 upgrade (https://github.com/rust-lang/rust/pull/100178).
Note from @_apiraino: mingw-w64 upgrade was nominated for a previous meeting (“to consider the compatibility aspect, at least”). If
T-compiler
if fine with the upgrade, it might be good to explicit that so nobody feels this is blocked on some decision. -
Types team by @nikomatsakis and @Jack Huey (previous checkin):
We had an in-person meetup Nov. 30th - Dec. 2nd. We discussed a bunch of things like: types-y tracking issues; unsound issues; some “end user” features and how we get there; roadmap for short, medium, long-term; and a planning for the trait solver rewrite/refactor. We’re planing to write a blog post “officially” announcing the team, some of things we’ve accomplished since forming, and our roadmap and goals. We’re on pause for meetings for the holidays.
Backport nominations
T-compiler beta / T-compiler stable
- :beta: “Mangle “main” as “__main_void” on wasm32-wasi” rust#105468
- nominated for 1.67.0-beta by @cuviper
- backport this change as needed by wasm32-wasi since #105395
- No stable nominations for
T-compiler
this time.
T-rustdoc beta / T-rustdoc stable
- No backport nominations for
T-rustdoc
this time.
:back: / :shrug: / :hand:
PRs S-waiting-on-team
- “always check alignment during CTFE” rust#104616
- @pnkfelix posted summary of the T-lang meeting
- PR now has assigned a T-compiler reviewer
- “Encode spans relative to the enclosing item – enable by default” rust#84762
- entered in FCP: will be accepted if no further comments
- (other hidden issues in progress or waiting on other teams, details here)
Oldest PRs waiting for review
- “support higher-ranked regions in opaque type inference” rust#100503 (last review activity: 2 months ago)
- cc: @nikomatsakis to review
- “stop special-casing
'static
in evaluation” rust#102472 (last review activity: 2 months ago)- cc: @nikomatsakis - or reassign?
S-blocked
on “changing theorder_dependent_trait_objects
future-compat lint to a hard error”: maybe tagT-lang
?
- “[
unused_braces
] Lint multiline blocks as long as not in arms” rust#102432 (last review activity: 2 months ago)- cc: @Caleb Cartwright (left some concerns)
- “Fix #99684 through autoref in
write!
macro with a two-phased borrows retrocompat workaround” rust#100202 (last review activity: 2 months ago)- pinging past reviewers: @David Tolnay @eddyb (also for comment)
- “make a help text for ‘cannot find macro’ actionable” rust#102881 (last review activity: 2 months ago)
- pending question for @Michael Goulet (compiler-errors)
- @TaKO8Ki autoassigned review - reassign?
Issues of Note
Short Summary
- 1 T-compiler P-critical issues
- 51 T-compiler P-high issues
- 0 P-critical, 0 P-high, 0 P-medium, 0 P-low regression-from-stable-to-beta
- 0 P-critical, 1 P-high, 4 P-medium, 1 P-low regression-from-stable-to-nightly
- 2 P-critical, 30 P-high, 87 P-medium, 7 P-low regression-from-stable-to-stable
P-critical
- “Seg fault in Rust 1.65.0 if I don’t create temporary variable” rust#105295
- Should be fixed by rust#105483 by @Michael Goulet (compiler-errors)
- #105483 is on FCP and waiting feedback
- No
P-critical
issues forT-rustdoc
this time.
P-high regressions
- No
P-high
beta regressions this time.
Unassigned P-high nightly regressions
- No unassigned
P-high
nightly regressions this time.
Performance logs
Fairly quiet week with the only excitement coming from a nice improvement implemented by @nnethercote which fixed a pesky performance regressions in the linting system. This produced a 0.6% performance improvement across a large amount of the real world crates we test against.
Triage done by @rylev. Revision range: 9db224fc..109cccbe
Summary:
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.2% | [0.2%, 0.2%] | 3 |
Regressions (secondary) | 1.7% | [0.3%, 3.3%] | 11 |
Improvements (primary) | -0.8% | [-2.2%, -0.2%] | 129 |
Improvements (secondary) | -1.2% | [-4.4%, -0.1%] | 97 |
All (primary) | -0.7% | [-2.2%, 0.2%] | 132 |
2 Regressions, 2 Improvements, 4 Mixed; 3 of them in rollups 41 artifact comparisons made in total
Regressions
Rollup of 9 pull requests #105378 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 1.9% | [0.2%, 4.4%] | 12 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -0.8% | [-0.8%, -0.8%] | 1 |
All (primary) | - | - | 0 |
- Suspicion is that #105250 is the cause. Running a regression test to confirm.
- This is small enough that it’s not worth stressing about.
Fast-path some binder relations #105350 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 1.1% | [1.0%, 1.2%] | 2 |
Regressions (secondary) | 2.3% | [2.0%, 2.7%] | 6 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | - | - | 0 |
All (primary) | 1.1% | [1.0%, 1.2%] | 2 |
- This is noise. The regression cancel out the improvements in the exact same test cases from the previous commit which is a very strong indicator that this is noise.
Improvements
Fix lint perf regressions #105485 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.6% | [-1.5%, -0.2%] | 138 |
Improvements (secondary) | -0.8% | [-2.5%, -0.2%] | 93 |
All (primary) | -0.6% | [-1.5%, -0.2%] | 138 |
Inline and remove place_contents_drop_state_cannot_differ
. #105436 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | -0.8% | [-1.2%, -0.4%] | 3 |
Improvements (secondary) | -2.2% | [-2.6%, -2.0%] | 6 |
All (primary) | -0.8% | [-1.2%, -0.4%] | 3 |
- These are noise and went away in the next commit
Mixed
Rollup of 10 pull requests #105486 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.4%, 0.4%] | 1 |
Regressions (secondary) | - | - | 0 |
Improvements (primary) | - | - | 0 |
Improvements (secondary) | -3.9% | [-4.0%, -3.8%] | 2 |
All (primary) | 0.4% | [0.4%, 0.4%] | 1 |
- A single tiny regression on a doc profiler, not worth worrying about. (commented here)
Rollup of 9 pull requests #105512 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 1.1% | [1.1%, 1.1%] | 1 |
Improvements (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
Improvements (secondary) | -0.4% | [-0.6%, -0.2%] | 6 |
All (primary) | -0.2% | [-0.2%, -0.2%] | 1 |
- The regressions is small in absolute terms, only in instructions count, it’s a short stress test that doesn’t seem to be the only one to exercize some codepath changed in this PR. Nothing jumps out in the rolled up PRs nor seems to apply to the other benchmarks. There are also small wins elsewhere, so this seems fine. (commented here)
Group some fields in a common struct so we only pass one reference instead of three #105357 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | 0.4% | [0.2%, 0.7%] | 23 |
Regressions (secondary) | 0.4% | [0.1%, 0.7%] | 22 |
Improvements (primary) | -0.5% | [-0.8%, -0.2%] | 33 |
Improvements (secondary) | -0.9% | [-1.4%, -0.2%] | 18 |
All (primary) | -0.1% | [-0.8%, 0.7%] | 56 |
- Wins appear to roughly equal or slightly outweigh the losses here. (commented here)
Remove token::Lit
from ast::MetaItemLit
. #105160 (Comparison Link)
(instructions:u) | mean | range | count |
---|---|---|---|
Regressions (primary) | - | - | 0 |
Regressions (secondary) | 1.0% | [1.0%, 1.0%] | 1 |
Improvements (primary) | -0.9% | [-1.0%, -0.8%] | 5 |
Improvements (secondary) | - | - | 0 |
All (primary) | -0.9% | [-1.0%, -0.8%] | 5 |
- There is a single trivial regression, which may or may not be real. (commented here)
Nominated Issues
- “Android NDK r25b changes will break developers using r22b or older” rust#103673
- Nominated by @tmandry (comment), basically needs someone driving the FCP mentioned in previous meeting
- draft blog post announcing the NDK min. version update
- “Temporarily disable building rustc with ThinLTO on
x86_64-unknown-linux-gnu
andx86_64-pc-windows-msvc
” rust#105662- ThinLTO on by default seems to “regress the message we print during ICEs sometimes, including the query stack and explanation on how to open a GH issue”
- T-compiler to review: should we proceed and disable ThinLTO on CI temporarily also for linux+windows targets?
- No nominated RFCs for
T-compiler
this time.
Next week’s WG checkins
None (WG-checkins paused for a few weeks)