Contexte et objectifs

Le compilateur officiel TypeScript, version 7.0, est largement utilisé dans les pipelines CI/CD, mais il reste gourmand en temps de compilation et en mémoire, surtout pour de gros monorepos. Cloudflare et VoidZero ont lancé tsrs, une ré‑implémentation en Rust, afin de réduire ces coûts et d’exploiter les capacités de WebAssembly pour les environnements de développement en ligne.

Architecture de tsrs et utilisation de Rust

tsrs reproduit les étapes classiques du compilateur : analyse lexicale, parsing, vérification de type et génération de code JavaScript. En Rust, chaque phase bénéficie du modèle d’emprunt et de la gestion de la mémoire sans ramasse‑miettes, ce qui limite les allocations temporaires. Le projet compile également en WebAssembly, ce qui permet d’exécuter le compilateur directement dans le navigateur ou sur des appareils embarqués, sans dépendance à un runtime Node.js.

Benchmarks et analyse des performances

Les premiers tests montrent que tsrs est jusqu’à 8 fois plus rapide que le compilateur TypeScript 7.0 sur des projets de taille moyenne, et consomme environ 70 % moins de mémoire. Ces gains proviennent principalement de l’exécution native du code Rust, qui évite l’interprétation JavaScript du moteur V8, et de la réduction des copies de données grâce aux structures de données en‑place. Les mesures ont été réalisées avec les mêmes sources et options de compilation, garantissant une comparaison directe.

Implications et limites

La compatibilité avec la spécification officielle reste un enjeu : l’équipe de tsrs collabore avec les mainteneurs de TypeScript pour aligner les comportements et éviter les divergences de syntaxe ou de typage. Si le port Rust ouvre la voie à des environnements de développement plus légers, il dépend actuellement d’une version bêta et peut présenter des écarts dans la prise en charge de nouvelles fonctionnalités du langage. Les équipes DevOps devront donc valider la stabilité de tsrs dans leurs pipelines avant de le remplacer complètement.