Miguel Ojeda, autor do projeto Rust-for-Linux, lançou a quarta versão dos patches de suporte ao driver Rust no Linux.
O suporte a Rust é considerado experimental, mas já foi acordado para ser incluído na ramificação linux-next e está maduro o suficiente para começar a trabalhar em camadas de abstração em cima de subsistemas do kernel, bem como escrever 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 aumentar a segurança da Internet.
Agora, Miguel Ojeda, autor do projeto Rust-for-Linux, lançou recentemente a quarta proposta de componentes de driver de dispositivo Rust para os desenvolvedores do kernel Linux considerarem.
Publicada a quarta versão dos patches de suporte ao driver Rust no Linux
Para quem ainda desconhece as mudanças propostas, saiba que elas possibilitam o uso do Rust como segunda linguagem para desenvolver drivers e módulos do kernel.
O suporte a Rust é apresentado como uma opção que não está habilitada por padrão e não resulta na inclusão de Rust entre as dependências de compilação necessárias para o kernel.
Usar Rust para desenvolver drivers permitirá que você crie drivers melhores e mais seguros com o mínimo de esforço, sem problemas como acessar uma área de memória após liberá-la, desreferenciar ponteiros nulos e estouros de buffer.
A segurança da memória é fornecida no Rust em tempo de compilação, verificando referências, rastreando a propriedade do objeto e o tempo de vida do objeto (escopo), bem como avaliando a correção do acesso à memória durante a execução do código.
Rust também fornece proteção contra estouro de inteiros, requer que as variáveis sejam inicializadas antes do uso, trata melhor os erros na biblioteca padrão, reforça o conceito de variáveis e referências imutáveis por padrão e oferece forte tipagem estática para minimizar erros lógicos.
Quais são as mudanças na quarta versão?
Nesta nova versão dos patches que são apresentados, menciona-se que os comentários feitos durante a discussão da primeira, segunda e terceira edição dos patches continuaram sendo eliminados.
Continuaremos atualizando até não dependermos de nenhum recurso instável;
nesse ponto podemos querer começar a declarar uma versão mínima do Rust
é suportado, como é feito, por exemplo, para GCC e Clang.
Da mesma forma, também migramos para a edição 2021 da linguagem Rust.
Quanto às outras alterações que foram feitas nesta nova versão, o anúncio menciona o seguinte:
- Transição para usar Rust 1.58.0 estável como o compilador de referência.
- As alterações necessárias para o projeto, ainda não incluídas no kit de ferramentas principal do Rust, incluem o sinalizador “-Zsymbol-mangling-version=v0” (esperado no Rust 1.59.0) e o modo “maybe_uninit_extra” (esperado no Rust 1.60.0) .
- Verificações automáticas para a disponibilidade de ferramentas Rust e sua adequação foram adicionadas, e a capacidade de testar o suporte Rust no sistema também foi expandida.
- Novas abstrações são propostas para poder acessar as tabelas de identificadores de dispositivos (“IdArray” e “IdTable”) a partir do código Rust.
- Camadas adicionadas para chamar funções relacionadas ao timer (frame do relógio).
- Os controladores de plataforma agora são definidos por meio de implementações de características.
- Uma nova macro foi adicionada para simplificar o registro do driver da plataforma e um novo modelo de driver genérico foi proposto.
- Adicionadas novas macros para estruturas “dev_*”.
- Adicionados novos métodos “{read,write}*_relaxed” para o tipo IoMem.
- Removida a propriedade FileOpener para simplificar as operações de arquivo.
- Adicionado o parâmetro “ThisModule” ao número de argumentos passados durante o registro do controlador.
- Um modelo típico para a criação de módulos do kernel na linguagem Rust é proposto.
Por fim, se você estiver interessado em saber mais sobre esta nova versão, pode consultar os detalhes no seguinte endereço.