Copilot reescribió su propio runtime de TypeScript a Rus

Copilot reescribió su propio runtime de TypeScript a Rus

En pruebas, la nueva implementación tarda solo decenas de milisegundos en arrancar y usa mucha menos memoria.

image

GitHub reescribió por completo el entorno de ejecución de Copilot de TypeScript a Rust, y la mayor parte del nuevo código fue creada por agentes de IA del propio Copilot. La migración tomó alrededor de tres meses y medio y convirtió las originalmente estimadas 130 000 líneas de TypeScript en 832 378 líneas de código en funcionamiento en Rust.

El entorno de ejecución está en la base de GitHub Copilot CLI, la aplicación Copilot y el conjunto de herramientas de Copilot, y también se utiliza en VS Code, Visual Studio, Copilot Studio y en algunos productos de Microsoft 365. GitHub decidió abandonar la anterior combinación de TypeScript, Node.js y el motor V8 debido al consumo de memoria, a los retrasos en el arranque y a la dificultad para incrustar Copilot directamente en otras aplicaciones.

El trabajo comenzó en mayo de 2026. La estimación inicial de 130 000 líneas quedó pronto desactualizada: los desarrolladores siguieron modificando el proyecto durante la migración, y partes de código se trasladaron desde otros componentes al entorno de ejecución. Como resultado, durante el proyecto se migraron alrededor de 430 000 líneas de TypeScript en funcionamiento, aunque el volumen final en Rust resultó casi el doble.

El equipo no creó una versión nueva por separado ni cambió a los usuarios con una sola actualización. Los componentes se tradujeron a Rust por fases directamente en la rama principal de desarrollo. En 14,5 semanas GitHub fusionó 128 solicitudes de extracción relacionadas con la migración y publicó 135 versiones, incluidas 35 estables. Para el 21 de agosto la parte operativa del entorno de ejecución ya estaba 100% compuesta por Rust.

La elección de Rust no se explica solo por la velocidad. GitHub necesitaba código ejecutable nativo con una sobrecarga baja, un consumo de recursos predecible y la capacidad de funcionar dentro del proceso de otra aplicación. Un argumento adicional fue la seguridad de la memoria: Rust evita muchos errores de manejo de memoria en tiempo de compilación, aunque no exime al programa de errores lógicos y de otras clases de vulnerabilidades.

En pruebas concretas la diferencia con la arquitectura anterior fue muy notable. Crear el cliente, iniciar la sesión, realizar una llamada al modelo y terminar antes llevaba 5,25 s, mientras que al ejecutar el nuevo entorno dentro del proceso tomó aproximadamente 55 ms. En otra prueba el rendimiento aumentó de 7,55 a 120 sesiones cortas por segundo. GitHub advierte por separado que estas cifras corresponden a escenarios concretos y no implican que Copilot se acelere de forma universal 16 veces.

También se redujo el consumo de memoria. En la prueba con diez clientes la implementación antigua aumentaba la memoria usada en aproximadamente 1 383 MB. Rust ejecutado como proceso independiente requería alrededor de 247 MB, y la variante embebida alrededor de 126 MB. Esta última cifra es un 91% inferior a la original.

La escala del trabajo es especialmente evidente por la actividad de los agentes de IA. Los registros del proyecto contienen más de 1,85 millones de ejecuciones de herramientas, y el 61% de los aproximadamente 1,13 millones de llamadas registradas fueron realizadas por agentes secundarios. El desarrollador Stephen Taub estimó su participación directa en aproximadamente tres semanas de trabajo: en lugar de escribir manualmente la mayor parte del código, tuvo que delimitar las tareas, revisar las soluciones, supervisar las pruebas y devolver a los agentes las partes incompletas.

La automatización no libró al proyecto de errores. Para el 14 de septiembre el equipo detectó varias decenas de regresiones, incluidas discrepancias en el comportamiento entre la implementación antigua y la nueva, problemas con el estado y el tiempo de vida de los objetos, transferencias incompletas de funciones y errores en los límites entre componentes. Todas las regresiones conocidas hasta entonces se corrigieron, y parte de los problemas se detectaron antes de las versiones estables.

El trabajo de la IA consumió alrededor de 136,3 mil millones de tokens, la gran mayoría reutilizados desde la caché. La factura por tokens fue de aproximadamente 120 000 USD. GitHub subraya que esa cifra no refleja el coste total del proyecto, ya que hay que sumar el trabajo humano y la participación de otros ingenieros en la arquitectura, el empaquetado, la revisión y la integración del código.

Según Taub, sin agentes de IA una reescritura similar de un sistema grande y en funcionamiento podría haber requerido un equipo dedicado y llevar uno o dos años. Al mismo tiempo, la experiencia de la migración mostró los límites de la automatización actual: los agentes manejaron bien grandes volúmenes de migración, pero requirieron control constante, pruebas integrales estrictas y verificación independiente de que la nueva implementación realmente conserva el comportamiento anterior.