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 há poucos dias, Christoph Hellwig, uma figura proeminente na manutenção de subsistemas críticos como DMA, KVM, Slab Allocator e PowerPC no kernel do Linux , deixou clara sua rejeição ao suporte de patches que facilitam o desenvolvimento de drivers em Rust.
Christoph Hellwig menciona que as correções em questão propunham incluir wrappers em torno de funções do subsistema DMA para permitir que drivers escritos em Rust o utilizassem. No entanto, ele argumenta que essa estratégia complica a manutenção do código e que a clareza das interfaces em C deve ser preservada , evitando a extensão de abstrações que poderiam dificultar a integração com o restante do kernel.
Os problemas de misturar línguas em um projeto
Segundo Hellwig, o principal problema reside no fato de que a integração do código Rust cria dependências que obrigam os desenvolvedores do subsistema C a considerar o impacto de suas modificações no código de ligação Rust. Isso significa que qualquer ajuste em estruturas ou funções internas de C pode exigir alterações paralelas no código Rust, criando um cenário difícil de manter a longo prazo.
Para evitar essa situação, Hellwig recomendou que os drivers em Rust acessassem a API DMA nativa em C diretamente, em vez de recorrer a wrappers adicionais que, em sua opinião, comprometeriam a manutenção do kernel.
Os desenvolvedores que propuseram as correções argumentaram que manteriam o código Rust e, para esse fim, organizaram 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 de integrar código de outras linguagens aos 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 se intensificou quando figuras como Jason Gunthorpe, responsável pela manutenção do TPM, VFIO e Infiniband na NVIDIA, compartilharam exemplos de como alterações nos subsistemas de memória, embora corretas do ponto de vista do código C, causavam problemas ao tentar compilar o kernel com suporte a Rust. Esses incidentes demonstraram que as ligações entre C e Rust podem introduzir dependências adicionais que dificultam o desenvolvimento coordenado.
Vale mencionar que a discussão não se limitou a aspectos técnicos. Héctor Martín sugeriu que a solução poderia ser adotar o link diretamente por meio de Linus Torvalds, ignorando o mantenedor do subsistema DMA. No entanto, essa abordagem poderia perturbar a estrutura hierárquica tradicional do desenvolvimento do kernel.
Hector também apontou comportamentos que considerava tóxicos, chegando a mencionar que as críticas de Hellwig, nas quais ele comparou Rust a um "tumor cancerígeno", contribuíram para sua frustração e, por fim, para sua decisão de deixar a função de mantenedor da plataforma ARM/Apple no kernel principal. Apesar de sua renúncia, a plataforma continuará a ser suportada por Sven Peter, que se comprometeu a dar continuidade à sua manutençã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 correções , sem serem influenciadas por pressões externas ou assédio nas redes sociais. Para Torvalds , o foco deve ser puramente técnico, deixando de lado as 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 sendo um tema 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 do Linux continua enfrentando desafios complexos, onde as decisões técnicas devem ser cuidadosamente consideradas para garantir a sustentabilidade do projeto a longo prazo.