rust
rust copied to clipboard
[experimental] Make witnesses more eager
r? lcnr
@bors try @rust-timer queue
Awaiting bors try build completion.
@rustbot label: +S-waiting-on-perf
:hourglass: Trying commit 7bff9fb0f0b175281cc4ef4d34e0683b8851e1cc with merge aa7f5f1743a191388f6b130b1ea65bcfa321c198...
:sunny: Try build successful - checks-actions
Build commit: aa7f5f1743a191388f6b130b1ea65bcfa321c198 (aa7f5f1743a191388f6b130b1ea65bcfa321c198)
Queued aa7f5f1743a191388f6b130b1ea65bcfa321c198 with parent 6de3a733122a82d9b3c3427c7ee16a1e1a022718, future comparison URL. There are currently 2 preceding artifacts in the queue. It will probably take at least ~3.4 hours until the benchmark run finishes.
Finished benchmarking commit (aa7f5f1743a191388f6b130b1ea65bcfa321c198): comparison URL.
Overall result: ✅ improvements - no action needed
Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.
@bors rollup=never @rustbot label: -S-waiting-on-perf -perf-regression
Instruction count
This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
- | - | 0 |
| Regressions ❌ (secondary) |
- | - | 0 |
| Improvements ✅ (primary) |
-0.2% | [-0.2%, -0.2%] | 2 |
| Improvements ✅ (secondary) |
-0.4% | [-0.6%, -0.2%] | 5 |
| All ❌✅ (primary) | -0.2% | [-0.2%, -0.2%] | 2 |
Max RSS (memory usage)
Results (primary -0.4%, secondary -1.3%)
This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
1.6% | [1.6%, 1.6%] | 1 |
| Regressions ❌ (secondary) |
0.5% | [0.4%, 0.5%] | 3 |
| Improvements ✅ (primary) |
-1.4% | [-1.6%, -1.3%] | 2 |
| Improvements ✅ (secondary) |
-1.6% | [-3.9%, -0.6%] | 17 |
| All ❌✅ (primary) | -0.4% | [-1.6%, 1.6%] | 3 |
Cycles
Results (secondary -0.1%)
This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
- | - | 0 |
| Regressions ❌ (secondary) |
1.0% | [0.4%, 2.4%] | 9 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
-1.4% | [-3.7%, -0.5%] | 8 |
| All ❌✅ (primary) | - | - | 0 |
Binary size
This benchmark run did not return any relevant results for this metric.
Bootstrap: missing data Artifact size: 370.26 MiB -> 370.23 MiB (-0.01%)
@bors2 try @rust-timer queue
Awaiting bors try build completion.
@rustbot label: +S-waiting-on-perf
:hourglass: Trying commit 5862717e717f617e0eab59a13701059b81df9a43 with merge 9676755ffbe5307620202834502b4922a40c5024…
To cancel the try build, run the command @bors2 try cancel.
The job mingw-check-2 failed! Check out the build log: (web) (plain)
Click to see the possible cause of the failure (guessed by this bot)
[RUSTC-TIMING] rustc_monomorphize test:true 0.672
error[E0599]: no method named `has_coroutines` found for struct `rustc_middle::ty::Ty` in the current scope
--> compiler/rustc_trait_selection/src/solve/fulfill.rs:346:22
|
346 | } else if ty.has_coroutines() {
| ^^^^^^^^^^^^^^
|
::: /checkout/compiler/rustc_type_ir/src/visit.rs:272:8
|
272 | fn has_coroutines(&self) -> bool {
---
1 + use rustc_middle::ty::TypeVisitableExt;
|
help: there is a method `is_coroutine` with a similar name
|
346 - } else if ty.has_coroutines() {
346 + } else if ty.is_coroutine() {
|
For more information about this error, try `rustc --explain E0599`.
[RUSTC-TIMING] rustc_trait_selection test:false 6.754
error: could not compile `rustc_trait_selection` (lib) due to 1 previous error
@bors2 try @rust-timer queue
Awaiting bors try build completion.
@rustbot label: +S-waiting-on-perf
:hourglass: Trying commit ec8dc45375b0329a656518f785f9980a6f7992c5 with merge c5243c3809f813c22efa750866301fd67942ef25…
To cancel the try build, run the command @bors2 try cancel.
:sunny: Try build successful (CI)
Build commit: c5243c3809f813c22efa750866301fd67942ef25 (c5243c3809f813c22efa750866301fd67942ef25)
Queued c5243c3809f813c22efa750866301fd67942ef25 with parent 00b526212bbdd68872d6f964fcc9a14a66c36fd8, future comparison URL. There are currently 2 preceding artifacts in the queue. It will probably take at least ~3.9 hours until the benchmark run finishes.
Finished benchmarking commit (c5243c3809f813c22efa750866301fd67942ef25): comparison URL.
Overall result: ❌ regressions - please read the text below
Benchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf.
Next Steps: If you can justify the regressions found in this try perf run, please do so in sufficient writing along with @rustbot label: +perf-regression-triaged. If not, please fix the regressions and do another perf run. If its results are neutral or positive, the label will be automatically removed.
@bors rollup=never @rustbot label: -S-waiting-on-perf +perf-regression
Instruction count
Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
0.5% | [0.4%, 0.6%] | 8 |
| Regressions ❌ (secondary) |
0.8% | [0.1%, 1.8%] | 20 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
-0.8% | [-0.9%, -0.6%] | 3 |
| All ❌✅ (primary) | 0.5% | [0.4%, 0.6%] | 8 |
Max RSS (memory usage)
Results (secondary 1.3%)
A less reliable metric. May be of interest, but not used to determine the overall result above.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
- | - | 0 |
| Regressions ❌ (secondary) |
1.9% | [1.2%, 3.5%] | 5 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
-2.2% | [-2.2%, -2.2%] | 1 |
| All ❌✅ (primary) | - | - | 0 |
Cycles
This benchmark run did not return any relevant results for this metric.
Binary size
This benchmark run did not return any relevant results for this metric.
Bootstrap: 754.885s -> 753.548s (-0.18%) Artifact size: 372.30 MiB -> 372.33 MiB (0.01%)
I think filtering out the opaques from the typing env (for pseudo-canonical inputs) is pretty expensive. Let's see how perf is when using the old strategy to compare.
Maybe we could optimize the "filter out opaques" step, but the global caching may really just not be worth it.
@bors2 try @rust-timer queue
Awaiting bors try build completion.
@rustbot label: +S-waiting-on-perf
:hourglass: Trying commit 5f09e4fbe27cc494f7ec8cb16b081ef692c34b80 with merge 1d115c1f1702fc6a1d322f845583581dd636f0a4…
To cancel the try build, run the command @bors2 try cancel.
:sunny: Try build successful (CI)
Build commit: 1d115c1f1702fc6a1d322f845583581dd636f0a4 (1d115c1f1702fc6a1d322f845583581dd636f0a4)
Queued 1d115c1f1702fc6a1d322f845583581dd636f0a4 with parent c6768de2d63de7a41124a0fb8fc78f9e26111c01, future comparison URL. There are currently 5 preceding artifacts in the queue. It will probably take at least ~7.6 hours until the benchmark run finishes.
Finished benchmarking commit (1d115c1f1702fc6a1d322f845583581dd636f0a4): comparison URL.
Overall result: ✅ improvements - no action needed
Benchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf.
@bors rollup=never @rustbot label: -S-waiting-on-perf -perf-regression
Instruction count
Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
- | - | 0 |
| Regressions ❌ (secondary) |
- | - | 0 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
-0.6% | [-0.6%, -0.6%] | 2 |
| All ❌✅ (primary) | - | - | 0 |
Max RSS (memory usage)
Results (primary -0.7%, secondary 1.6%)
A less reliable metric. May be of interest, but not used to determine the overall result above.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
1.1% | [1.1%, 1.1%] | 1 |
| Regressions ❌ (secondary) |
1.6% | [1.0%, 2.8%] | 5 |
| Improvements ✅ (primary) |
-1.6% | [-1.7%, -1.5%] | 2 |
| Improvements ✅ (secondary) |
- | - | 0 |
| All ❌✅ (primary) | -0.7% | [-1.7%, 1.1%] | 3 |
Cycles
Results (secondary -1.6%)
A less reliable metric. May be of interest, but not used to determine the overall result above.
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
- | - | 0 |
| Regressions ❌ (secondary) |
- | - | 0 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
-1.6% | [-1.6%, -1.6%] | 1 |
| All ❌✅ (primary) | - | - | 0 |
Binary size
This benchmark run did not return any relevant results for this metric.
Bootstrap: 755.17s -> 754.366s (-0.11%) Artifact size: 372.30 MiB -> 372.28 MiB (-0.00%)
I think I'd like to land this in the state it is, and then later putting up a PR to remove coroutine witnesses altogether. It's worth checking crater, too.
@craterbot check
:ok_hand: Experiment pr-141762 created and queued.
:robot: Automatically detected try build 1d115c1f1702fc6a1d322f845583581dd636f0a4
:mag: You can check out the queue and this experiment's details.
:information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
:construction: Experiment pr-141762 is now running
:information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
:tada: Experiment pr-141762 is completed!
:bar_chart: 3 regressed and 7 fixed (647393 total)
:newspaper: Open the full report.
:warning: If you notice any spurious failure please add them to the denylist! :information_source: Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more
Some changes occurred to the core trait solver
cc @rust-lang/initiative-trait-system-refactor
:warning: Warning :warning:
-
This PR is based on an upstream commit that is 16 days old.
It's recommended to update your branch according to the rustc-dev-guide.
Crater regressions are spurious. I think this is ready to review more. I'll open a tracking issue for "removing CoroutineWitness" because I think this is just the first step in that process.