A Rust Foundation publicou estatísticas segundo as quais, dos 127 mil pacotes significativos apresentados no catálogo crates.io, mais de 24 mil (19.11%) utilizam a palavra-chave “inseguro” para habilitar recursos que permitem operação insegura de memória em blocos individuais de código, como desreferenciar ponteiros, chamar funções externas ou alterar variáveis estáticas. 34.35% dos pacotes fazem chamadas diretas para funções de outros pacotes crate que usam o modo “inseguro”.
Observa-se que, na maioria dos casos, o uso do modo "inseguro" se deve a chamadas a código escrito em outras linguagens ou bibliotecas C/C++. O pacote com o maior número de chamadas em modo "inseguro" é o pacote crate do Windows desenvolvido pela Microsoft, que funciona como um wrapper para a API da plataforma. WindowsEste pacote foi baixado 36 milhões de vezes. O Unsafe também é usado nos pacotes mais populares: syn (470 milhões de downloads), proc-macro2 (354 milhões de downloads) e libc (345 milhões de downloads).
Para identificar problemas em código executado em modo “inseguro”, o projeto está desenvolvendo o interpretador Miri, que permite identificar acessos fora dos limites dos buffers, uso de memória após liberação, uso incorreto de dados não inicializados, violação da invariância de tipos básicos (por exemplo, bool não corresponde aos valores 0 ou 1), violação das regras de propriedade do objeto, ocorrência de condições de corrida e vazamentos de memória.
Fonte: opennet.ru
