Langue

Code

Migration du runtime Copilot vers Rust : 120 000 dollars de tokens IA

GitHub a achevé la migration du runtime Copilot vers Rust en septembre 2026 : des agents IA ont écrit l'essentiel de plus de 800 000 lignes de Rust de production en 14,5 semaines. Selon The Register, le portage a coûté environ 120 000 dollars de tokens IA, plus environ trois semaines de travail d'un développeur, et GitHub indique qu'un scénario de démarrage mesuré est passé de 5,25 secondes à 292 millisecondes. Pour les entreprises qui ont de gros codes legacy, c'est un cas mesuré d'agents qui mènent une réécriture qui demandait autrefois toute une équipe.

Par Mike Mozg4 min de lecture

Pourquoi GitHub devait sortir le runtime de TypeScript

Le runtime d'agent Copilot est le moteur de la CLI GitHub Copilot, de l'application Copilot, du Copilot SDK et de l'agent cloud Copilot. Il fait aussi tourner VS Code, Visual Studio, Excel, Outlook, PowerPoint et Word. Il était écrit en TypeScript sur Node.js et le moteur V8, une pile conçue pour développer vite plutôt que pour démarrer vite ou densifier les serveurs.

Ce choix est devenu coûteux à mesure que le runtime se diffusait. Chaque application qui utilisait le SDK devait lancer un processus distinct pour héberger Node.js et V8. Selon GitHub, cela ajoutait environ 100 Mo de mémoire de travail par client, faisait passer chaque événement et chaque message par une frontière entre processus, et un plantage de Node emportait la session avec lui.

Ce que GitHub a construit à la place

GitHub a remplacé le runtime par une bibliothèque Rust native que les applications hôtes peuvent intégrer directement via une ABI C, un mode hors processus restant disponible. Le Copilot SDK conserve des interfaces propres à chaque langage pour TypeScript, Python, Go, .NET, Java et Rust.

« Il ne s'agit en aucun cas d'affirmer que tout gros programme TypeScript devrait passer à Rust. » Stephen Toub, Distinguished Engineer chez Microsoft, à propos du portage

Stephen Toub explique que les exigences de l'équipe étaient l'intégration via une ABI C, une faible surcharge au démarrage et en régime établi, et une consommation de ressources prévisible.

Comment les agents ont fait le travail au quotidien

Le portage s'est fait de façon progressive plutôt qu'en une seule bascule. Les composants TypeScript ont été remplacés un à un par du Rust, reliés par une couche de compatibilité temporaire pour que les tests de bout en bout existants puissent exercer le nouveau code. Cette couche a compté jusqu'à 2 019 exports internes et 3 356 points d'appel TypeScript avant d'être supprimée. Le travail a été livré en 128 pull requests, et GitHub a publié 135 versions pendant la migration, dont 35 stables et 100 préversions.

Copilot a réécrit Copilot, avec plusieurs modèles, dont GPT-5.6 Sol et Claude Opus 4.8, pour différentes parties du travail. Les agents ont passé plus de temps à rassembler des informations qu'à écrire du code. Le fichier le plus difficile, session.ts, comptait plus de 30 000 lignes de TypeScript. Sa session de portage a duré 25 heures : elle a passé 56 minutes à lire la documentation, effectué 122 appels d'outils et lancé 15 sessions filles qui se coordonnaient entre elles. GitHub a enregistré 4 478 vérifications de compilation directes, dont 87,1 % ont abouti sans erreur.

Ce que la migration a mesuré

GitHub et The Register font état de ces résultats :

  • Taille : au 21 août, le runtime comptait 832 378 lignes de Rust de production et 468 689 lignes de tests unitaires en Rust. Les agents ont converti environ 430 000 lignes de TypeScript, contre une estimation d'environ 130 000 début mai 2026.
  • Démarrage : un scénario de démarrage du client, de création de session et d'échange unique est passé de 5,25 secondes à 292 millisecondes avec le runtime Rust intégré dans le processus.
  • Débit : sur 1 000 cycles de vie de session à un échange répartis sur 100 pipelines concurrents, TypeScript en a traité 7,55 par seconde et Rust intégré 120 par seconde, soit une accélération de 15,9 fois.
  • Mémoire : un lot de 10 clients a utilisé 1 383 Mo avec TypeScript et 126 Mo avec Rust.
  • Coût : environ 120 000 dollars de tokens IA, plus environ trois semaines de travail d'un développeur.

