A WD está desenvolvendo um driver NVMe em Rust. Experimentando Rust no FreeBSD

Na conferência Linux Plumbers 2022 que acontece hoje, um engenheiro da Western Digital fez uma apresentação sobre o desenvolvimento de um driver experimental para drives SSD com interface NVM-Express (NVMe), escrito na linguagem Rust e rodando no kernel Linux nível. Apesar de o projeto ainda estar em um estágio inicial de desenvolvimento, os testes mostraram que o desempenho do driver NVMe na linguagem Rust corresponde ao driver NVMe escrito na linguagem C disponível no kernel.

A WD está desenvolvendo um driver NVMe em Rust. Experimentando Rust no FreeBSD
A WD está desenvolvendo um driver NVMe em Rust. Experimentando Rust no FreeBSD

O relatório afirma que o driver NVMe atual em C é completamente satisfatório para os desenvolvedores, mas o subsistema NVMe é uma boa plataforma para explorar a viabilidade de desenvolvimento de drivers em Rust, pois é bastante simples, amplamente utilizado, possui requisitos de alto desempenho e tem uma implementação de referência comprovada para comparação e suporta várias interfaces (dev, pci, dma, blk-mq, gendisk, sysfs).

Ressalta-se que o driver PCI NVMe para Rust já oferece as funcionalidades necessárias ao funcionamento, mas ainda não está pronto para uso generalizado, pois requer melhorias individuais. Os planos futuros incluem livrar o código de blocos inseguros existentes, suportar operações de remoção de dispositivos e descarregamento de driver, suportar a interface sysfs, implementar inicialização lenta, criar um driver para blk-mq e experimentar o uso de um modelo de programação assíncrona para queue_rq.

Além disso, podemos destacar os experimentos realizados pelo Grupo NCC para desenvolver drivers na linguagem Rust para o kernel do FreeBSD. Como exemplo, examinamos detalhadamente um driver de eco simples que retorna dados gravados no arquivo /dev/rustmodule. Na próxima fase de experimentação, o Grupo NCC está considerando a possibilidade de retrabalhar os componentes principais do kernel na linguagem Rust para melhorar a segurança das operações de rede e arquivos.

No entanto, embora tenha sido demonstrado que é possível criar módulos simples na linguagem Rust, uma integração mais estreita do Rust no kernel do FreeBSD exigirá trabalho adicional. Por exemplo, mencionam a necessidade de criar um conjunto de camadas de abstração sobre os subsistemas e estruturas do kernel, semelhantes aos add-ons preparados pelo projeto Rust for Linux. No futuro, planejamos realizar experimentos semelhantes com o kernel Illumos e identificar abstrações comuns em Rust que poderiam ser usadas em drivers escritos em Rust para Linux, BSD e Illumos.

De acordo com a Microsoft e o Google, cerca de 70% das vulnerabilidades em seus produtos de software são causadas pelo manuseio inseguro da memória. Espera-se que o uso da linguagem Rust reduza o risco de vulnerabilidades causadas por trabalho inseguro com memória e elimine a ocorrência de erros como acessar uma área de memória após ela ter sido liberada e sobrecarregar o 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.

Fonte: opennet.ru

Adicionar um comentário