Skip to content

performance regressions after stabilization #1

Open
@lcnr

Description

@lcnr

When we stabilize the new solver it will not be in its final state. There are many changes we have to make to fix all unsound type system issues. I am worried that we stabilization results in performance improvements and later changes lessen the impact of these performance improvements.

We would still end up with a performance improvement in total, but as the improvement happens separately from the regression, it will be harder (or impossible) to actually land the change causing the regression as people notice it.

Examples

At the point of stabilization, we will not yet treat all traits as coinductive. To soundly implement that, we will have to change the way we deal with super traits. I expect us to require a proof of T: Supertrait whenever T: Trait has to be proven instead of simply assuming T: Supertrait to be implied.

Even worse, there may be changes to asymptotic complexity of some part of the trait system. This can cause crates which start to compile fine due to the stabilization of the new solver to hang after regressing the complexity again. This is already an issue of the current type system. For example rust-lang/rust#75443 caused hangs (rust-lang/rust#75992), was reverted in rust-lang/rust#78410, then landed again after fixing these regressions in rust-lang/rust#100980 which caused yet another hang (rust-lang/rust#103423), causing it to be reverted yet again in rust-lang/rust#103509.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions