В borrow checker Rust нашли две дыры, пропускающие UB без unsafe
В анализаторе заимствований Rust открыты два бага звуковости (issues 2013 и 2014 годов): из-за двухфазных заимствований и захвата замыканий код с нарушением алиасинга компилируется без unsafe-блоков. Исправления потребуют жёстких ошибок компиляции, поэтому авторам крейтов советуют проверять код через Miri.
- Первый баг: reborrow через сырой указатель теряет исходное &mut-заимствование
- Второй баг: замыкание захватывает &mut и производный & одновременно
- cargo check и clippy ошибок не видят — выявляет только Miri
- После фикса код перестанет компилироваться без окна депрекации
Читать дальше
Безопасность