2023-08-18 rustc trait system refactor update

    for more information, check out the implementation tracking issue #107374, or the Trait System Refactor Initiative Issue Tracker. These updates are from my perspective and are not the official stance of the initiative. They exist to bridge the gap between major progress updates via rust-lang blog posts and the passive status tracking via the tracking issue and the initiative GitHub repository.

This week I mostly focussed on getting proof trees to a point where we can use them for diagnostics and rustdoc. I’ve opened a draft PR (#114810) for it which is not yet ready.

Proof trees have two conflicting goals: they should accurately represent the behavior of the solver for its use when debugging and teaching, while diagnostics and rustdoc want a fairly straightforward and usable representation. I am still experimenting a bit here. I have to force myself to not require the simplified representation to be perfect, as that is impossible.

We spent a bunch of time debugging an incorrect ambiguity with typenum (trait-system-refactor-initiative#55). I opened a fix for this bug in #114934. A variant of this issue still persists and requires a more involved fix (trait-system-refactor-initiative#60). I currently don’t expect that to cause breakage in practice.

We finally landed lazy normalization to trait_ref_is_knowable (#114457) and a few other smaller improvements, see the list of merged PRs for more.

if you find any typos or errors in this post, please pm me on zulip, discord or cohost


impressum rss