A quinta versão dos patches para suporte ao driver Rust no Linux foi publicada

Parece que desenvolvimento de patches para suporte ao driver Rust no Linux pegou um bom ritmo Pois bem, foi há pouco mais de um mês que a proposta removida foi lançada, pois desde a terceira versão uma nova proposta é entregue todos os meses e agora a nova proposta foi lançada, sendo esta a sexta edição.

Miguel Ojeda propôs o novo lançamento dos componentes de desenvolvimento de driver de dispositivo Rust para os desenvolvedores do kernel Linux considerarem. Esta é a sexta edição ainda considerado experimental mas já está incluído na ramificação linux-next e está maduro o suficiente para começar a trabalhar na criação de camadas de abstração em cima dos subsistemas do kernel, bem como na escrita de drivers e módulos.

Para aqueles que ainda desconhecem este desenvolvimento, devem saber que é 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.

Lembre-se que as mudanças propostas tornam possível usar Rust como segunda língua para desenvolver drivers e módulos de 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 eEm 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, lida melhor com erros na biblioteca padrão, reforça o conceito de variáveis ​​e referências imutáveis ​​por padrão e oferece tipagem estática forte para minimizar erros lógicos.

Na nova versão dos patches, os comentários feitos durante a discussão do primeiro continuaram sendo deletados, segundo, terceiro, quarto y quinta edições dos patches (dos quais deixo os links correspondentes).

Principais novidades na sexta proposta

Com a chegada desta nova proposta O kit de ferramentas foi atualizado antes do lançamento do Rust 1.59.0, junto com o qual uma variante da biblioteca alloc ele também sincroniza com a nova versão do Rust, eliminando a possibilidade de um estado de "pânico" quando ocorrem erros, como falta de memória.

Outra mudança que foi feita é que agora, em vez de fornecer arquivos de especificação de plataforma destino pré-criado eles são gerados dinamicamente com base na configuração do kernel.

Também é observado que o parâmetro do kernel HAVE_RUST foi adicionado para habilitá-lo para arquiteturas compatíveis com Rust e que abstrações foram propostas para uso no código Rust para um gerador de números pseudo-aleatórios de hardware.

Por outro lado, é mencionado que a capacidade de usar inserções do montador foi estabilizada ("feature(global_asm)") e suporte adicionado para criar programas host em Rust que são usados ​​no processo de compilação do kernel.

Das outras mudanças que se destacam desta nova proposta:

  • O uso de códigos de erro sem o prefixo "Error::" (por exemplo, "return Err(EINVAL)") foi permitido para aproximar o tratamento de códigos de erro em C.
  • Adicionado tipo "CString" para strings C nativas. Tipos combinados de formatador e buffer.
  • Adicionados os traços Bool e LockInfo.
  • Implementação simplificada de spin-locks.

Finalmente se você estiver interessado em saber mais sobre isso sobre esta nova proposta, você pode consultar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.