MISRust: Mapping MISRA-C++ Coding Guidelines to the Rust Programming Language
Este artigo mapeia sistematicamente as 179 diretrizes MISRA C++ 2023 para a linguagem de programação Rust, categorizando-as por aplicabilidade para demonstrar como o design do Rust impõe automaticamente quase metade das regras, ao mesmo tempo que fornece adaptações específicas e identifica lacunas para as diretrizes restantes, a fim de apoiar o desenvolvimento de sistemas críticos de segurança.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
Imagine que você está construindo uma máquina de alto risco, como um carro autônomo ou um dispositivo médico. Você não pode permitir que um único parafuso se solte ou que um fio entre em curto-circuito. Por décadas, engenheiros que constroem essas máquinas com a linguagem de programação C++ seguiram um vasto e rigoroso livro de regras chamado MISRA. Pense no MISRA como um "Manual de Segurança" de 179 páginas que diz coisas como: "Nunca faça isso", "Sempre faça aquilo" e "Se você tocar nesta parte específica, deve usar um capacete".
Agora, uma nova linguagem mais segura chamada Rust chegou. O Rust é como um kit de construção superavançado que previne automaticamente muitos erros comuns (como soltar um parafuso ou cruzar fios) apenas pela sua própria estrutura. Como o Rust é tão seguro por design, os engenheiros estão começando a usá-lo para essas mesmas máquinas de alto risco.
O Problema:
O antigo manual de segurança (MISRA) foi escrito para C++. Ele possui regras sobre coisas que o Rust nem sequer tem, e deixa de fora coisas que o Rust trata de forma diferente. Se você tentar usar o manual antigo para o novo kit, acabará com muitas regras confusas e desnecessárias.
A Solução (A Missão do Artigo):
Os autores deste artigo atuaram como tradutores e inspetores de segurança. Eles pegaram cada uma das 179 regras do antigo manual de C++ e perguntaram: "Esta regra ainda faz sentido para o Rust?"
Eles criaram um novo sistema para classificar essas regras em seis categorias diferentes:
- A Lixeira "Lixo" (Não Aplicável): São regras sobre coisas que simplesmente não existem no Rust.
- Analogia: Imagine uma regra dizendo: "Não use uma carroça puxada por cavalos." Se você estiver dirigindo um Tesla, essa regra é inútil. Você não tem um cavalo, então não precisa se preocupar com isso. Cerca de 32% das regras antigas caíram nesta categoria.
- A Lixeira "Mágica" (Já Satisfeita): São regras que o Rust aplica automaticamente.
- Analogia: Imagine uma regra dizendo: "Não deixe o carro cair de um penhasco." No Rust, o carro literalmente não pode cair de um penhasco porque o volante está travado até que você verifique o mapa. A regra ainda é verdadeira, mas você não precisa escrevê-la porque o design do carro torna impossível violá-la. Cerca de 30% das regras caíram aqui.
- A Lixeira "Ainda Necessária" (Requerida no Rust Seguro): São regras sobre bom senso geral que o Rust não corrige automaticamente.
- Analogia: Mesmo com um carro perfeito, você ainda precisa de uma regra dizendo: "Não dirija enquanto dorme." O Rust previne falhas mecânicas, mas não pode impedir um motorista sonolento de tomar uma decisão ruim. Cerca de 12% das regras ainda são necessárias mesmo ao usar a versão "segura" do Rust.
- A Lixeira "Zona de Perigo" (Requerida no Rust Não Seguro): O Rust possui um modo especial "quebre o vidro em caso de emergência" chamado Unsafe. Isso permite contornar os bloqueios de segurança para realizar coisas poderosas e de baixo nível.
- Analogia: Se você decidir remover os bloqueios de segurança do carro para correr, de repente precisará de todas aquelas regras antigas de segurança de volta. O artigo descobriu que 36 regras, que eram tratadas automaticamente pela segurança do Rust, tornam-se críticas novamente se você usar este modo "Unsafe".
- A Lixeira "Tradução" (Precisa de Adaptação): Algumas regras tratam de conceitos que existem em ambas as linguagens, mas funcionam de maneira diferente.
- Analogia: Uma regra pode dizer: "Não use um chaves de fenda para martelar um prego." No Rust, você não usa chaves de fenda de forma alguma; você usa uma ferramenta especializada. A intenção (não use a ferramenta errada) é a mesma, mas a instrução específica precisa ser reescrita para se encaixar nas ferramentas do Rust. Cerca de 6% das regras precisaram desse tipo de tradução.
- A Lixeira "Faltando": O artigo observa que existem algumas lacunas de segurança onde o Rust precisa de novas regras que ainda não existem no manual antigo.
As Principais Conclusões:
- O Rust é um Mudança de Jogo: Como o Rust é construído de forma tão segura, quase 61% das antigas regras de segurança do C++ são desnecessárias ou tratadas automaticamente pela própria linguagem. Isso significa que um futuro manual de segurança para o Rust poderia ser muito mais curto e fácil de seguir.
- A Pegadinha do "Unsafe": Se você usar o modo "Seguro" do Rust, está muito protegido. Mas se usar o modo "Unsafe" (que às vezes é necessário para tarefas de alto desempenho), você perde essas proteções automáticas. O artigo destaca que a certificação de segurança para o Rust deve focar pesadamente em como essas seções "Unsafe" são gerenciadas.
- Ainda Não Está Pronto: Embora o Rust seja ótimo, o artigo observa que as ferramentas e padrões da indústria ainda não estão totalmente maduros. É como ter um carro novo fantástico, mas as leis de trânsito e as seguradoras ainda não acompanharam totalmente. Por enquanto, o Rust provavelmente será usado ao lado do C++ (como adicionar um novo motor mais seguro a um carro antigo) em vez de substituí-lo completamente imediatamente.
Em Resumo:
Os autores não disseram apenas "o Rust é bom". Eles fizeram o trabalho árduo de mapear as antigas regras de segurança para a nova linguagem, provando que o design do Rust elimina uma grande parte do antigo livro de regras, enquanto identifica claramente quais regras específicas ainda importam e onde novas regras precisam ser escritas. Eles tornaram todas as suas descobertas públicas para que os engenheiros possam começar a construir sistemas mais seguros com o Rust hoje.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.