Neste final de semana, o desenvolvedor Miguel Ojeda postou a mais recente série de patches que incrementa o suporte à linguagem Rust no kernel Linux. Os patches “Rust for the Linux kernel” estão agora em sua sexta versão para adicionar a infraestrutura necessária para esta segunda linguagem opcional ao kernel. Por outro lado, continua adicionando mais código de amostra e funcionalidade básica para exibir o uso desse recurso de segurança de memória com linguagem focada para fins de kernel.
O esforço Rust for Linux continua forte com muitos desenvolvedores e organizações interessadas em ver a capacidade de começar a usar o código Rust no kernel, especialmente para áreas propensas a problemas de segurança de memória. Com os patches v6 lançados neste final de semana, o suporte à cadeia de ferramentas foi atualizado em relação ao Rust 1.60. Além disso, temos o suporte para execução de testes de documentação no kernel e outras melhorias na infraestrutura do Rust.
Código Rust atualizado para o kernel Linux
Quando se trata de uso de código Rust dentro do kernel, o início do suporte de rede é encontrado nesta série de patches. O módulo “net” tem suporte para tipos como Namespace, SkBuff, Ipv4Addr, SocketAddrV4, TcpListener e muito mais. Há também o início do suporte “assíncrono” para programação de kernel assíncrona. O estado atual já está funcionando para permitir código de soquete TCP assíncrono. O novo código Rust também adiciona suporte para filtros de pacotes de rede e outros novos recursos.
A partir desta série Rust for Linux v6, o suporte Rust ainda é considerado “experimental”, mas bom o suficiente para que os desenvolvedores do kernel possam começar a trabalhar em abstrações do Rust para outros subsistemas do kernel e portar mais drivers para o Rust, se desejado.
.O esforço do kernel Rust atualmente é de 37,9 mil linhas de código, incluindo a infraestrutura, abstrações de subsistema iniciadas até agora, código de amostra e conversão de alguns códigos de driver Android e GPIO para Rust como exemplos adicionais.
Via Phoronix