Bun reescreve 535 mil linhas de Zig em Rust em quatro meses e elimina vazamentos

O Bun migrou 535.496 linhas de Zig para Rust em quatro meses e lançou a versão 1.4.0 em agosto de 2026 com 128 bugs antigos resolvidos e vazamentos de memória nativa endereçados, segundo a cobertura do InfoQ. O processo, conduzido por Jarred Sumner com assistência de IA, reduziu de cerca de um ano para quatro meses o tempo estimado de reescrita por uma equipe humana.
Por que a reescrita saiu do papel
Sumner afirmou que grande parte dos bugs do Bun vinha de use-after-free, double-free e esquecimento de liberar memória em caminhos de erro. Em Rust seguro, esses casos viram erros de compilação e contam com limpeza automática via Drop — um ciclo de feedback melhor do que depender de guias de estilo.
Historicamente, reescritas são consideradas má ideia. No caso do Bun, uma migração manual das 535.496 linhas de Zig congelaria correções de bugs, segurança e novas funcionalidades por cerca de um ano. O fator que destravou o experimento foi a suíte de testes do runtime estar escrita em TypeScript, o que a torna independente da linguagem de implementação. Após uma semana testando se o modelo da Anthropic conseguiria portar o código para Rust, Sumner decidiu prosseguir com a migração.
Como o port assistido por IA foi executado
O port foi feito de uma vez, com uma versão pré-release do Claude Fable 5 orquestrada em aproximadamente 50 workflows dinâmicos. O código Zig era transpilado para Rust — possivelmente usando Rust inseguro, para refatoração posterior — e validado contra a suíte de testes existente, com mais de um milhão de assertivas.
Dois arquivos foram apontados como fatores críticos de sucesso: PORTING.md, que descreve o mapeamento entre padrões Zig e Rust, e LIFETIMES.tsv, com o tempo de vida de cada campo de struct. O arranjo separava papéis: o agente implementador não revisava, e os revisores não implementavam. Dois revisores adversariais rodavam em janelas de contexto isoladas, com acesso apenas aos diffs, para encontrar bugs e divergências de comportamento; problemas eram encaminhados a um agente corretor.
A execução usou quatro shards de workspace, cada um com 16 agentes, totalizando 64 instâncias do Claude em paralelo. No pico, o sistema gerou cerca de 1.300 linhas de código por minuto e registrou até 695 commits em uma hora. O custo em tokens foi de 165 mil dólares, contra a estimativa de três engenheiros com contexto completo do código por cerca de um ano.
Resultados e regressões encontradas
O Bun v1.4.0 resolveu 128 bugs presentes na v1.3.14. Testes de bundling em processo com 2.000 execuções consecutivas de Bun.build() estabilizaram em 609 MB, em vez de ultrapassar 6,7 GB. A vazão HTTP aumentou entre 2% e 5%.
O port mecânico também introduziu 19 regressões semânticas sutis, ligadas a similaridades de sintaxe entre Zig e Rust. Foram feitas 11 rodadas de revisão de segurança com Claude Code Security, e fuzzing contínuo de todos os parsers do Bun gerou 15 pull requests adicionais.
Ressalvas e o que fica de fora do teste
Andrew Kelley, criador do Zig, publicou uma crítica intitulada “My Thoughts on the Bun Rust Rewrite”. Para ele, a discussão apresentada cria uma falsa dicotomia entre guia de estilo e recursos de linguagem: o principal fator para eliminar bugs continua sendo dedicar recursos de engenharia ao problema.
Kelley também questionou a confiança depositada na suíte de testes: se ela não era suficiente para pegar bugs no código Zig, por que seria suficiente para aprovar um milhão de linhas de código não revisado? A crítica toca em uma limitação real do processo: passar em mais de um milhão de assertivas não garante equivalência semântica completa, e as 19 regressões só apareceram porque houve validação adicional após a suíte estar verde.
A reescrita assistida por IA faz sentido quando existe uma suíte de testes extensa, arquivos de mapeamento claros e fuzzing paralelo. Ela não substitui revisão humana, revisão de segurança nem validação de comportamento: como a nota do InfoQ mostra, esses mecanismos foram o que separou a migração concluída de um port mecânico com falhas ocultas.
Leia também
- Desenvolvimento
Rust 1.99 estabiliza funções variádicas C e APIs de layout para ponteiros brutos
3 min de leitura - Desenvolvimento
Perplexity troca DynamoDB por CobbleDB em Rust e reduz latência em 5x
4 min de leitura - Desenvolvimento
Cloudflare reduz 100 TB de memória no cache DNS 1.1.1.1 com novo layout em Rust
3 min de leitura
Fontes

Fundador da DEVDINIZ
Software em produção
51 ferramentas gratuitas, direto no navegador
Utilitários para CPF, CNPJ, JWT, JSON, regex, cores e mais. Processamento local, sem cadastro e sem conta — a mesma engenharia que sustenta o que escrevemos aqui.