rust-lang/rust

Tracking Issue for `-Znext-solver`

lcnr opened this issue · 2 comments

lcnr commented

This is a tracking issue for the next-generation trait solver in rustc. It can be enabled on nightly by using the -Znext-solver flag. This work is lead by the @rust-lang/initiative-trait-system-refactor.

About tracking issues

Tracking issues are used to record the overall progress of implementation. They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions. A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature. Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.

Links

Original Types Team MCP: rust-lang/types-team#58
Types Team Tracking Issue: rust-lang/types-team#76
Types Team announcement and Roadmap: https://blog.rust-lang.org/2023/01/20/types-announcement.html
EOY 2023 Update Blog Post: https://blog.rust-lang.org/inside-rust/2023/12/22/trait-system-refactor-initiative.html
Tracking issue for -Znext-solver=coherence: #114862

Milestones and future work

For a complete list of changes, see the list of merged PRs. We also track the decisions we've made - and decisions we still have to make - in https://github.com/rust-lang/trait-system-refactor-initiative/issues. We mostly discuss these issues on zulip and in Types Team meetings.

Major milestones

  • #105661 initial skeleton of the trait solver
  • #113317 full independence of the old trait solver implementation
  • #113991 initial crater run with -Znext-solver=coherence
  • #112875 always use next-gen trait solver for feature(with_negative_coherence), which is used while compiling the standard library
  • #122747 always use next-gen trait solver in the non_local_definitions lint
  • #126614 uplift the next-generation trait solver into a separate library
  • #121848 stabilize -Znext-solver=coherence
  • bootstrap with -Znext-solver=globally
  • initial perf run with -Znext-solver=globally
  • initial crater run with -Znext-solver=globally
  • stabilize -Znext-solver=globally
alex commented

Is it useful to file bugs with crates that don't compile under -Ztrait-solver=next? (Specifically with an error of not implemented: overflowed on pending obligations)

lcnr commented

not yet as there are still a lot of failing crates with the new solver. will probably make an announcement blog post asking for testing once we're able to successfully compile our own tests and did the first crater run.