Votre code Rust se compile, passe les tests et est UB – Vous ne le savez tout simplement pas

Analyse de la prévalence du comportement indéfini dans le code Rust et ses dépendances.

4 min readProgrammation

En examinant un crate aléatoire de crates.io avec Miri, la probabilité de rencontrer un comportement indéfini dans ses dépendances frôle la certitude. Ce phénomène soulève des questions importantes sur la provenance des pointeurs, les Stacked Borrows et les Tree Borrows. De plus, l'historique de l'attribut noalias dans LLVM, qui a été désactivé trois fois, ajoute une couche de complexité à la compréhension des garanties de sécurité de Rust. Les développeurs supposent souvent que leur code est sûr simplement parce qu'il se compile et passe les tests, mais la réalité est que des problèmes subtils peuvent entraîner un comportement imprévisible. Cet article explore ces concepts, éclairant comment les développeurs peuvent mieux comprendre et atténuer les risques associés au comportement indéfini dans leurs applications Rust.

Programmation