При анализе случайного крейта с crates.io с помощью Miri вероятность столкнуться с неопределенным поведением в его зависимостях близка к единице. Это явление поднимает важные вопросы о происхождении указателей, Stacked Borrows и Tree Borrows. Кроме того, история атрибута noalias в LLVM, который отключали трижды, добавляет еще один уровень сложности к пониманию гарантий безопасности Rust. Разработчики часто предполагают, что их код безопасен только потому, что он компилируется и проходит тесты, но на самом деле тонкие проблемы могут привести к непредсказуемому поведению. Эта статья рассматривает эти концепции, освещая, как разработчики могут лучше понять и уменьшить риски, связанные с неопределенным поведением в их приложениях на Rust.
Ваш код на Rust компилируется, проходит тесты и является UB – Вы просто об этом не знаете
Изучение распространенности неопределенного поведения в коде Rust и его зависимостях.
