You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
The text was updated successfully, but these errors were encountered:
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
wheneverT: Trait
has to be proven instead of simply assumingT: 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.
The text was updated successfully, but these errors were encountered: