O Google remove o driver Binder em C do kernel Linux após 15 anos. Entenda a migração para o Rust, impactos na segurança, performance e o que muda para Android.
O fim de uma era no kernel Linux
Após mais de 15 anos de serviço, o driver Binder escrito em linguagem C está oficialmente de saída do kernel Linux. A decisão foi anunciada por Carlos Llamas, engenheiro do Google, por meio do patch “[PATCH] binder: rm -f binder.c”, que remove nada menos que 11.470 linhas de código C do kernel.
O Binder é o mecanismo de comunicação entre processos (IPC) utilizado pelo Android. Ele permite que diferentes aplicações e serviços do sistema troquem mensagens de forma segura e eficiente.
Durante anos, foi a espinha dorsal da arquitetura do Android, mas o acúmulo de complexidade tornou sua manutenção um verdadeiro pesadelo.
“O driver C cresceu cada vez mais complexo ao longo de 15+ anos, tornando incrivelmente doloroso mantê-lo e adicionar novos recursos sem tropeçar em vulnerabilidades.” — Carlos Llamas, engenheiro do Google
A substituição não é apenas uma troca de linguagem. Representa uma mudança de paradigma na forma como o kernel Linux lida com drivers críticos de segurança.
Por que o Binder em C foi aposentado?
O driver Binder em C carregava uma dívida técnica acumulada ao longo de mais de uma década. O código original remonta aos primeiros dias do Android, quando a plataforma ainda engatinhava.
Com o tempo, o driver cresceu em complexidade, incorporando funcionalidades de gerenciamento de memória, controle de threads, sistema de referências e comunicação entre processos.
Cada nova funcionalidade adicionava camadas de complexidade a um código que já era difícil de manter. O resultado era um driver propenso a vulnerabilidades — falhas de use-after-free, condições de corrida e vazamentos de memória eram riscos constantes.
Adicionar novos recursos sem introduzir bugs tornou-se uma tarefa cada vez mais arriscada.
A linguagem C, embora poderosa e onipresente no kernel, não oferece garantias de segurança de memória. O programador é responsável por gerenciar manualmente a alocação e liberação de memória, o que abre margem para erros que podem comprometer todo o sistema.
Em um driver que roda no espaço do kernel — com os privilégios máximos —, um único erro pode significar desde uma falha do sistema até uma escalada de privilégios por um atacante.
A ascensão do Rust no kernel Linux
O Rust entrou no kernel Linux como um experimento em 2022, com a versão 6.1. A linguagem, desenvolvida pela Mozilla, prometia algo que o C nunca ofereceu: segurança de memória garantida em tempo de compilação, sem sacrificar performance.
Em dezembro de 2025, durante o Linux Kernel Maintainers Summit, o experimento foi oficialmente declarado concluído. Miguel Ojeda, líder do projeto Rust for Linux, anunciou que o Rust deixava de ser um experimento para se tornar parte permanente do kernel.
“O experimento acabou, ou seja, o Rust veio para ficar.” — Miguel Ojeda, líder do Rust for Linux
O Rust Binder foi um dos primeiros drivers “reais” a serem reescritos na linguagem. Ele foi upstreamado no Linux 6.18 e, desde então, tem rodado em milhões de dispositivos Android. Alice Ryhl, engenheira do Google, dedicou anos ao projeto, alcançando paridade total de funcionalidades com o driver em C.
Produto Recomendado
👨💻 Todo dev sabe: confiança se conquista no código. E a sua camiseta pode dizer isso por você.
Apresentamos a Camiseta Programador In Code We Trust — 100% algodão, corte masculino, perfeita para o dia a dia no escritório, home office ou meetup.
✅ 100% algodão: conforto e respirabilidade
✅ Estampa "In Code We Trust"
✅ Cores: Vermelho, Preto e Verde Musgo
✅ Ideal para programadores, estudantes e entusiastas de tecnologia
Vista a camiseta de quem realmente entende de código.
🔥 Estoque limitado! Clique abaixo e garanta a sua antes que acabe.
Camiseta Programador In Code We Trust 100% -> https://link.amazon/B0ibvJBVr
Eu ganho uma comissão quando você faz uma compra.
Performance: o Rust é mais rápido que o C?
Uma das maiores preocupações quando se fala em reescrever código crítico em uma nova linguagem é a performance. No caso do Binder, a resposta é clara: o Rust não só iguala, como em muitos cenários supera o C.
Nos benchmarks do Binder, o Rust apresentou resultados expressivos. Na alocação de handles, por exemplo, enquanto o baseline em Rust levava 176,88 microssegundos para transações de 0 a 10.000, a versão otimizada com o bitmap caiu para 92,93 microssegundos — praticamente metade do tempo, e ligeiramente mais rápido que os 99,41 microssegundos do C.
Em chamadas individuais, o Rust gasta cerca de 6,35 nanossegundos por chamada, contra 5,73 nanossegundos do C. Com otimizações de inlining, as duas linguagens se igualam.
O que esses números mostram é que a segurança adicional do Rust não vem com um custo significativo de performance — e em operações críticas, pode até ser mais eficiente.
Segurança: o que o Rust realmente resolve?
O Rust elimina classes inteiras de vulnerabilidades que assombram o C há décadas. Erros como use-after-free, double-free e buffer overflows são impossíveis de ocorrer em código Rust seguro — o compilador simplesmente não permite.
No contexto de um driver de kernel, isso é transformador. Um buffer overflow no Binder em C poderia permitir que um aplicativo malicioso executasse código no kernel, comprometendo todo o dispositivo. Com Rust, esse vetor de ataque desaparece.
No entanto, é importante ser honesto: o Rust não é uma bala de prata. Em dezembro de 2025, foi divulgada a primeira vulnerabilidade em código Rust no kernel Linux — a CVE-2025-68260, uma condição de corrida no Binder que poderia causar falha do sistema. O problema ocorreu em código unsafe, onde o Rust permite operações que o compilador não pode verificar.
A lição é clara: o Rust reduz drasticamente a superfície de ataque, mas não a elimina completamente. Código unsafe ainda requer cuidado, e revisões rigorosas continuam sendo essenciais. A diferença é que, em Rust, o unsafe é explícito e localizado — o desenvolvedor sabe exatamente onde estão os riscos.
O que muda para o Android e para os usuários?
Para o usuário final, a mudança deve ser imperceptível. O Rust Binder foi projetado para ser transparente para o espaço do usuário — os aplicativos Android continuam enviando e recebendo as mesmas mensagens, sem qualquer alteração.
O que muda é a confiabilidade do sistema. Com um driver mais seguro, menos vulnerabilidades são introduzidas, e as atualizações de segurança podem ser aplicadas de forma mais ágil.
Para os desenvolvedores, a manutenção do código se torna mais simples e menos arriscada.
A transição também sinaliza um compromisso de longo prazo da Google com o Rust no kernel. O Android 16 já utiliza o Rust Binder como padrão, e a empresa tem investido pesadamente na linguagem.
Isso não significa que o C será abandonado — ele continua sendo a linguagem predominante do kernel —, mas abre caminho para que mais drivers críticos sejam migrados.
FAQ — Perguntas frequentes
O Binder é o mecanismo de comunicação entre processos (IPC) do Android. Ele permite que aplicativos e serviços do sistema troquem dados de forma segura e eficiente. Sem o Binder, a arquitetura modular do Android simplesmente não funcionaria.
2. O Rust Binder já está disponível para uso?
Sim. O Rust Binder foi upstreamado no Linux 6.18 e já roda em dispositivos Android. A remoção do driver C está prevista para o ciclo do Linux 7.4.


Nenhum comentário:
Postar um comentário