A segunda versão dos patches para suporte ao driver Rust no Linux já foi enviada

Em março deste ano na filial linux-next em que na época estava trabalhando para o kernel Linux 5.13, Um conjunto inicial de componentes foi incluído para desenvolver drivers de dispositivo em a linguagem Rust e agora o pedido foi feito para incluir uma segunda edição de patches para adicionar suporte Rust ao kernel do Linux.

Quem enviou o pedido aos programadores Linux é Miguel Ojeda, autor do projecto Rust-for-Linux e de quem também falámos há alguns dias, uma vez que foi contratado para dirigir o projecto "Prossimo", que basicamente se concentra na coordenação de esforços para mover a infraestrutura crítica de software para um código seguro para proteger a memória do kernel do Linux com Rust (se você quiser saber mais sobre o projeto, pode consultar postando no link abaixo.)

Drivers de ferrugem no Linux
Artigo relacionado:
Prossimo, um projeto ISRG para proteger a memória do kernel Linux com Rust

O pedido enviado por Miguel Ojeda é uma segunda versão atualizada dos componentes para o desenvolvimento de drivers de dispositivos em linguagem Rust e nos quais os comentários feitos durante a discussão da primeira versão dos patches são excluídos e aos quais Linus Torvalds já entrou na discussão e sugeriu alterar a lógica para processar algumas operações de bits.

Por dentro dos benefícios que são mencionados são aqueles gerenciamento seguro de memória é garantido no Rust em tempo de compilação, verificando referências, rastreando a propriedade do objeto e o tempo de vida do objeto, bem como avaliando a exatidão do acesso à memória em tempo de execução.

A ferrugem também fornece proteção contra estouro de inteiro, requer inicialização obrigatória de valores de variáveis ​​antes do uso, trata melhor os erros na biblioteca padrão, adota o conceito de referências e variáveis ​​imutáveis ​​por padrão e oferece escrita estática forte para minimizar erros lógicos.

Das mudanças que se destacam desta nova versão dos patches é mencionado:

  • O código de alocação de memória evita a possibilidade de gerar pânico quando ocorrerem erros como falta de memória.
  • Inclui-se uma variante da biblioteca de alocação Rust, na qual o código foi retrabalhado para lidar com bloqueios, mas o objetivo final é trazer todos os recursos necessários para o kernel para a edição principal do alloc (as alterações já foram preparadas e transportadas para a biblioteca Rust padrão).
  • Em vez de compilações noturnas, as versões beta e estáveis ​​agora podem ser usadas compilador rustc para compilar um kernel habilitado para Rust. Atualmente o rustc 1.54-beta1 é usado como um compilador de referência, mas após o lançamento 1.54 no final do mês, ele terá suporte como um compilador de referência.
  • Adicionado suporte para escrever testes usando o atributo Rust padrão "# [test]" e a capacidade de usar doctests para usar códigos de amostra da documentação como testes.
  • O suporte para arquiteturas ARM32 e RISCV foi adicionado, além do x86_64 e ARM64 anteriormente suportado.
    Implementações aprimoradas do GCC Rust (o frontend do GCC para Rust) e rustc_codegen_gcc (o backend do rustc para o GCC), que agora passa em todos os benchmarks.
  • UMA novo nível de abstração para programas Rust usarem mecanismos de kernel escritos em C, como árvores, objetos de contagem de referência, criação de descritores de arquivo, tarefas, arquivos e vetores de E / S.
  • Os componentes de desenvolvimento de driver melhoraram o suporte para o módulo "file_operations", a macro "module!", Criação de log de macro e drivers rudimentares (teste e exclusão).
  • O Binder tem suporte para passar descritores de arquivo e links LSM.
  • Um exemplo mais funcional de um driver Rust, bcm2835-rng, é proposto para um gerador de números aleatórios de hardware para placas Raspberry Pi.

Por fim, se você tiver interesse em saber mais sobre o assunto, 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.