Présentation
ts-rust (ou tsc‑rs) est une implémentation expérimentale du compilateur officiel de TypeScript 7, traditionnellement écrit en Go, entièrement réécrite en Rust. Le projet se base sur la révision 673a5f17d713 du dépôt Microsoft/TypeScript, datée du 29 septembre 2026, et propose le même interface en ligne de commande (tsc), le même serveur de langage et la même API que la version native.
Architecture et portage
Le code source, généré principalement par des modèles de langage (GPT‑5.6, GPT‑6 Astra, Claude Opus 5.5), reproduit les algorithmes du compilateur Go sans modification fonctionnelle. Le processus a nécessité plus de 1,3 million de lignes de Rust écrites sur plusieurs mois. Le portage a été réalisé en deux phases de coût : d’abord plus de 420 000 $ de tokens OpenAI, puis, après optimisation du workflow, environ 24 000 $ de tokens Claude sur deux semaines, soit un facteur dix de réduction.
npm install -D tsc-rs
npx tsc-rs -p tsconfig.jsonLe paquet npm tsc-rs évite les conflits avec le paquet officiel typescript. Des archives autonomes sont distribuées pour Linux x64 (binaire statique) et macOS arm64 ; les cibles Windows et Linux arm64 restent en attente.
Performances et compatibilité
Le port a passé les 181 711 tests du compilateur Go, confirmant une compatibilité fonctionnelle complète sur les jeux de tests publics. Sur un panel de 60 projets open‑source, le temps de vérification de type est en moyenne de moitié de celui observé avec la version Go, selon une moyenne géométrique. Cette amélioration provient de l’optimisation du runtime Rust et de l’absence de surcharge liée au garbage collector Go.
Le service de diagnostics Effect (codes 377xxx) est intégré, ce qui permet aux projets utilisant @effect/language-service de bénéficier des mêmes diagnostics sans compiler séparément. En revanche, les fonctionnalités d’édition du serveur de langage – correctifs rapides, refactorisations, survols, complétions – ne sont pas encore portées.
Limitations et disponibilité
Le projet reste en version « early release ». Bien que les tests indiquent 100 % de compatibilité sur les projets réels testés, aucune garantie n’est fournie pour des scénarios non couverts. Le support multiplateforme est incomplet : Windows et Linux arm64 ne sont pas encore fournis. Le code a été généré sans relecture humaine approfondie, ce qui implique un risque de bugs subtils ou de comportements non documentés. Les utilisateurs sont invités à valider leurs pipelines CI avant de remplacer le compilateur officiel.