Nova versão dos patches para o kernel Linux com suporte para a linguagem Rust

Miguel Ojeda, autor do projeto Rust-for-Linux, propôs para consideração dos desenvolvedores do kernel Linux o lançamento da versão v5 dos componentes para o desenvolvimento de drivers de dispositivos na linguagem Rust. Esta é a sexta edição dos patches, levando em conta a primeira versão, que foi publicada sem número de versão. O suporte para Rust é considerado experimental, mas já está incluído na branch linux-next e está suficientemente desenvolvido para iniciar o trabalho de criação de camadas de abstração sobre as subsistemas do kernel, bem como para a escrita de drivers e módulos. O desenvolvimento é financiado pela Google e pela organização ISRG (Internet Security Research Group), que é a fundadora do projeto Let's Encrypt e promove o avanço do HTTPS e o desenvolvimento de tecnologias para aumentar a segurança na internet.

Vale lembrar que as mudanças propostas permitem o uso do Rust como uma segunda linguagem para o desenvolvimento de drivers e módulos do kernel. O suporte para Rust é apresentado como uma opção, que não está ativa por padrão e não resulta na inclusão do Rust entre as dependências obrigatórias de compilação do kernel. O uso do Rust para o desenvolvimento de drivers permitirá a criação de drivers seguros e de melhor qualidade com um mínimo de esforço, livres de problemas como acesso à memória após sua liberação, desreferenciação de ponteiros nulos e estouros de buffer.

A segurança no manuseio da memória é garantida no Rust durante a compilação através da verificação de referências, rastreamento da propriedade dos objetos e consideração do tempo de vida dos objetos (escopo), bem como pela avaliação da correção do acesso à memória durante a execução do código. O Rust também oferece ferramentas para proteção contra estouros inteiros, exige a inicialização obrigatória dos valores das variáveis antes do uso, lida melhor com erros na biblioteca padrão, aplica o conceito de imutabilidade (immutable) para referências e variáveis por padrão e oferece forte tipagem estática para minimizar erros lógicos.

Na nova versão dos patches, a remoção das observações feitas durante a discussão da primeira, segunda, terceira, quarta e quinta edições dos patches foi continuada. Na nova versão:

  • O conjunto de ferramentas foi atualizado para o lançamento do Rust 1.59.0. A nova versão do Rust também sincronizou a versão da biblioteca alloc, livre de possíveis estados de "panic" ao ocorrer erros, como falta de memória. A possibilidade de utilizar inserções de assembly ("feature(global_asm)") foi estabilizada.
  • Adicionada a compatibilidade para criação de programas hospedeiros em Rust, utilizados no processo de compilação do núcleo.
  • Em vez de fornecer arquivos pré-criados com a especificação das plataformas de destino, agora é garantida a geração dinâmica com base na configuração do núcleo.
  • Adicionado o parâmetro do núcleo HAVE_RUST, ativado para arquiteturas que suportam Rust.
  • Propostas de abstrações para uso no código Rust de geradores de números pseudo-aleatórios de hardware.
  • Permitido o uso de códigos de erro sem o prefixo "Error::" (por exemplo, "return Err(EINVAL)") para se aproximar do tratamento de códigos de erro em C.
  • Adicionado o tipo "CString" para cadeias de caracteres C-simples. Os tipos Formatter e Buffer foram unificados.
  • Adicionados os traits Bool e LockInfo.
  • Implementação de bloqueios spin simplificada.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster