Quarta edição de patches para o kernel Linux com suporte para a linguagem Rust

Miguel Ojeda, autor do projeto Rust-for-Linux, propôs uma quarta versão de componentes para desenvolvimento de drivers de dispositivos na linguagem Rust para consideração dos desenvolvedores do kernel Linux. O suporte ao Rust é considerado experimental, mas já foi acordado para inclusão no ramo linux-next e está maduro o suficiente para começar a trabalhar na criação de camadas de abstração sobre os subsistemas do kernel, bem como na gravação de drivers e módulos. O desenvolvimento é financiado pelo Google e pelo ISRG (Internet Security Research Group), que é o fundador do projeto Let's Encrypt e promove o HTTPS e o desenvolvimento de tecnologias para melhorar a segurança da Internet.

Lembre-se que as mudanças propostas possibilitam o uso do Rust como segunda linguagem para o desenvolvimento de drivers e módulos do kernel. O suporte ao Rust é apresentado como uma opção que não é habilitada por padrão e não resulta na inclusão do Rust como uma dependência de construção necessária para o kernel. Usar Rust para desenvolvimento de driver permitirá que você crie drivers melhores e mais seguros com o mínimo de esforço, livres de problemas como acesso à memória após a liberação, desreferências de ponteiro nulo e saturação de buffer.

A manipulação de memória segura é fornecida em Rust em tempo de compilação por meio de verificação de referência, acompanhando a propriedade do objeto e o tempo de vida do objeto (escopo), bem como por meio da avaliação da exatidão do acesso à memória durante a execução do código. Rust também fornece proteção contra estouros de número inteiro, requer inicialização obrigatória de valores de variáveis ​​antes do uso, lida melhor com erros na biblioteca padrão, aplica o conceito de referências e variáveis ​​imutáveis ​​por padrão, oferece tipagem estática forte para minimizar erros lógicos.

A nova versão dos patches continua eliminando os comentários feitos durante a discussão da primeira, segunda e terceira edições dos patches. Na nova versão:

  • A transição para usar a versão estável do Rust 1.58.0 como compilador de referência foi feita. Entre as mudanças necessárias para o projeto, que ainda não estão incluídas no kit de ferramentas principal do Rust, estão a flag “-Zsymbol-mangling-version=v0” (esperada no Rust 1.59.0) e o modo “maybe_uninit_extra” (esperado no Rust 1.60.0). .XNUMX) são anotados.
  • Adicionadas verificações automáticas para a disponibilidade de ferramentas Rust adequadas e expandida a capacidade de testar o suporte Rust no sistema.
  • Novas abstrações foram propostas para acessar tabelas de identificadores de dispositivos (“IdArray” e “IdTable”) do código Rust.
  • Adicionadas camadas para acessar funções relacionadas ao temporizador (estrutura de relógio).
  • Os drivers de plataforma agora são definidos por meio de implementações de características.
  • Uma nova macro foi adicionada para simplificar o registro de drivers de plataforma, e um novo modelo genérico de driver foi proposto.
  • Adicionadas macros para estruturas "dev_*".
  • Adicionados métodos "{read,write}*_relaxed" para o tipo IoMem .
  • Removida a propriedade FileOpener para simplificar as operações de arquivo.
  • O parâmetro “ThisModule” foi adicionado aos argumentos passados ​​ao registrar um driver.
  • É proposto um modelo padrão para criação de módulos de kernel na linguagem Rust.

Fonte: opennet.ru

Adicionar um comentário