Rust no Kernel Linux divide desenvolvedores e mantenedores
Notícias

Rust no Kernel Linux divide desenvolvedores

O uso da linguagem Rust no kernel Linux tem sido um dos temas mais quentes e controversos na comunidade de desenvolvimento nos últimos anos. Enquanto alguns defendem a adoção do Rust como uma forma de modernizar e aumentar a segurança do kernel, outros resistem à mudança, alegando preocupações com a complexidade e a manutenção de um código base multi-linguagem. Recentemente, figuras importantes como Linus Torvalds e Greg Kroah-Hartman entraram na discussão, trazendo novos argumentos e esclarecimentos sobre o futuro do Rust no kernel.

O contexto da discussão

O kernel Linux, escrito majoritariamente em C, é um dos projetos de código aberto mais complexos e importantes do mundo. No entanto, a linguagem C, apesar de poderosa, é conhecida por suas vulnerabilidades relacionadas ao gerenciamento de memória, como estouros de pilha e uso após liberação (use-after-free). Esses problemas são responsáveis por uma parcela significativa dos bugs e falhas de segurança no kernel.

O Rust, por outro lado, é uma linguagem moderna que prioriza a segurança de memória sem sacrificar desempenho. Sua adoção no kernel tem sido vista como uma oportunidade para reduzir erros comuns e aumentar a confiabilidade. No entanto, a introdução de uma nova linguagem em um código base tão grande e complexo não é uma tarefa simples, e tem gerado debates acalorados entre desenvolvedores e mantenedores.

A posição de Linus Torvalds

Linus Torvalds, o criador do Linux, tem sido uma figura central nessa discussão. Recentemente, ele interveio em um debate na lista de discussão do kernel (LKML) para esclarecer o papel dos mantenedores em relação ao código Rust. A polêmica começou quando Christoph Hellwig, mantenedor da camada DMA (Direct Memory Access), expressou objeções ao uso de Rust em áreas relacionadas ao seu subsistema.

Torvalds deixou claro que os mantenedores têm duas opções em relação ao Rust:

  1. Envolver-se ativamente: Os mantenedores podem optar por participar do desenvolvimento das interfaces Rust para os subsistemas que gerenciam, assumindo também a responsabilidade pelas ligações (bindings) entre Rust e C;
  2. Manter-se Afastados: Aqueles que preferem não lidar com Rust podem ignorar completamente o código escrito na linguagem, mas, nesse caso, não terão poder de veto sobre como o Rust utiliza as interfaces C que mantêm.

O líder do desenvolvimento do Linux enfatizou que os mantenedores não podem arbitrariamente bloquear o uso de Rust apenas porque não gostam da linguagem. Ele comparou a situação a um mantenedor de DMA proibir o uso de drivers específicos, algo que claramente não faz sentido.

Um dos pontos centrais da argumentação de Torvalds é a ideia de uma “parede de proteção” entre o código C e o Rust. Essa parede garante que os desenvolvedores que preferem trabalhar exclusivamente em C não precisem se preocupar com o Rust.

No entanto, essa proteção funciona nos dois sentidos: se um mantenedor opta por ignorar o Rust, ele também perde o direito de influenciar como o Rust interage com o código que mantém.

Torvalds explicou que, quando interfaces C são alteradas, os desenvolvedores Rust terão que lidar com as consequências e ajustar suas ligações. Isso faz parte do acordo implícito de que os mantenedores de C não precisam se envolver com o Rust, mas, neste caso, também não podem controlar como ele é usado.

Embora Torvalds tenha apresentado a situação em termos bastante diretos, ele também reconheceu que a realidade pode ser mais flexível. Em muitos casos, os mantenedores podem optar por um envolvimento moderado com o Rust, colaborando com os desenvolvedores da linguagem sem assumir a responsabilidade total pelas interfaces.

Essa abordagem permite um equilíbrio entre a modernização do kernel e o respeito às preferências individuais dos mantenedores. Afinal, nem todos precisam se tornar especialistas em Rust, mas também não devem impedir que outros avancem com a linguagem.

Greg Kroah-Hartman e a defesa do Rust

Enquanto Torvalds abordou a questão do ponto de vista da governança, Greg Kroah-Hartman, um dos principais mantenedores do kernel, fez uma defesa técnica do Rust. Em um post na LKML, Greg argumentou que a maioria dos bugs no kernel são causados por “pequenos casos extremos em C que simplesmente não existem em Rust”. Ele destacou que problemas como estouros de memória, uso após liberação e falhas na limpeza de caminhos de erro são praticamente eliminados com o Rust.

Greg também ressaltou que o Rust permite definir APIs de maneira mais segura e clara, reduzindo a necessidade de revisões extensivas por parte dos mantenedores. Ele reconheceu que o código C não desaparecerá tão cedo, mas defendeu que novos drivers e módulos sejam escritos em Rust para evitar os problemas comuns associados ao C.

Mas afinal, qual é a crítica ao Rust?

Apesar dos benefícios, a introdução do Rust no kernel não está livre de desafios. Christoph Hellwig, em sua crítica, comparou a proliferação de bindings Rust a um “câncer” que poderia levar a uma fragmentação do código base. Ele expressou preocupação com a possibilidade de o kernel se tornar um projeto escrito em múltiplas linguagens sem diretrizes claras sobre onde e como cada uma deve ser usada.

Hellwig também questionou o objetivo final do “experimento” Rust. Se a meta é melhorar a segurança de memória, ele argumenta que o foco deveria ser em corrigir o código C existente, em vez de introduzir uma nova linguagem.

O futuro do Rust no Kernel Linux

Apesar das controvérsias, parece claro que o Rust continuará a ser uma parte do kernel Linux. A intervenção de Torvalds e a defesa de Greg Kroah-Hartman indicam que a linguagem será adotada de forma gradual, com respeito às preferências e expertise dos mantenedores.

Enquanto aguardamos os próximos capítulos dessa história, uma coisa é certa: o kernel Linux continua a evoluir, e o Rust parece destinado a desempenhar um papel importante nessa jornada.

Fique por dentro das principais notícias da semana sobre tecnologia e Linux: assine nossa newsletter!

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!