Rust Foundation har publicerat statistik som visar att av 127 000 betydande paket som finns i katalogen crates.io, anvÀnder mer Àn 24 000 (19,11%) nyckelordet "unsafe" för att inkludera funktioner som möjliggör osÀkert minneshantering i specifika kodblock, sÄsom dereferensering av pekare, anrop av externa funktioner eller Àndring av statiska variabler. 34,35% av paketen gör direkta anrop till funktioner frÄn andra crate-paket som anvÀnder "unsafe"-lÀget.
Det noteras att anvÀndningen av "unsafe"-lÀget i de flesta fall beror pÄ anrop till kod skriven pÄ andra sprÄk eller Ätkomst till bibliotek skrivna i C/C++. Paketet med flest anrop i "unsafe"-lÀge Àr crate-paketet windows, utvecklat av Microsoft, som fungerar som en wrapper för Windows API. Detta paket har över 36 miljoner nedladdningar. Unsafe anvÀnds Àven i de mest populÀra paketen syn (470 miljoner nedladdningar), proc-macro2 (354 miljoner nedladdningar) och libc (345 miljoner nedladdningar).
För att identifiera problem i kod som körs i "unsafe"-lÀge utvecklas projektet Miri, en tolk som möjliggör att upptÀcka övertrÀdelser av buffergrÀnser, anvÀndning av minne efter att det har frigjorts, felaktig anvÀndning av oinitialiserade data, brott mot invariantregler för grundlÀggande typer (till exempel ogiltig bool mot vÀrdena 0 eller 1), brott mot ÀganderÀttsregler, skapande av dataracing och minneslÀckor.
KĂ€lla: opennet.ru
