-
Notifications
You must be signed in to change notification settings - Fork 55
Next-generation trait solver #113
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
Comments
This issue is intended for status updates only. For general questions or comments, please contact the owner(s) directly. |
I am currently working on caching in the trait solver. The current implementation results in hangs when encountering complex auto-trait cycles. See https://rust-lang.zulipchat.com/#narrow/stream/364551-t-types.2Ftrait-system-refactor/topic/Fuchsia.20hanging.20on.20.60-Znext-solver.3Dcoherence.60 for the progress here. We now have an approach which fixes the performance regression. It'll still take at least multiple weeks until it's ready for merge however. The librarification of the trait solver is in a very good state thanks to a lot of work by @compiler-errors. We're currently discussing its use in r-a on zulip: https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/New.20Trait.20Solver. While there are still components we intend to move from |
Since the last update, we've landed the new caching optimization in rust-lang/rust#128828 and hope to land the There has been one other bug fix in the last month, see https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Amerged+label%3AWG-trait-system-refactor+-label%3Arollup+closed%3A%3C2024-09-02+-closed%3A%3C2024-08-01 for the full list of PRs. |
We've tried to stabilize We mostly fixed this hang with rust-lang/rust#130617 and rust-lang/rust#130821. As nalgebra still ends up hitting the recursion limit with a quite wide search graph, the performance impact of enabling There haven't been any other significant changes to the new solver during the last month. |
We stabilized We're currently refactoring the way the current "typing mode" is tracked, cc rust-lang/types-team#128. This is necessary to fix rust-lang/trait-system-refactor-initiative#106. I also started an FCP to clean up the way we merge candidates when proving trait goals: rust-lang/rust#132325. I intend to pretty much exactly match this behavior in the new solver as well, so I expect all of our issues there to be resolved. |
The We're now able to bootstrap using exclusively the new solver. This allowed us to finish the first |
This is a continuing project goal, and the updates below this comment will be for the new period 2025h1 |
We've stabilized Fixing the opaque types issue breaking While waiting on the MCP I've started to look into the errors when compiling We also fully triaged all UI tests with the new solver enabled with @compiler-errors, @BoxyUwU, and myself fixing multiple less involved issues. |
The two cycle handling PRs mentioned in the previous update have been merged, allowing |
We've made a lot of progress over the last 1.5 months. My change to opaque types in borrowck is pretty much done now: rust-lang/rust#139587. It still needs some cleanup and an FCP to actually merge. We've already merged multiple cleanups on the way here. We then started to test crater with the With these improvements and multiple in-flight changes we're now at significantly less than 100 remaining regressions in the top 10000 crates and have started the first complete crater run today. We are using a single PR for all crater runs. Check out rust-lang/rust#133502 for the current status and the stack of in-flight changes. |
Summary
Continue work towards the stabilization of
-Znext-solver=globally
, collecting and resolving remaining blockers. Extend its use in lints and rustdoc.Tasks and status
The text was updated successfully, but these errors were encountered: