Quinta Edição patches de kernel Linux com suporte à linguagem Rust

Miguel Ojeda, autor do projeto Rust-for-Linux, proposto para consideração pelos desenvolvedores do kernel Linux пятый вариант компонентов для разработки драйверов устройств на языке Rust. Поддержка Rust рассматривается как экспериментальная, но уже включена в ветку linux-next и достаточно развита для начала работы по созданию слоёв абстракции над подсистемами ядра, а также для написания драйверов и модулей. Разработка финансируется компанией Google и организацией ISRG (Internet Security Research Group), которая является учредителем проекта Let’s Encrypt и способствует продвижению HTTPS и развитию технологий для повышения защищённости интернета.

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, terceira e quarta edições dos patches. Na nova versão:

  • O teste de componentes para suporte a Rust foi adicionado ao sistema de integração contínua baseado no bot 0DAY/LKP com suporte da Intel e a publicação de relatórios de teste começou. Estamos nos preparando para integrar o suporte Rust ao sistema de testes automatizados KernelCI. Os testes baseados no GitHub CI foram transferidos para o uso de contêineres.
  • Os módulos do kernel Rust ficam livres da necessidade de definir os atributos de caixa “#![no_std]” e “#![feature(…)]”.
  • Adicionado suporte para destinos de assembly único (.o, .s, .ll e .i).
  • As diretrizes de código definem regras para separar comentários (“//”) e documentar código (“///”).
  • O script is_rust_module.sh foi reformulado.
  • Adicionado suporte para primitivas de sincronização estáticas (variáveis ​​globais compartilhadas) baseadas na implementação "CONFIG_CONSTRUCTORS".
  • O gerenciamento de bloqueios é simplificado: Guard e GuardMut são combinados e um tipo parametrizado.
  • É possível definir parâmetros adicionais ao cadastrar dispositivos.
  • Adicionada a abstração "RwSemaphore", que atua como um wrapper sobre a estrutura C rw_semaphore.
  • Para usar o mmap, um novo módulo mm e uma abstração VMA foram adicionados (um wrapper sobre a estrutura vm_area_struct).
  • O driver GPIO PL061 foi alterado para usar a macro “dev_*!”.
  • Foi realizada uma limpeza geral do código.

Fonte: opennet.ru

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