written by UxuginPython on 2025-12-22
In an attempt to fix a memory safety bug, Rust is introducing a regression in Rust 1.94 (currently nightly) that breaks rrtk versions 0.7.0-alpha.5 through 0.7.0-alpha.10. A member of the Rust language team did attempt to fix the main codebase, but unmodified tests no longer pass. Since these tests are made to simulate downstream code, this indicates that downstream code will likely have to be modified in some cases, specifically those making use of PointerDereferencer. Unfortunately this probably includes most no-alloc code.
I am working to understand what exactly this regression entails for RRTK and its users and how to compensate for it, but I am a single developer with limited time. I'll publish a patch for rrtk that at least builds on 1.94 (ignoring tests) with every combination of features by the end of the day, and I hope to have something a bit more substantial and some more information for users before the new year. If you target stable, you should have until early March of 2026 to get something figured out.
about 8 hours later
I have released rrtk 0.7.0-alpha.11. It includes the patch along with a couple small unreleased changes. Its tests do not run.
If you absolutely must use nightly, you don't really have a choice but to try 0.7.0-alpha.11. PointerDereferencer's behavior is slightly different, and I'm still figuring out how exactly it differs and what should be done about it either by RRTK if possible or by downstream code.
The patch has not currently been backported to earlier alphas, which may pose a problem for users of them since alphas are not backward compatible. I don't know if I'll backport the patch to these versions or not - they're not really supported, but then again, I didn't expect Rust to break them.
If you're willing to temporarily sacrifice compatibility with nightly (and potentially beta in not that long), just sit tight. Unfortunately, I really can't say how long "temporarily" is right now.
Do try just switching to 0.7.0-alpha.11 and seeing if your code compiles. If it does and your tests pass, use the newer version. Otherwise, just use the version you were using and stick to stable Rust for now.
Of course, this advice is general, and every project is different, so do what you need to do. I've put everything I currently know here, but only you know your usecase.