rust-lang / rust-project-goals

Rust Project Goals tracker
https://rust-lang.github.io/rust-project-goals/
MIT License
40 stars 41 forks source link

Next-generation trait solver #113

Open nikomatsakis opened 1 month ago

nikomatsakis commented 1 month ago
Metadata
Owner(s) @lcnr
Team(s) rust-analyzer, types
Goal document 2024h2/next-solver

Summary

In the next 6 months we plan to extend the next-generation trait solver as follows:

Tasks and status

nikomatsakis commented 1 month ago

This issue is intended for status updates only.

For general questions or comments, please contact the owner(s) directly.

lcnr commented 1 month ago

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 rustc into the shared library to enable their reuse, all major ones have already been moved by now.

lcnr commented 1 week ago

Since the last update, we've landed the new caching optimization in https://github.com/rust-lang/rust/pull/128828 and hope to land the -Znext-solver=coherence stabilization PR this week.

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.