Rust para Linux em apuros, tensões e desentendimentos já vieram à tona 

Problemas com Rust para Linux

Parece que este ano não será o ano do Linux, pois embora no último trimestre do ano passado tudo parecesse que o Linux e os desktops decolariam em 2025, as coisas nem sempre são o que parecem.

E são apenas alguns dias Christoph Hellwig, uma figura proeminente na manutenção de subsistemas críticos como DMA, KVM, Slab Allocator e PowerPC no kernel Linux, deixou clara sua recusa em dar suporte a patches que facilitam o desenvolvimento de controladores em Rust.

Cristoph Hellwig menciona que os patches em questão Eles propuseram incluir wrappers em torno das funções do subsistema DMA para permitir que drivers escritos em Rust o utilizassem. No entanto, ele argumenta que esta estratégiaa complica a manutenção do código e a clareza das interfaces C deve ser preservada, evitando que abstrações sejam estendidas, o que poderia dificultar a integração com o restante do kernel.

Os problemas de misturar línguas em um projeto

De acordo com Hellwig, O principal problema é que a integração do código Rust gera dependências que forçam os desenvolvedores do subsistema C a considerar o impacto de suas modificações no código de vinculação do Rust. Esse Isso significa que quaisquer ajustes nas estruturas ou funções internas em C pode exigir mudanças paralelas no código do Rust, o que cria um cenário difícil de manter a longo prazo.

Para evitar esta situação, Hellwig recomendado que os controladores em Rust acessem diretamente para a API DMA nativa em C, em vez de recorrer a wrappers adicionais que eles acreditam que comprometeriam a manutenção do kernel.

Enquanto isso, o Os desenvolvedores que propuseram os patches argumentaram que cuidariam da manutenção do código Rust e, para isso, organizamos os links em um subdiretório específico (rust/kernel/dma.rs). No entanto, Hellwig vetou essas propostas, alertando que não precisava assumir a responsabilidade. para integrar código de outras linguagens em subsistemas principais.

Além disso, ele comentou fortemente que se você quiser transformar o kernel em um mosaico de múltiplas linguagens, você deve começar com os drivers do Rust em vez de impor essa complexidade em áreas fundamentais.

A controvérsia intensificou-se quando figuras como Jason Gunthorpe, mantenedor de TPM, VFIO e Infiniband na NVIDIA, compartilharam exemplos de como mudanças em subsistemas de memória, embora corretas de uma perspectiva de código C, gerou problemas ao tentar compilar o kernel com suporte a Rust. Esses incidentes deixaram claro que as ligações entre C e Rust podem introduzir dependências adicionais que dificultam o desenvolvimento coordenado.

Cabe mencionar que A discussão não se limitou aos aspectos técnicos. Hector Martin sugeriu que a solução poderia ser adotar o link diretamente por meio de Linus Torvalds, evitando a intervenção do mantenedor do subsistema DMA. No entanto, essa abordagem pode romper a estrutura hierárquica tradicional do desenvolvimento do kernel.

Hector também destacou comportamentos que considerou tóxicos, mencionando até mesmo que as críticas de Hellwig, que comparou Rust a um "tumor cancerígeno", contribuíram para sua frustração e, finalmente, para sua decisão de deixar o cargo de mantenedor da plataforma ARM/Apple no kernel principal. Apesar de sua renúncia, a plataforma continuará sendo apoiada por Sven Peter, que prometeu continuar mantendo-a.

Por sua parte, o Linus Torvalds entrou na conversa, enfatizando que o processo de desenvolvimento do kernel, embora imperfeito, está funcionando e que as discussões técnicas devem se concentrar em patches, sem ser influenciado por pressões externas ou assédio nas redes sociais. Para Torvalds, a abordagem deve ser puramente técnica, deixando de lado disputas pessoais.

A recusa de Christoph Hellwig em incorporar wrappers Rust ao subsistema DMA destaca as tensões entre os desenvolvedores do kernel Linux. Enquanto alguns veem o Rust como uma ferramenta poderosa para criar novos projetos, outros temem que a integração de várias linguagens possa prejudicar a manutenibilidade e a consistência da base de código.

A situação continua a ser objecto de debate e pode ter implicações significativas para o futuro do suporte ao Rust no kernel. De qualquer forma, o que está claro é que a comunidade de desenvolvimento Linux continua enfrentando desafios complexos, onde decisões técnicas devem ser cuidadosamente medidas para garantir a sustentabilidade do projeto a longo prazo.