Contexte et objectifs

Le moteur d’exécution qui alimente GitHub Copilot et de nombreux services Microsoft était initialement écrit en TypeScript et s’appuyait sur Node.js/V8. Bien que ce choix facilite le prototypage, il limite le démarrage rapide et la densité de serveurs à grande échelle. Microsoft a donc décidé de réécrire le runtime en Rust, un langage réputé pour son empreinte mémoire réduite et son exécution native.

Processus de portage automatisé

Le projet a été conduit presque entièrement par des agents d’IA. Environ 120 000 $ de tokens d’OpenAI ont été consommés, soit le coût principal du portage, complété par trois semaines de travail humain. Le processus a généré 135 releases sur 14,5 semaines, avec une moyenne de 1,3 pull‑request de portage par jour. Au total, 430 000 lignes de TypeScript ont été traduites en 800 000 lignes de Rust, chaque module étant migré séparément sans refactorisation globale.

Bilan de performance

Les mesures montrent un gain de 15,9× en débit : le runtime TypeScript exécutait 7,55 cycles de session par seconde contre 120 cycles en Rust. En mémoire, un lot de 10 clients consommait 1 383 Mo avec TypeScript et seulement 126 Mo après la réécriture, soit une réduction de plus de 90 %. Le code Rust reste en‑process, éliminant le besoin de processus d’arrière‑plan requis par l’implémentation Node.js.

Limites et perspectives

Malgré les gains, le portage a introduit plusieurs dizaines de régressions, illustrant les limites actuelles des LLM à comprendre les subtilités de Rust. Les agents ont passé plus de temps à collecter des informations qu’à écrire du code, adoptant une approche itérative d’inspection et d’ajustement. La prochaine étape consiste à optimiser la structure globale du runtime, au‑delà du simple remplacement module par module, afin de maximiser les avantages de Rust.