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
Copy file name to clipboardExpand all lines: posts/2025-01-09-Rust-1.84.0.md
+10-11Lines changed: 10 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -69,7 +69,7 @@ automatically use older library versions compatible with their older toolchain.
69
69
70
70
See the [documentation](https://doc.rust-lang.org/cargo/reference/rust-version.html#setting-and-updating-rust-version) for more considerations when deciding on an MSRV policy.
71
71
72
-
### Migration to a new trait solver begins
72
+
### Migration to the new trait solver begins
73
73
74
74
The Rust compiler is in the process of moving to a new implementation for the
75
75
trait solver. The next-generation trait solver is a reimplementation of a core
@@ -81,16 +81,15 @@ underlying type of `<Vec<T> as IntoIterator>::Item` - and equating types
81
81
82
82
In 1.84, the new solver is used for checking coherence of trait impls. At a
83
83
high level, coherence is responsible for ensuring that there is at most one
84
-
implementation of a trait for a given type, including *globally* in not yet
85
-
written or visible code in downstream crates from the current compilation.
86
-
87
-
This stabilization does include some breaking changes, primarily by fixing some
88
-
correctness issues with the old solver. Typically these will show up as new
89
-
"conflicting implementations of trait ..." errors that were not previously
90
-
reported. We expect instances of this to be rare based on evaluation of
91
-
available code through [Crater], as the soundness holes in the previous solving
92
-
engine used relatively esoteric code. It also improves our ability to detect
93
-
where impls do *not* overlap, allowing more code to be written in some cases.
84
+
implementation of a trait for a given type while considering not yet written
85
+
or visible code from other crates.
86
+
87
+
This stabilization fixes a few mostly theoretical correctness issues of the
88
+
old implementation, resulting in potential "conflicting implementations of trait ..."
89
+
errors that were not previously reported. We expect the affected patterns to be
90
+
very rare based on evaluation of available code through [Crater]. The stabilization
91
+
also improves our ability to prove that impls do *not* overlap, allowing more code
92
+
to be written in some cases.
94
93
95
94
For more details, see a [previous blog post](https://blog.rust-lang.org/inside-rust/2024/12/04/trait-system-refactor-initiative.html)
96
95
and the [stabilization report](https://github.com/rust-lang/rust/pull/130654).
0 commit comments