A Rust Foundation nyilvánosságra hozta a statisztikát, amely szerint a crates.io katalógusában szereplő 127 ezer jelentős csomag közül több mint 24 ezer (19,11%) használja az "unsafe" kulcsszót, hogy lehetőségeket biztosítson a memória biztonságos kezelésére, például mutatók dereferálására, külső funkciók hívására vagy statikus változók módosítására. A csomagok 34,35%-a közvetlenül más crate-csomagokban található funkciókat hív meg, amelyek "unsafe" módban működnek.
Megjegyzik, hogy a "unsafe" mód használata a legtöbb esetben más nyelveken írt kód hívásához vagy C/C++ könyvtárakhoz való hozzáféréshez kapcsolódik. A legnagyobb számú "unsafe" hívással rendelkező csomag a Microsoft által fejlesztett windows crate, amely a Windows platform API-ját takarja. Ez a csomag 36 millió letöltést számlál. Az unsafe módot a legnépszerűbb csomagokban is használják, mint például a syn (470 millió letöltés), proc-macro2 (354 millió letöltés) és libc (345 millió letöltés).
A "unsafe" módban végrehajtott kód problémáinak azonosítására a projekt kifejleszti a Miri értelmezőt, amely képes meghatározni a bufereken kívüli hívásokat, a memóriakezelés utáni használatot, a nem inicializált adatok helytelen használatát, az alapvető típusok invarianciájának megsértését (például bool értékek 0-nak vagy 1-nek való megfelelését), az objektumok tulajdonlási szabályainak megsértését, versenyállapotok kialakulását és memória szivárgást.
Forrás: opennet.ru
