Die Organisation Rust Foundation hat Statistiken veröffentlicht, die zeigen, dass von 127.000 signifikanten Paketen im Katalog crates.io über 24.000 (19,11 %) das Schlüsselwort „unsafe“ verwenden, um Funktionen zu integrieren, die unsichere Speicheroperationen in bestimmten Codeblöcken ermöglichen, wie Dereferenzierung von Zeigern, Aufrufe externer Funktionen oder Änderungen an statischen Variablen. 34,35 % der Pakete führen direkte Funktionsaufrufe aus anderen crate-Paketen durch, in denen der „unsafe“-Modus verwendet wird.
Es wird angemerkt, dass die Verwendung des „unsafe“-Modus in den meisten Fällen durch den Aufruf von Code, der in anderen Sprachen geschrieben ist, oder durch den Zugriff auf Bibliotheken in C/C++ bedingt ist. Das Paket mit den meisten Aufrufen im „unsafe“-Modus ist das von Microsoft entwickelte crate-Paket windows, das eine Schnittstelle zur Windows-API darstellt. Dieses Paket hat 36 Millionen Downloads. Unsafe wird auch in den beliebtesten Paketen syn (470 Millionen Downloads), proc-macro2 (354 Millionen Downloads) und libc (345 Millionen Downloads) verwendet.
Um Probleme im Code, der im 'unsafe'-Modus ausgeführt wird, zu identifizieren, wird der Interpretor Miri entwickelt, der es ermöglicht, Zugriffe außerhalb der Puffergrenzen, die Verwendung von Speicher nach dessen Freigabe, fehlerhafte Verwendung von nicht initialisierten Daten, Verstöße gegen die Invarianz von Basistypen (z. B. Inkonsistenz von bool-Werten mit 0 oder 1), Verstöße gegen die Eigentumsregelungen von Objekten, das Auftreten von Rennbedingungen und Speicherlecks zu identifizieren.
Quelle: opennet.ru
