Présentation du projet

Cloudflare, VoidZero et Max Schwenk (Owner.com) ont lancé tsrs, une implémentation du compilateur TypeScript écrite en Rust. Le projet s’inscrit dans la chaîne d’outils Oxc et bénéficie d’une collaboration étroite avec l’équipe officielle de TypeScript, qui conserve la responsabilité du design du langage. L’objectif affiché est de réduire le temps d’attente des développeurs lors de la vérification de code, tout en élargissant les environnements de développement à des contextes à faible ressources, comme le navigateur.

Performances et consommation mémoire

Les premiers benchmarks montrent que tsrs atteint jusqu’à 8 fois la vitesse du compilateur TypeScript 7.0 lorsqu’on utilise le même nombre de workers de vérification de types, tout en consommant environ 70 % de mémoire en moins. Pour mettre ces chiffres en perspective, la version bêta 7.1 de TypeScript est déjà 2,5 fois plus rapide que la 7.0, et certaines de ses optimisations proviennent directement de tsrs. Les tests ont été réalisés avec une configuration identique à celle de TypeScript, afin d’éviter les biais liés à des machines plus puissantes ou à des options non‑standard.

Architecture et choix technologiques

Rust a été choisi principalement pour sa capacité à générer du WebAssembly (Wasm) avec une empreinte mémoire très faible. Contrairement à Go, dont le ramasse‑miettes doit être embarqué dans le module Wasm, le modèle de gestion de mémoire de Rust permet des interactions directes entre l’hôte et le guest, ce qui rend le port particulièrement adapté aux environnements Cloudflare Workers et aux applications côté client. La prise en charge native de Rust dans les Workers, via le nouveau target wasm‑bindgen, ouvre la voie à des pipelines de construction et de déploiement exécutés entièrement dans des boucles serrées, avec un coût mémoire minimal.

Le processus de maintenance s’inspire du modèle utilisé pour Vinext. Chaque matin, un agent analyse les changements du dépôt TypeScript, crée des tickets de suivi et, chaque soir, une matrice de compatibilité est régénérée en exécutant la suite de tests de TypeScript contre le code de tsrs. En cas de divergence, les agents reproduisent le problème, portent les tests pertinents et proposent des correctifs, garantissant ainsi une synchronisation quasi‑temps réel avec l’upstream.

npm install tsrs
npx tsrs

Perspectives d’évolution

Les développeurs de Cloudflare envisagent d’intégrer tsrs à d’autres outils de la plateforme, comme le linter Oxlint, afin de proposer des règles de linting conscientes du typage. Le projet prévoit également la fusion de tsc‑rs et de tsrs en un seul paquet complet, incluant le support du Language Server Protocol (LSP) et des mappers de contenu. À terme, l’objectif est de livrer une version stable où les différences avec l’implémentation officielle de TypeScript seront réduites à un minimum, tout en continuant à contribuer les gains de performance découverts dans le port Rust à la base de code TypeScript.