Skip to content
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

performance regressions after stabilization #1

Open
lcnr opened this issue Feb 17, 2023 · 0 comments
Open

performance regressions after stabilization #1

lcnr opened this issue Feb 17, 2023 · 0 comments

Comments

@lcnr
Copy link
Owner

lcnr commented Feb 17, 2023

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant