Idioma

Programação

Migração do Copilot para Rust custou US$ 120.000 em tokens

O GitHub concluiu a migração do runtime do Copilot para Rust em setembro de 2026, com agentes de IA escrevendo a maior parte de mais de 800.000 linhas de Rust de produção em 14,5 semanas. O The Register informa que a migração custou cerca de US$ 120.000 em tokens de IA, mais cerca de três semanas do tempo de um desenvolvedor, e o GitHub diz que um cenário medido de inicialização caiu de 5,25 segundos para 292 milissegundos. Para empresas com grandes bases de código legado, é um caso medido de agentes fazendo uma reescrita que antes exigia uma equipe inteira.

Por Mike Mozg4 min de leitura

Por que o GitHub teve de tirar o runtime do TypeScript

O runtime de agentes do Copilot é o motor por trás do GitHub Copilot CLI, do aplicativo Copilot, do Copilot SDK e do agente de nuvem do Copilot. Ele também alimenta o VS Code, o Visual Studio, o Excel, o Outlook, o PowerPoint e o Word. Foi escrito em TypeScript sobre Node.js e o motor V8, uma pilha feita para desenvolvimento rápido, não para inicialização rápida nem para servidores densos.

Essa escolha ficou cara à medida que o runtime se espalhava. Cada aplicativo que usava o SDK tinha de iniciar um processo separado para hospedar o Node.js e o V8. O GitHub diz que isso acrescentava cerca de 100 MB de memória de trabalho por cliente, fazia cada evento e mensagem cruzar uma fronteira de processo e significava que uma falha no Node derrubava a sessão.

O que o GitHub construiu no lugar

O GitHub substituiu o runtime por uma biblioteca nativa em Rust que os aplicativos hospedeiros podem incorporar diretamente por uma C ABI, enquanto um modo fora do processo continua disponível. O Copilot SDK mantém interfaces específicas de linguagem para TypeScript, Python, Go, .NET, Java e Rust.

"Isso não é, de modo algum, a afirmação de que todo programa grande em TypeScript deva virar Rust." Stephen Toub, Distinguished Engineer da Microsoft, sobre a migração

Toub escreveu que os requisitos da equipe eram a incorporação por uma C ABI, baixo custo de inicialização e em regime estável, e uso previsível de recursos.

Como os agentes fizeram o trabalho no dia a dia

A migração foi incremental, e não uma grande virada única. Componentes individuais em TypeScript foram substituídos por Rust, ligados por uma camada de compatibilidade temporária para que os testes de ponta a ponta existentes pudessem exercitar o código novo. Essa camada chegou a 2.019 exportações internas e 3.356 pontos de chamada em TypeScript antes de ser removida. O trabalho chegou em 128 pull requests, e o GitHub lançou 135 versões durante a migração, 35 estáveis e 100 de pré-lançamento.

O Copilot reescreveu o Copilot, usando vários modelos, incluindo o GPT-5.6 Sol e o Claude Opus 4.8, para partes diferentes do trabalho. Os agentes gastaram mais tempo reunindo informações do que escrevendo código. O arquivo mais difícil, session.ts, tinha mais de 30.000 linhas de TypeScript. A sessão de migração dele levou 25 horas: passou 56 minutos lendo documentação, fez 122 chamadas de ferramentas e gerou 15 sessões filhas que se coordenavam entre si. O GitHub registrou 4.478 verificações diretas de compilação, e 87,1% foram concluídas sem problemas.

O que a migração mediu

O GitHub e o The Register relatam estes resultados:

  • Tamanho: até 21 de agosto, o runtime tinha 832.378 linhas de Rust de produção e 468.689 linhas de testes unitários em Rust. Os agentes converteram cerca de 430.000 linhas de TypeScript, contra uma estimativa do início de maio de 2026 de aproximadamente 130.000.
  • Inicialização: um cenário de inicialização de cliente, criação de sessão e um único turno caiu de 5,25 segundos para 292 milissegundos com o runtime em Rust incorporado ao processo.
  • Vazão: em 1.000 ciclos de vida de sessão de um turno em 100 pipelines simultâneos, o TypeScript concluiu 7,55 por segundo e o Rust no processo, 120 por segundo, uma aceleração de 15,9 vezes.
  • Memória: um lote de 10 clientes usou 1.383 MB em TypeScript e 126 MB em Rust.
  • Custo: cerca de US$ 120.000 em tokens de IA, mais cerca de três semanas do tempo de um desenvolvedor.

Onde os agentes erraram

A reescrita não foi limpa. O The Register relata algumas dezenas de regressões, códigos que compilavam mas já não se comportavam como antes. Toub as atribuiu a semânticas ambíguas, divergência entre branches, recursos que não foram portados e código de substituição que se comportava de forma diferente. Ele escreveu que "se compila, está correto" só serve como piada.

A compilação, os testes e a revisão humana pegaram esses problemas pelo caminho. A reestruturação do próprio runtime ficou fora do escopo e é o próximo passo.

O que muda para empresas com código legado

A tarefa de negócio aqui é a reescrita que ninguém consegue alocar. O GitHub diz que, antes dos agentes, o projeto teria exigido uma equipe inteira de desenvolvedores por um ou dois anos e, em vez disso, foi concluído principalmente por um único desenvolvedor em poucos meses, enquanto o resto da equipe continuava acrescentando recursos.

O método importa tanto quanto os agentes: pull requests pequenos, uma ponte temporária entre o código antigo e o novo, testes existentes e uma pessoa revisando cada mudança. Uma empresa que avalia a própria migração pode comparar seus custos com um número público, cerca de US$ 120.000 em tokens para este trabalho.

Perguntas e respostas

Quanto tempo levou a migração do runtime do Copilot para Rust?

Cerca de 14,5 semanas, entregues em 128 pull requests enquanto o GitHub continuava lançando o runtime.

Quanto custou a reescrita assistida por IA?

O The Register informa cerca de US$ 120.000 em uso de tokens de IA, mais cerca de três semanas do tempo de um desenvolvedor.

O compilador do Rust pegou os erros dos agentes?

Só alguns. O compilador confirma que o código é Rust válido, não que ele mantém o comportamento antigo, então testes e revisão humana encontraram as regressões que compilavam sem problemas.

A visão da MOZGII

Como nós construiríamos

A lição que tiramos deste caso é que os agentes foram a parte barata. O que fez funcionar foi a suíte de testes que já existia, a ponte que deixou o código antigo e o novo rodarem lado a lado e o engenheiro que revisou as mudanças.

Se estivéssemos migrando uma grande base de código com agentes, primeiro registraríamos em testes, nas fronteiras, o comportamento que nos importa: entradas, saídas, casos de erro, cancelamento e novas tentativas. Migraríamos um módulo por vez atrás de uma ponte temporária, lançaríamos cada peça em uma versão normal e manteríamos o módulo antigo pronto para voltar. Os agentes leriam, redigiriam e rodariam as verificações. Uma pessoa seria dona de cada merge.

Isso falharia onde o comportamento nunca foi escrito. Um compilador confirma que o código é válido, não que faz o que o antigo fazia, e as regressões deste caso vieram exatamente dessas lacunas. Reproduziríamos requisições de produção gravadas nas duas versões e compararíamos as respostas.

A única métrica que acompanharíamos é o número de regressões encontradas depois do lançamento por módulo migrado, ao lado do gasto de tokens por módulo. Depois, aplicaríamos o mesmo método à reestruturação do próprio código, que é o passo que o GitHub deixou para depois.

Fontes

De onde vêm os fatos desta matéria.

  1. 01Github Migrates Copilot Runtime to Rust with AI-Assisted Rewrite - InfoQinfoq.com
  2. 02Microsoft agentically ports Copilot runtime to Rust for $120Ktheregister.com
  3. 03Migrating the GitHub Copilot runtime to Rust, using Copilot - The GitHub BlogLinkedIn iconInstagram iconYouTube iconX iconTikTok iconTwitch iconGitHub icongithub.blog

Usamos cookies

Coletamos dados de uso anônimos para melhorar o MOZGII e sua experiência. Nenhum dado é coletado sem sua permissão. Política de privacidade · Política de cookies