--- tags: weekly, rustc type: docs --- # T-compiler Meeting Agenda 2022-06-02 ## Announcements - Tomorrow <time:2022-06-03T10:00:00-04:00 Types Team: Planning/Deep-Dive [calendar link](https://calendar.google.com/calendar/event?eid=M3JsYmdkN2F0cjdtYXE0Z2ljYzM4Nm42NTRfMjAyMjA2MDNUMTMwMDAwWiA2dTVycnRjZTZscnR2MDdwZmkzZGFtZ2p1c0Bn&ctz=GMT+02: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). - Stable MIR MVP: https://github.com/rust-lang/rust/pull/97385 - basically just a single entry point for all external users of MIR - expected to evolve to wrap common APIs with less-frequently changing ones. - no path towards actual stabilization yet ## Other WG meetings ([calendar link](https://calendar.google.com/calendar/embed?src=6u5rrtce6lrtv07pfi3damgjus%40group.calendar.google.com)) - <time:2022-06-06T16:00:00+02:00> wg-debugging status & design meeting - <time:2022-06-06T17:00:00+02:00> wg-rls-2.0 steering meeting - <time:2022-06-06T17:30:00+02:00> Async WG triage meeting - <time:2022-06-06T22:00:00+02:00> [wg-traits] GATs Sync - <time:2022-06-15T15:00:00+02:00> [Types team] Hack session: Advanced subtyping ## MCPs/FCPs - New MCPs (take a look, see if you like them!) - No new proposals this time. - Old MCPs (not seconded, take a look) - "Tier 3 target proposal: riscv64gc-linux-android (Android target for `riscv64gc`)" [compiler-team#472](https://github.com/rust-lang/compiler-team/issues/472) (last review activity: 5 months ago) - :loudspeaker: Stale MCP: candidate for closing - [Zulip discussion](https://rust-lang.zulipchat.com/#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/Tier.203.20target.20proposal.3A.20riscv64gc-linux-a.E2.80.A6.20compiler-team.23472) - MCP author replied to all questions, so it seems no visible concern to be addressed - "`-Dwarnings` to cover all warnings" [compiler-team#473](https://github.com/rust-lang/compiler-team/issues/473) (last review activity: 5 months ago) - "Dealing with type/const ambiguities" [compiler-team#480](https://github.com/rust-lang/compiler-team/issues/480) (last review activity: 4 months ago) - "Removing codegen logic for `nvptx-nvidia-cuda` (32-bit target)" [compiler-team#496](https://github.com/rust-lang/compiler-team/issues/496) (last review activity: 2 months ago) - "Arbitrary annotations in compiletest" [compiler-team#513](https://github.com/rust-lang/compiler-team/issues/513) (last review activity: about 24 days ago) - Pending FCP requests (check your boxes!) - "Stabilize `-Zgcc-ld=lld` as `-Clink-self-contained=linker -Clinker-flavor=gcc-lld`" [compiler-team#510](https://github.com/rust-lang/compiler-team/issues/510#issuecomment-1119675764) - "Increase the minimum linux-gnu versions" [rust#95026](https://github.com/rust-lang/rust/pull/95026#issuecomment-1077855006) - Note: T-libs discussed and approved this change ([comment])(https://github.com/rust-lang/rust/pull/95026#issuecomment-1144222893) - Things in FCP (make sure you're good with it) - "Build-time execution sandboxing" [compiler-team#475](https://github.com/rust-lang/compiler-team/issues/475) - "Change compiletest declarations parsing" [compiler-team#512](https://github.com/rust-lang/compiler-team/issues/512) - Accepted MCPs - No new accepted proposals this time. - Finalized FCPs (disposition merge) - "Tracking Issue for `-Z terminal-width`" [rust#84673](https://github.com/rust-lang/rust/issues/84673) - "Remove migrate borrowck mode" [rust#95565](https://github.com/rust-lang/rust/pull/95565) - "Stabilize the `bundle` native library modifier" [rust#95818](https://github.com/rust-lang/rust/pull/95818) - "Modify MIR building to drop repeat expressions with length zero" [rust#95953](https://github.com/rust-lang/rust/pull/95953) - "Remove label/lifetime shadowing warnings" [rust#96296](https://github.com/rust-lang/rust/pull/96296) ### WG checkins - @_*WG-traits* (impl trait) by @**nikomatsakis** @**oli** ([prev. checkin](https://hackmd.io/xSZrlTLfSTyli92VFlLuOQ#WG-checkins)) * [fix soundness bug where a TAIT could imply a lifetime bound that doesn't hold](https://github.com/rust-lang/rust/pull/95519) * [anonymous lifetimes on TAITs mentioned in function args can be connected to anonymous output lifetimes](https://github.com/rust-lang/rust/pull/96903) * [fix a bunch of ICEs that occurred because closures could now be malformed for certain params of a TAIT](https://github.com/rust-lang/rust/pull/96899) * [diagnostic improvement: hidden types are checked to be wf for the TAIT at definition site of each hidden type, not once for the opaque type](https://github.com/rust-lang/rust/pull/96736) * [soundness fix: no TAIT in impl block headers](https://github.com/rust-lang/rust/pull/95973) * [merge all defining uses of a TAIT within a function, instead of merging them at the end with other uses](https://github.com/rust-lang/rust/pull/95767) * next steps in flight are * [check generators for wf](https://github.com/rust-lang/rust/pull/97183) * [treat RPITs and TAITs the same if used in function return types or across match arms](https://github.com/rust-lang/rust/pull/96727) * [fix the remaining soundness bug of TAIT and RPIT](https://github.com/rust-lang/rust/pull/95474) * [remove a back compat hack for RPIT that allowed opaque types to ignore assoc type bounds if the hidden type satisfies them](https://github.com/rust-lang/rust/pull/97346) - @_*WG-llvm* by @**nagisa** and @**Nikita Popov** ([prev. checkin](https://rust-lang.zulipchat.com/#narrow/stream/238009-t-compiler.2Fmeetings/topic/.5Bweekly.5D.202022-04-28/near/280501429)) > * Last bits for opaque pointer support in rust have landed (https://github.com/rust-lang/rust/pull/94214) and I've enabled them in LLVM today, so we should be able to pick this up with the LLVM 15 upgrade without further changes. > * There's a proposal for first-class aborting unwind support (https://discourse.llvm.org/t/rfc-add-call-unwindabort-to-llvm-ir/62543), that will likely be useful for rust as well. > * There's a PR for virtual function elimination with LTO (https://github.com/rust-lang/rust/pull/96285). Though looks like it's not entirely sound at the moment. ## Backport nominations [T-compiler beta](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted+label%3AT-compiler) / [T-compiler stable](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted+label%3AT-compiler) - :beta: "don't do `Sized` and other return type checks on RPIT's real type" [rust#97431](https://github.com/rust-lang/rust/pull/97431) - nominated by @**oli** - fixes [rust#97226](https://github.com/rust-lang/rust/issues/97226), ICE when doing `Sized` check against the RPIT's real type - :beta: "Fix indices and remove some unwraps in arg mismatch algorithm" [rust#97557](https://github.com/rust-lang/rust/pull/97557) - patch authored and nominated for backport by @**Michael Goulet (compiler-errors)** - Fixes [rust#97484](https://github.com/rust-lang/rust/issues/97484) (ICE when parsing args) - not yet merged (cc @**Jack Huey** for review) [T-rustdoc beta](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Abeta-nominated+-label%3Abeta-accepted+label%3AT-rustdoc) / [T-rustdoc stable](https://github.com/rust-lang/rust/issues?q=is%3Aall+label%3Astable-nominated+-label%3Astable-accepted+label%3AT-rustdoc) - No backport nominations for `T-rustdoc` this time. :back: / :shrug: / :hand: ## PRs S-waiting-on-team [T-compiler](https://github.com/rust-lang/rust/pulls?utf8=%E2%9C%93&q=is%3Aopen+label%3AS-waiting-on-team+label%3AT-compiler) - No PRs waiting on `T-compiler` this time. ## Oldest PRs waiting for review [T-compiler](https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-asc+label%3AS-waiting-on-review+draft%3Afalse+label%3AT-compiler+-label%3AT-lang+-label%3AT-infra+-label%3AT-release+-label%3AT-libs+-label%3AT-libs-api) - "Add option to pass environment variables" [rust#94387](https://github.com/rust-lang/rust/pull/94387) (last review activity: about 33 days ago) - cc latest reviewers: @**Esteban Küber** and @**bjorn3** - "`Clone` suggestions" [rust#95115](https://github.com/rust-lang/rust/pull/95115) (last review activity: about 26 days ago) - assigned reviewer @**Esteban Küber** which suggested an additional reviewer ([comment](https://github.com/rust-lang/rust/pull/95115#issuecomment-1107672151)) - also cc: @**oli** (as they left comments, too) - "Add Finalize statement to make deaggregation "reversible" by storing all information in MIR" [rust#96043](https://github.com/rust-lang/rust/pull/96043) (last review activity: about 25 days ago) - maybe a comment on perf run results? maybe cc: @**Wesley Wiser** - "Remove opaque types from typeck expectations" [rust#96727](https://github.com/rust-lang/rust/pull/96727) (last review activity: about 25 days ago) - assigned for review to @**lcnr** - "Print type of every call in a method call chain" [rust#96918](https://github.com/rust-lang/rust/pull/96918) (last review activity: about 20 days ago) - cc: @**Michael Goulet (compiler-errors)** maybe for comment on latest author comment? ## Issues of Note ### Short Summary - [2 T-compiler P-critical issues](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-critical) - [1 of those are unassigned](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-critical+no%3Aassignee) - [62 T-compiler P-high issues](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-high) - [47 of those are unassigned](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AT-compiler+label%3AP-high+no%3Aassignee) - [0 P-critical, 0 P-high, 4 P-medium, 0 P-low regression-from-stable-to-beta](https://github.com/rust-lang/rust/labels/regression-from-stable-to-beta) - [0 P-critical, 0 P-high, 2 P-medium, 0 P-low regression-from-stable-to-nightly](https://github.com/rust-lang/rust/labels/regression-from-stable-to-nightly) - [1 P-critical, 39 P-high, 77 P-medium, 9 P-low regression-from-stable-to-stable](https://github.com/rust-lang/rust/labels/regression-from-stable-to-stable) ### P-critical [T-compiler](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AP-critical+label%3AT-compiler) - "Infinite recursion optimized away with `opt-level=z`" [rust#97428](https://github.com/rust-lang/rust/issues/97428) - @**Nikita Popov** already provided patch LLVM upstream and backport for our LLVM fork ([comment](https://github.com/rust-lang/rust/issues/97428#issuecomment-1141175822)) - "Wrong cast of u16 to usize on aarch64" [rust#97463](https://github.com/rust-lang/rust/issues/97463) - very old unsoundness issue ([comment](https://github.com/rust-lang/rust/issues/97463#issuecomment-1142191696)) on tier 1 platform ([tier support list](https://github.com/rust-lang/rust/issues/97463#issuecomment-1142191696)), surfaced just now [T-rustdoc](https://github.com/rust-lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen+label%3AP-critical+label%3AT-rustdoc) - No `P-critical` issues for `T-rustdoc` this time. ### P-high regressions [P-high beta regressions](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Aregression-from-stable-to-beta+label%3AP-high+-label%3AT-infra+-label%3AT-release+-label%3AT-rustdoc+-label%3AT-core) - No `P-high` beta regressions this time. [Unassigned P-high nightly regressions](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Aregression-from-stable-to-nightly+label%3AP-high+no%3Aassignee+-label%3AT-infra+-label%3AT-release+-label%3AT-rustdoc+-label%3AT-core) - No unassigned `P-high` nightly regressions this time. ## Performance logs > [triage logs for 2022-05-31](https://github.com/rust-lang/rustc-perf/blob/master/triage/2022-05-31.md) A good week: The regressions were small; some have follow-up PR's in flight to address them; and we saw a big improvement from PR [#97345](https://github.com/rust-lang/rust/pull/97345), which adds more fast paths for quickly exiting comparisons between two types (such as `BitsImpl<M>` and `BitsImpl<N>` for const integers `M` and `N`). This improved compile-times for the `bitmaps` benchmark by 50-65% in some cases (including the trunk `nalgebra`, according to independent investigation from nnethercote). That same PR had more modest improvements (1% to 2%) to the compile-times for a number of other crates. Many thanks to lcnr and nnethercote for some excellent work here! Triage done by **@pnkfelix**. Revision range: [43d9f385..0a43923a](https://perf.rust-lang.org/?start=43d9f3859e0204e764161ee085a360274b5f3e9a&end=0a43923a86c3b8f11d005884871b152f59b746f7&absolute=false&stat=instructions%3Au) **Summary**: | | mean | max | count | |:------------------------:|:-----:|:------:|:-----:| | Regressions (primary) | N/A | N/A | 0 | | Regressions (secondary) | 0.8% | 0.9% | 3 | | Improvements (primary) | -4.0% | -65.9% | 227 | | Improvements (secondary) | -2.0% | -7.7% | 217 | | All (primary) | -4.0% | -65.9% | 227 | 3 Regressions, 1 Improvements, 9 Mixed; 0 of them in rollups 59 artifact comparisons made in total 24 Untriaged Pull Requests #### Regressions Proc macro tweaks [#97004](https://github.com/rust-lang/rust/pull/97004) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=9a42c6509d399fd205917ebce474b31315c5d3e9&end=f558990814bb43cfb67db321b299dfdf275663e3&stat=instructions:u) | | mean | max | count | |:------------------------:|:----:|:----:|:-----:| | Regressions (primary) | 0.2% | 0.2% | 1 | | Regressions (secondary) | 0.6% | 1.5% | 10 | | Improvements (primary) | N/A | N/A | 0 | | Improvements (secondary) | N/A | N/A | 0 | | All (primary) | 0.2% | 0.2% | 1 | * aparently making a `Buffer<T>` non-generic (its solely instantiated at `u8`) caused a performance regression. * there is ongoing follow-up work to address the regression, either by making the buffer generic again, or by adding `#[inline]` annotations. * see e.g. [PR 97539](https://github.com/rust-lang/rust/pull/97539) rustdoc: include impl generics / self in search index [#96652](https://github.com/rust-lang/rust/pull/96652) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=84288ed6d5307ed44a0f78e2f1ee55fbadf4e978&end=0acc4a35853215a6f9388ab61455ced309711003&stat=instructions:u) | | mean | max | count | |:------------------------:|:----:|:----:|:-----:| | Regressions (primary) | 0.5% | 1.0% | 3 | | Regressions (secondary) | 1.1% | 1.1% | 3 | | Improvements (primary) | N/A | N/A | 0 | | Improvements (secondary) | N/A | N/A | 0 | | All (primary) | 0.5% | 1.0% | 3 | * This regressed doc-generation for a few primary benchmarks, but I think that might be a inherent cost of a change like this. I marked it as triaged based on that assumption. Move things to `rustc_type_ir` [#97287](https://github.com/rust-lang/rust/pull/97287) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=303d916867040e269b54adf3cfc7f5c903dc26ff&end=0f06824013761ed6829887019033f1001e68f623&stat=instructions:u) | | mean | max | count | |:------------------------:|:----:|:----:|:-----:| | Regressions (primary) | 0.5% | 0.7% | 9 | | Regressions (secondary) | 1.1% | 1.1% | 3 | | Improvements (primary) | N/A | N/A | 0 | | Improvements (secondary) | N/A | N/A | 0 | | All (primary) | 0.5% | 0.7% | 9 | * During development, this PR was identified as regressing one primary benchmark, `bitmaps` (in a variety of contexts), and the PR author [said](https://github.com/rust-lang/rust/pull/97287#issuecomment-1139917174) better to take that perf hit and deal with it later. * In the PR that landed, the number of regressing variants was smaller, but the affected set of benchmarks slightly larger: [both `bitmaps` and `unicode-normalization`](https://perf.rust-lang.org/compare.html?start=303d916867040e269b54adf3cfc7f5c903dc26ff&end=0f06824013761ed6829887019033f1001e68f623&stat=instructions:u) are affected, regressing by 0.35% to 0.70%. * My very brief inpsection of the flamegraphs ([old](https://perf.rust-lang.org/perf/processed-self-profile?commit=303d916867040e269b54adf3cfc7f5c903dc26ff&benchmark=bitmaps-3.1.0-check&scenario=full&type=flamegraph), [new](https://perf.rust-lang.org/perf/processed-self-profile?commit=0f06824013761ed6829887019033f1001e68f623&benchmark=bitmaps-3.1.0-check&scenario=full&type=flamegraph)) didn't show any smoking guns. * At this point I think we can just live with this performance hit. #### Improvements Add suggestion for relaxing static lifetime bounds on dyn trait impls in NLL [#97284](https://github.com/rust-lang/rust/pull/97284) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=764b8615e9149431d8790e3c07cb663642fe393d&end=ed76b773b57cf0aa48ec4e2fc6d6a3f7a9079491&stat=instructions:u) | | mean | max | count | |:------------------------:|:-----:|:-----:|:-----:| | Regressions (primary) | N/A | N/A | 0 | | Regressions (secondary) | N/A | N/A | 0 | | Improvements (primary) | -0.2% | -0.2% | 1 | | Improvements (secondary) | -5.3% | -5.9% | 6 | | All (primary) | -0.2% | -0.2% | 1 | * This managed to improve performance (slightly), probably because it [restructured](https://github.com/rust-lang/rust/pull/97284/commits/3c6c8d5a8dbf4db20450ed5793ef35f29c13466c#r882897413) the `CallArgument` and that had fallout that ended up being positive overall (despite our intuition being that it would hurt performance due to the increase in size). * It might be nice to confirm that hypothesis independently (by isolating just that structural change and confirming that it has a similar effect on performance here) ... * ... but, the improvements are essentially isolated to just the secondary wg-grammar benchmark, so its not really worth too much digging, except if we think it might reveal other structural changes we should make elsewhere. #### Mixed add a deep fast_reject routine [#97345](https://github.com/rust-lang/rust/pull/97345) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=cbdce423201f1b155c46f3ec690a644cf3b4ba53&end=4a99c5f504ab65a0fd9d60f515811e1d9cff8c0a&stat=instructions:u) | | mean | max | count | |:------------------------:|:------:|:------:|:-----:| | Regressions (primary) | N/A | N/A | 0 | | Regressions (secondary) | 0.9% | 1.6% | 10 | | Improvements (primary) | -11.0% | -65.8% | 45 | | Improvements (secondary) | -0.5% | -0.9% | 12 | | All (primary) | -11.0% | -65.8% | 45 | * this was great, as noted in summary. Move various checks to typeck so them failing causes the typeck result to get tainted [#96046](https://github.com/rust-lang/rust/pull/96046) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=46147119ec545045948bc799581d93edd3b1617b&end=56fd680cf9226ab424f88d4e3b43c5e088d17f19&stat=instructions:u) | | mean | max | count | |:------------------------:|:-----:|:-----:|:-----:| | Regressions (primary) | N/A | N/A | 0 | | Regressions (secondary) | 0.9% | 1.1% | 4 | | Improvements (primary) | -0.3% | -0.4% | 4 | | Improvements (secondary) | -0.3% | -0.3% | 24 | | All (primary) | -0.3% | -0.4% | 4 | * This had some small improvements to primary benchmarks. * The CTFE stress test regressed, but I assume that was expected since this was a change to the CTFE engine (to address some ICE's). Update jemalloc to v5.3 [#96790](https://github.com/rust-lang/rust/pull/96790) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=56fd680cf9226ab424f88d4e3b43c5e088d17f19&end=ebbcbfc236ced21d5e6a92269edb704692ff26b8&stat=instructions:u) | | mean | max | count | |:------------------------:|:-----:|:-----:|:-----:| | Regressions (primary) | N/A | N/A | 0 | | Regressions (secondary) | 0.3% | 0.3% | 1 | | Improvements (primary) | -0.9% | -6.2% | 212 | | Improvements (secondary) | -1.1% | -3.2% | 191 | | All (primary) | -0.9% | -6.2% | 212 | * This had various improvements to our primary benchmarks' instruction counts. * The other big thing to observe: the max-rss was improved in several primary benchmarks (by 1% to 6%), and some secondary benchmarks saw even more significant improvements to their max-rss. Split dead store elimination off dest prop [#97158](https://github.com/rust-lang/rust/pull/97158) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=19abca1172ae10d5c084b6c3013d92680f92dd8b&end=68314177e70017c08f6cdf295631bb508f9f85bc&stat=instructions:u) | | mean | max | count | |:------------------------:|:-----:|:-----:|:-----:| | Regressions (primary) | 0.5% | 1.3% | 15 | | Regressions (secondary) | 0.6% | 2.3% | 12 | | Improvements (primary) | -0.4% | -1.9% | 50 | | Improvements (secondary) | -0.6% | -1.3% | 33 | | All (primary) | -0.2% | -1.9% | 65 | * The changes here were investigated by [the PR author](https://github.com/rust-lang/rust/pull/97158#issuecomment-1140550402). * Marking as triaged based on their investigation. Try to cache region_scope_tree as a query [#97383](https://github.com/rust-lang/rust/pull/97383) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=68314177e70017c08f6cdf295631bb508f9f85bc&end=4f39fb1f34d4bd25d9ce96afe7b2d109f073e286&stat=instructions:u) | | mean | max | count | |:------------------------:|:-----:|:-----:|:-----:| | Regressions (primary) | N/A | N/A | 0 | | Regressions (secondary) | 1.0% | 1.0% | 3 | | Improvements (primary) | -1.7% | -4.7% | 98 | | Improvements (secondary) | -2.4% | -7.7% | 43 | | All (primary) | -1.7% | -4.7% | 98 | * This was a targeted PR to address the regressions introduced by PR [#95563](https://github.com/rust-lang/rust/pull/95563) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=acfd327fd4e3a302ebb0a077f422a527a7935333&end=653463731a7f01f519cf85f444869def27f00395&stat=instructions:u). * It seems to succeed at recovering the instruction-count performance lost in that PR. * It doesn't *quite* recover all of the max-rss lost (PR [#97383 improves max-rss by about 3.75%](https://perf.rust-lang.org/compare.html?start=6ac8adad1f7d733b5b97d1df4e7f96e73a46db42&end=209f91e1787d0d29a0e566fa93f35d52e60ea84a&stat=max-rss) while PR [#95563 degraded max-rss by about 4%](https://perf.rust-lang.org/compare.html?start=acfd327fd4e3a302ebb0a077f422a527a7935333&end=653463731a7f01f519cf85f444869def27f00395&stat=max-rss)), but its close enough to satisfy our needs. proc_macro: don't pass a client-side function pointer through the server. [#97461](https://github.com/rust-lang/rust/pull/97461) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=4f39fb1f34d4bd25d9ce96afe7b2d109f073e286&end=116201eefebcf45074ae232377e7145f5fbb704b&stat=instructions:u) | | mean | max | count | |:------------------------:|:-----:|:-----:|:-----:| | Regressions (primary) | 0.5% | 0.5% | 2 | | Regressions (secondary) | N/A | N/A | 0 | | Improvements (primary) | -0.4% | -0.8% | 11 | | Improvements (secondary) | -2.6% | -5.4% | 10 | | All (primary) | -0.3% | -0.8% | 13 | * On the primary benchmarks, this mostly yielded small improvements; the one exception was `serde_derive` (debug), which regressed by ~0.5% for the full and incr-full variants. * Looking at the flamegraphs for the before and after commits, and at the [table at bottom of details page](https://perf.rust-lang.org/detailed-query.html?commit=116201eefebcf45074ae232377e7145f5fbb704b&base_commit=4f39fb1f34d4bd25d9ce96afe7b2d109f073e286&benchmark=serde_derive-1.0.136-debug&scenario=full), it seems like the instruction-count regression is in `codegen_module` * Looking at the history of serde_derive-debug (massively zoomed in on the "Percent Delta from First" Graph kind), it seems reasonable to think that something *did* happen on this PR. * .... but I also don't really think its a big enough regression to be worth tearing our hair out over. This is a (smallish) win overall, and even for serde_derive-debug, it is a small regression in the context of much larger wins, so overall the trajectory is good. * Marked as triaged. Replace `#[default_method_body_is_const]` with `#[const_trait]` [#96964](https://github.com/rust-lang/rust/pull/96964) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=855fc022fe879f4e3493a024f9c6b981d6317612&end=5c780b98d10f48d6255cf2deb2643194b9221c02&stat=instructions:u) | | mean | max | count | |:------------------------:|:-----:|:-----:|:-----:| | Regressions (primary) | 0.2% | 0.3% | 9 | | Regressions (secondary) | 0.2% | 0.3% | 3 | | Improvements (primary) | N/A | N/A | 0 | | Improvements (secondary) | -1.1% | -1.1% | 3 | | All (primary) | 0.2% | 0.3% | 9 | * The primary regressions are mostly in variants of stm32f4, with a two serde and one syn thrown in for good measure. * The improvements are solely to ctfe stress test, which I guess makes sense given the PR? * Anyway, the regressions seem minor, and they are contained to an unstable feature that the stdlib is using. * Marking as triaged. improve format impl for literals [#97480](https://github.com/rust-lang/rust/pull/97480) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=e810f750a2a407f9caeabba39059578e844add14&end=4a8d2e3856c0c75c71998b6c85937203839b946d&stat=instructions:u) | | mean | max | count | |:------------------------:|:-----:|:-----:|:-----:| | Regressions (primary) | 0.4% | 0.5% | 4 | | Regressions (secondary) | N/A | N/A | 0 | | Improvements (primary) | N/A | N/A | 0 | | Improvements (secondary) | -1.5% | -1.5% | 1 | | All (primary) | 0.4% | 0.5% | 4 | * This is adding a fast-path so that `format!("literal")` will compile into the same code as `"literal".to_owned()`. * The primary regression is solely contained to `bitmaps`. * Its possible that the regression to `bitmaps` is due to `format!("literal")` being totally unused in that code; all instances of `format!` there take an additional argument. So its *possible* that the extra code to check about whether to use the fast-path is slowing things down there. * But I personally don't believe that explanation here: Unless I'm misunderstanding the code, there is some amount of macro-expansion into multiple instances of `format!`, but most of the expanded code is going to be dominated by all the `impl` blocks, not the relatively few `format!` instances. (Unless I massively misunderstand how the macros and/or codegen and/or inlining end up linking up here.) * So: I don't believe the best hypothesis I have for what is happening here. * But I also do not think the regression here is large enough to warrant further investigation. * Marking as triaged. errors: simplify referring to fluent attributes [#97357](https://github.com/rust-lang/rust/pull/97357) [(Comparison Link)](https://perf.rust-lang.org/compare.html?start=c35035cefc709abddabfb28ecc6a326458d46ce2&end=7be9ec27652f2c3b820d341158b0e005f42e248e&stat=instructions:u) | | mean | max | count | |:------------------------:|:-----:|:-----:|:-----:| | Regressions (primary) | N/A | N/A | 0 | | Regressions (secondary) | 0.4% | 0.6% | 9 | | Improvements (primary) | N/A | N/A | 0 | | Improvements (secondary) | -0.4% | -0.5% | 4 | | All (primary) | N/A | N/A | 0 | * There were some regressions here, but they are few, minor, and contained solely to secondary benchmarks (specifically projection-caching and wg-grammar). Marking as triaged. ## Nominated Issues [T-compiler](https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3AI-compiler-nominated+label%3AT-compiler) - "Update Mac Catalyst support for Clang 13" [rust#96392](https://github.com/rust-lang/rust/pull/96392) - nominated by @**Esteban Küber** in [comment](https://github.com/rust-lang/rust/pull/96392#issuecomment-1138887246) to find someone more conversant with that platform - @__**Thom Chiovoloni** pinged a list of names that could help ([comment](https://github.com/rust-lang/rust/pull/96392#issuecomment-1138893845)) [RFC](https://github.com/rust-lang/rfcs/issues?q=is%3Aopen+label%3AI-compiler-nominated+label%3AT-compiler) - No new RFC to be discussed ## Next week's WG checkins - @_*WG-traits* Traits (generic work of the WG) by @**nikomatsakis** and @**Jack Huey** - @_*WG-mir-opt* MIR Optimizations by @**oli**