I was playing with the next generation trait solver (which is said to stabilize soon: rust-lang/goals#113) on Bevy. Bevy has a notoriously slow to compile subcrate called bevy_pbr and was hoping to see some improvements.
The good new is that the improvement is real and substantial:
| Solver |
bevy_pbr total |
Frontend |
Codegen |
Legacy (-Znext-solver=coherence) |
40.8s |
33.9s |
6.9s |
Next (-Znext-solver=globally) |
32.9s |
25.5s |
7.4s |
The bad news is that it became less equipped to deal with ambiguity. In this case the patch is relatively simple and acceptable: bevyengine/bevy#25533. That said, stabilization of the next generation trait solver would technique constitute a regression.
If the answer is, "the next generation solver can only be this performant because it chooses to reject ambiguity" then I'm also relatively satisfied, just wanted to make sure this is a conscious decision.
Tested using rustc 1.100.0-nightly (c656540d6 2026-08-21)
I was playing with the next generation trait solver (which is said to stabilize soon: rust-lang/goals#113) on Bevy. Bevy has a notoriously slow to compile subcrate called
bevy_pbrand was hoping to see some improvements.The good new is that the improvement is real and substantial:
bevy_pbrtotal-Znext-solver=coherence)-Znext-solver=globally)The bad news is that it became less equipped to deal with ambiguity. In this case the patch is relatively simple and acceptable: bevyengine/bevy#25533. That said, stabilization of the next generation trait solver would technique constitute a regression.
If the answer is, "the next generation solver can only be this performant because it chooses to reject ambiguity" then I'm also relatively satisfied, just wanted to make sure this is a conscious decision.
Tested using
rustc 1.100.0-nightly (c656540d6 2026-08-21)