L'organizzazione Rust Foundation ha pubblicato delle statistiche, secondo cui su 127.000 pacchetti significativi presenti nel catalogo crates.io, oltre 24.000 (19,11%) utilizzano la parola chiave "unsafe" per abilitare funzionalità che consentono operazioni non sicure con la memoria in specifici blocchi di codice, come la dereferenziazione di puntatori, la chiamata a funzioni esterne o la modifica di variabili statiche. Il 34,35% dei pacchetti effettua chiamate dirette a funzioni di altri pacchetti crate che utilizzano la modalità "unsafe".
Si segnala che nella maggior parte dei casi l'uso della modalità "unsafe" è dovuto a chiamate di codice scritto in altri linguaggi o a interazioni con librerie in C/C++. Il pacchetto con il maggior numero di chiamate in modalità "unsafe" è il crate windows sviluppato da Microsoft, che funge da interfaccia per le API della piattaforma Windows. Questo pacchetto ha registrato 36 milioni di download. Unsafe è utilizzato anche nei pacchetti più popolari come syn (470 milioni di download), proc-macro2 (354 milioni di download) e libc (345 milioni di download).
Per identificare i problemi nel codice eseguito in modalità "unsafe", il progetto sta sviluppando l'interprete Miri, che consente di identificare accessi al di fuori dei confini dei buffer, uso della memoria dopo che è stata liberata, utilizzo scorretto di dati non inizializzati, violazione delle invarianti dei tipi base (ad esempio, discrepanza tra bool e i valori 0 o 1), violazione delle regole di possesso degli oggetti, insorgere di condizioni di race e perdite di memoria.
Fonte: opennet.ru
