Suporte Rust para kernel Linux enfrenta críticas de Torvalds

Linus Torvalds revisou os patches que implementaram a capacidade de criar drivers na linguagem Rust para o kernel Linux e fez alguns comentários críticos.

As maiores reclamações foram causadas pela possibilidade potencial de panic() em situações de erro, por exemplo, em uma situação de pouca memória, quando operações de alocação dinâmica de memória, inclusive dentro do kernel, podem falhar. Torvalds afirmou que tal abordagem no kernel é fundamentalmente inaceitável e, se este ponto não for compreendido, ele pode desnudar completamente qualquer código que tente usar tal abordagem. Por outro lado, o desenvolvedor do patch concordou com este problema e o considera solucionável.

Outro problema foram as tentativas de usar tipos de ponto flutuante ou de 128 bits, que não são aceitáveis ​​para ambientes como o kernel Linux. Isso acabou sendo um problema mais sério, já que no momento a biblioteca principal do Rust é indivisível e representa um grande blob - não há como solicitar apenas alguns dos recursos, evitando o uso de uma ou outra funcionalidade problemática. A solução do problema pode exigir mudanças no compilador Rust e nas bibliotecas, embora no momento a equipe ainda não tenha uma estratégia de como implementar a modularização das bibliotecas de linguagem.

Além disso, Torvalds observou que o exemplo de driver fornecido era inútil e nos aconselhou a usar como exemplo algum driver que resolva um dos problemas reais.

Atualização: o Google anunciou sua participação na iniciativa de empurrar o suporte ao Rust para o kernel Linux e forneceu razões técnicas para a introdução do Rust para combater problemas decorrentes de erros de memória. O Google acredita que Rust está pronto para se juntar ao C como linguagem para desenvolver componentes do kernel Linux. O artigo também fornece exemplos de uso da linguagem Rust para desenvolver drivers de kernel, no contexto de seu uso na plataforma Android (Rust é reconhecida como uma linguagem oficialmente suportada para desenvolvimento Android).

Observa-se que o Google preparou um protótipo inicial de driver escrito em Rust para o mecanismo de comunicação interprocessos do Binder, que permitirá uma comparação detalhada do desempenho e segurança das implementações do Binder em C e Rust. Em sua forma atual, o trabalho ainda não está completo, mas para quase todas as abstrações básicas da funcionalidade do kernel necessárias para o funcionamento do Binder, foram preparadas camadas para usar essas abstrações no código Rust.

Fonte: opennet.ru

Adicionar um comentário