Où les agents se sont trompés

La réécriture n'a pas été sans accroc. The Register fait état de quelques dizaines de régressions, du code qui compilait mais ne se comportait plus comme avant. Stephen Toub les attribue à des sémantiques ambiguës, à la dérive des branches, à des fonctions non portées et à du code de remplacement au comportement différent. Il écrit que « si ça compile, c'est correct » n'est utile que comme plaisanterie.

La compilation, les tests et la relecture humaine ont repéré ces problèmes en cours de route. La restructuration du runtime lui-même a été laissée hors du périmètre et constitue l'étape suivante.

Ce que cela change pour les entreprises qui ont du code legacy

L'enjeu, pour une entreprise, c'est la réécriture pour laquelle personne n'a d'équipe disponible. GitHub affirme que le projet aurait pris un ou deux ans à toute une équipe de développeurs avant les agents, et qu'il a été mené à bien en quelques mois, principalement par un seul développeur, pendant que le reste de l'équipe continuait d'ajouter des fonctions.

La méthode compte autant que les agents : de petites pull requests, un pont temporaire entre l'ancien et le nouveau code, les tests existants et une personne qui relit chaque modification. Une entreprise qui envisage son propre portage peut comparer ses coûts à un chiffre public, environ 120 000 dollars de tokens pour ce chantier.

Questions et réponses

Combien de temps a pris le portage du runtime Copilot vers Rust ?

Environ 14,5 semaines, livrées en 128 pull requests pendant que GitHub continuait de publier le runtime.

Combien a coûté la réécriture assistée par IA ?

The Register fait état d'environ 120 000 dollars de consommation de tokens IA, plus environ trois semaines de travail d'un développeur.

Le compilateur Rust a-t-il repéré les erreurs des agents ?

Seulement une partie. Le compilateur confirme que le code est du Rust valide, pas qu'il conserve l'ancien comportement : ce sont les tests et la relecture humaine qui ont trouvé les régressions qui compilaient sans erreur.

Le regard de MOZGII

Comment nous le construirions

La leçon que nous tirerions de ce cas, c'est que les agents étaient la partie bon marché. Ce qui a fait fonctionner l'ensemble, c'est la suite de tests qui existait déjà, le pont qui permettait à l'ancien et au nouveau code de tourner côte à côte, et l'ingénieur qui relisait les modifications.

Si nous portions une grosse base de code avec des agents, nous commencerions par capturer dans des tests aux frontières le comportement qui compte : entrées, sorties, cas d'erreur, annulations et nouvelles tentatives. Nous porterions un module à la fois derrière un pont temporaire, livrerions chaque morceau dans une version normale et garderions l'ancien module prêt pour revenir en arrière. Les agents liraient, rédigeraient et lanceraient les vérifications. Une personne serait responsable de chaque fusion.

Le système casserait là où le comportement n'a jamais été écrit. Un compilateur confirme que le code est valide, pas qu'il fait ce que faisait l'ancien code, et les régressions de ce cas venaient précisément de ces trous. Nous rejouerions des requêtes de production enregistrées sur les deux versions et comparerions les réponses.

Le seul indicateur que nous suivrions est le nombre de régressions trouvées après publication par module porté, à côté de la dépense en tokens par module. Ensuite, nous appliquerions la même méthode à la restructuration du code lui-même, l'étape que GitHub a gardée pour plus tard.

Sources

D’où viennent les faits de cet article.

  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

Nous utilisons des cookies

Nous collectons des données d'utilisation anonymes pour améliorer MOZGII. Aucune donnée n'est collectée sans votre autorisation. Politique de confidentialité · Politique de cookies