Contexte et objectifs
Face à la croissance des bases de code JavaScript/TypeScript, les équipes de Cloudflare et VoidZero, en partenariat avec le groupe TypeScript, ont lancé tsrs, un port complet de TypeScript écrit en Rust. Le projet s’inscrit dans l’Oxc toolchain, qui vise à fournir des outils de compilation plus performants et plus sûrs. L’objectif principal est de réduire le temps de vérification de type et la consommation mémoire, deux goulots d’étranglement majeurs dans les pipelines CI/CD de grande échelle.
Architecture et performances de tsrs
tsrs reproduit le comportement du compilateur TypeScript 7.0 en utilisant le moteur de parsing et de typage d’Oxc, entièrement réécrit en Rust. Les benchmarks internes, réalisés avec des configurations identiques à celles de TypeScript, montrent des gains allant jusqu’à 8 fois plus rapides pour la phase de vérification et une réduction d’environ 70 % de la consommation mémoire. Ces mesures proviennent de tests sur des projets open‑source de taille moyenne (≈200 k Lignes de code) et sur des monorepos internes contenant plusieurs dizaines de paquets. Le cache de compilation XLA, intégré à la chaîne Rust, permet de réutiliser les artefacts d’analyse entre les builds, limitant les recomputations.
Le port Rust exploite les garanties de sécurité de la langue : aucune allocation non contrôlée, gestion stricte du lifetimes, et absence de garbage collector. Cette approche minimise les fuites de mémoire observées dans le moteur JavaScript V8 lors de longues sessions de type‑checking. En outre, le projet fournit un npm package expérimental, permettant aux développeurs d’intégrer tsrs dans leurs workflows sans modifier leurs scripts de build.
Analyse des impacts et limites
Les gains de performance se traduisent directement en réduction du temps de feedback pour les équipes de développement, notamment dans les environnements CI où les vérifications de type représentent souvent 30 % du temps total de build. Une consommation mémoire moindre permet également d’exécuter plusieurs jobs parallèles sur des runners de petite taille, réduisant les coûts d’infrastructure. Cependant, le projet reste en phase early access : certaines fonctionnalités de TypeScript 7.1, comme les import attributes ou le nouveau target ES2026, ne sont pas encore entièrement supportées, et des différences de comportement subsistent dans les cas de types complexes ou de décorateurs.
La compatibilité avec l’écosystème existant dépend de la capacité du port à reproduire fidèlement les diagnostics et les messages d’erreur du compilateur officiel. Les équipes recommandent donc une phase de validation progressive, en commençant par des projets non critiques. Si les écarts sont résolus, tsrs pourrait devenir le moteur de référence pour les grandes organisations cherchant à optimiser leurs pipelines TypeScript, tout en conservant la sécurité et la robustesse offertes par Rust.