Organizace Rust Foundation zveřejnila statistiky, podle nichž z 127 tisíc významných balíčků uvedených v katalogu crates.io více než 24 tisíc (19,11 %) používá klíčové slovo "unsafe" k zahrnutí funkcí, které umožňují nebezpečnou práci s pamětí v jednotlivých blocích kódu, jako je dereferencování ukazatelů, volání externích funkcí nebo změna statických proměnných. 34,35 % balíčků provádí přímé volání funkcí z jiných crate-balíčků, které používají režim "unsafe".
Upozorňuje se, že v drtivé většině případů je použití režimu "unsafe" způsobeno voláním kódu napsaného v jiných jazycích nebo přístupem k knihovnám v C/C++. Balíček s největším počtem volání v režimu "unsafe" byl uznán za crate-balíček windows vyvíjený společností Microsoft, který slouží jako wrapper nad API platformy Windows. Tento balíček má 36 milionů stažení. Unsafe se také používá v nejpopulárnějších balíčcích syn (470 milionů stažení), proc-macro2 (354 milionů stažení) a libc (345 milionů stažení).
Pro zjištění problémů v kódu prováděném v režimu "unsafe" je vyvíjen projekt Miri, který umožňuje identifikovat přístupy mimo hranice bufferů, použití paměti po jejím uvolnění, nesprávné používání neInicializovaných dat, porušení invariance základních typů (například nesoulad bool s hodnotami 0 nebo 1), porušení pravidel vlastnictví objektů, vznik podmínek závodu a úniky paměti.
Zdroj: opennet.ru
