Na conferência Maintainers Summit que está acontecendo estes dias, foi discutido o resultado do experimento para adicionar ao núcleo do Linux a capacidade de desenvolver componentes na linguagem Rust. Os participantes presentes reconheceram o experimento como bem-sucedido e decidiram transferir o suporte à linguagem Rust para a categoria de partes principais do núcleo, removendo-o da marca de funcionalidade experimental.
Há três anos, a possibilidade de desenvolver drivers e módulos na linguagem Rust foi adicionada ao núcleo 6.1. Desde então, abstrações para desenvolvimento de drivers para GPU, FS, dispositivos de bloco, adaptadores de rede e dispositivos USB foram incluídas no núcleo. Um driver em Rust para a GPU NVIDIA, o asahi para a GPU Apple AGX, o Tyr para a GPU ARM Mali e rust_ext2 para o FS Ext2 estão sendo desenvolvidos em Rust. Foi aceita no núcleo uma implementação do IPC Binder escrita em Rust. O projeto RROS desenvolve um subsistema em tempo real para o núcleo Linux, escrito em Rust. O suporte a Rust não está ativo por padrão e não resulta na inclusão do Rust entre as dependências obrigatórias de compilação do núcleo.
Segundo os defensores da promoção do Rust, essa linguagem elimina a maioria dos erros que ocorrem no núcleo devido às particularidades da linguagem C (corner case), permitindo que as revisões se concentrem em erros lógicos e condições de corrida. Rust ajuda a evitar problemas como acesso à memória após sua liberação, ultrapassagem de limites de buffer, liberação incorreta de recursos ao tratar erros e verificações de códigos de erro esquecidas. A aplicação de Rust para o novo código também permite reduzir o tempo de desenvolvimento, graças à diminuição dos esforços necessários para depuração e à presença de garantias rigorosas na linguagem, que detectam erros em uma fase inicial da escrita do código.
Os oponentes da implementação do Rust no núcleo consideram inaceitável o uso de várias linguagens de programação em projetos complexos — bases de código misturadas dificultam o trabalho dos mantenedores, pois os tornam dependentes do código em outra linguagem. Por exemplo, com a inclusão de wrappers em Rust, os desenvolvedores de subsistemas escritos em C devem levar em conta a influência das mudanças na continuidade do funcionamento dos wrappers.
Fonte: opennet.ru
