-
Notifications
You must be signed in to change notification settings - Fork 13.3k
[DO NOT MERGE] bootstrap with -Znext-solver=globally
#133502
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
This comment has been minimized.
This comment has been minimized.
c3ef9cd
to
f631ca8
Compare
@bors try |
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status, we're failing in: - failing in `rustc_next_trait_solver` with 126 instances of the following error ``` error[E0311]: the parameter type `I` may not live long enough | help: consider adding an explicit lifetime bound --> compiler/rustc_next_trait_solver/src/solve/trait_goals.rs:624:53 | 624 ~ fn consider_structural_builtin_unsize_candidates<'a>( 625 ~ ecx: &mut EvalCtxt<'a, D>, 626 | goal: Goal<I, Self>, 627 ~ ) -> Vec<Candidate<I>> where I: 'a { ``` - `itertools` hangs, we're already encountered this hang in our previous attempt due to large type sizes. I believe that it's simply caused by a missing cache somewhere, potentially in `wf.rs`, but other visitors may also be responsible. See rust-itertools/itertools#945 for more details ### commits - rust-lang#133501 - rust-lang#133493 - 9456bfe and b21b116 reimplement candidate preference based on rust-lang#132325, not yet a separate PR - c3ef9cd is a rebased version of rust-lang#125334, unsure whether I actually want to land this PR for now r? `@ghost`
I also pushed:
I think this is sufficient to make the compiler build, or at least |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment has been minimized.
This comment has been minimized.
💔 Test failed - checks-actions |
☔ The latest upstream changes (presumably #133527) made this pull request unmergeable. Please resolve the merge conflicts. |
Next failure is on pub fn repro() -> impl FnMut() {
if true {
|| ()
} else {
|| ()
}
} |
f631ca8
to
6210ed3
Compare
@bors try |
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: `./x.py b --stage 2` passes 🎉 ### commits - rust-lang#133501 - rust-lang#133493 - 9456bfe and b21b116 reimplement candidate preference based on rust-lang#132325, not yet a separate PR - c3ef9cd is a rebased version of rust-lang#125334, unsure whether I actually want to land this PR for now - rust-lang#133517 * rust-lang#133518 * rust-lang#133519 * rust-lang#133520 * rust-lang#133521 * rust-lang#133524 r? `@ghost`
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
💔 Test failed - checks-actions |
6210ed3
to
8fa8f40
Compare
@bors try |
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: `./x.py b --stage 2` passes 🎉 ### commits - rust-lang#133501 - rust-lang#133493 - 9456bfe and b21b116 reimplement candidate preference based on rust-lang#132325, not yet a separate PR - c3ef9cd is a rebased version of rust-lang#125334, unsure whether I actually want to land this PR for now - rust-lang#133517 * rust-lang#133518 * rust-lang#133519 * rust-lang#133520 * rust-lang#133521 * rust-lang#133524 r? `@ghost`
I was reducing the new failure but you've already fixed it ^^ |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
While still only using them for diagnostics. We could use them for cycle detection in generalization and it seems desirable to do so in the future. However, this is unsound with the old trait solver as its cache does not track these `sub_relations` in any way. We would also need to consider them when canonicalizing as otherwise instantiating the canonical response may fail.
The job Click to see the possible cause of the failure (guessed by this bot)
|
@bors try |
[DO NOT MERGE] bootstrap with `-Znext-solver=globally` A revival of rust-lang#124812. Current status: ~~`./x.py b --stage 2` passes 🎉~~ `try` builds succeed 🎉 🎉 🎉 [first perf run](rust-lang#133502 (comment)) 👻 ### crater This does not detect hangs or memory issues. | date | #crates | #regressions | | ---- | ------- | ------------ | | 2025.04.11 | 100 | 2 | | 2025.04.11 | 1000 | 27 | | 2025.04.17 | 10000 | 456 | | 2025.04.18 | 10000 | 437 | | 2025.04.24 | 10000 | 164 | | 2025.04.26 | 10000 | 108 | | 2025.04.28 | 10000 | 91 | | 2025.05.01 | 10000 | 145 woops | | 2025.05.03 | 624228[^1] | 1585 | | 2025.05.05 | 8964[^2] | 931 | | 2025.05.06 | 4401[^2] | 726 | | 2025.05.07 | 2704[^2] | 668 | [^1]: a complete crater run [^2]: only testing crates which may have regressed from the above run ### in-flight changes - rust-lang#140712 - rust-lang#136997 - rust-lang#139587 - rust-lang#140497 - rust-lang#124852, unsure whether I actually want to land this PR for now - https://github.com/lcnr/rust/tree/opaque-type-method-call - rust-lang#140375 - rust-lang#140405 - look into blanket impls for opaque type infer vars as well - rust-lang#140496 - double recursion limit in the new solver r? `@ghost`
☀️ Try build successful - checks-actions |
👌 Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
🚧 Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
🎉 Experiment
|
The parameter `In` of `call_inner` is completely unconstrained by its arguments and return type. We are only able to infer it by assuming that the only associated type equal to `In::Param<'_>` is `In::Param<'_>` itself. It could just as well be some other associated type which only normalizes to `In::Param<'_>`. This will change with the next-generation trait solver and was encountered by a crater run rust-lang/rust#133502 cc rust-lang/trait-system-refactor-initiative#168 I couldn't think of a cleaner alternative here. I first tried to just provide `In` as an explicit type parameter. This is also kinda ugly as I need to provide a variable number of them and `${ignore(..)}` is currently still unstable rust-lang/rust#83527. Sorry for the inconvenience. Also fun that this function exists to avoid a separate solver bug in the first place 😅
A revival of #124812.
Current status:
./x.py b --stage 2
passes 🎉try
builds succeed 🎉 🎉 🎉first perf run 👻
crater
This does not detect hangs or memory issues.
in-flight changes
sub_relations
again #140375r? @ghost
Footnotes
a complete crater run ↩
only testing crates which may have regressed from the above run ↩ ↩2 ↩3 ↩4