Skip to content
comparisons

Le portage TypeScript en Rust est 3 fois plus rapide, mais est-il prêt ?

La réécriture d’un compilateur pourrait ramener des vérifications de types lentes à des fractions de seconde, et transformer les attentes envers les outils de développement. Mais le chiffre mis en avant cache une question plus difficile : quelle confiance un seul benchmark mérite-t-il ?

Stork editorial team
Le portage TypeScript en Rust est 3 fois plus rapide, mais est-il prêt ?

Le chiffre mis en avant est impressionnant, mais les détails comptent

Le portage TypeScript indépendant en Rust a terminé les exécutions testées en environ 0,2 à 0,5 seconde, une amélioration significative par rapport aux 0,6 à 2,2 secondes de Go et aux 6,6 à 13 secondes de JavaScript. Cela représente une accélération moyenne de 2,5x à 3x par rapport à Go, et jusqu’à 4,4x plus rapide dans les scénarios comportant des erreurs en cascade.

Il est essentiel de noter que ce gain de performance provient d’un portage Rust indépendant, et non du travail officiel de Microsoft sur le compilateur. En juillet dernier, Microsoft a porté le compilateur TypeScript en Go, obtenant une accélération d’environ 10x par rapport à la version JavaScript d’origine. Le portage Rust, qui s’appuie souvent sur des agents d’IA, est une initiative communautaire construite au-dessus de la version Go, et non un remplacement par Microsoft.

Cette distinction est capitale : le compilateur Rust est un développement non officiel impressionnant. Il montre ce qui est possible lorsqu’une base de code est repensée en vue de la performance, souvent avec l’aide de l’IA.

Une accélération spectaculaire sur un seul dépôt, certes volumineux, comme le projet TypeScript lui-même, est un signal fort. Toutefois, ce n’est pas la preuve définitive que tous les projets TypeScript obtiendront automatiquement les mêmes gains spectaculaires. La principale tension réside dans la question de savoir si ces premiers benchmarks se généralisent à des projets de types et de complexités variés.

Quatre tests, un écart de performance saisissant

Les tests de performance ont utilisé le dépôt TypeScript officiel de GitHub, comprenant 793 fichiers et environ 380.000 lignes de code. Ce banc d’essai robuste a permis une comparaison complète à travers quatre scénarios distincts : - Tous les types valides - Une seule erreur de type simple - Type central défaillant avec erreurs en cascade - Types récursifs profonds

Les résultats sont nets. Pour des types valides, JavaScript a mis environ 7 secondes, Go 0,7 seconde, et Rust a accompli la tâche en seulement 0,3 seconde. Lorsqu’un type central était défaillant, déclenchant des erreurs en cascade, JavaScript a enregistré 13 secondes, Go 2,2 secondes, et Rust a terminé en seulement 0,5 seconde. Ces chiffres mettent en évidence un écart de performance constant et significatif.

Globalement, la vidéo indique que Go est environ 9 à 10 fois plus rapide que JavaScript. Rust, de son côté, a offert environ 24 fois la vitesse de JavaScript et près de trois fois celle de Go. Même si les temps arrondis et l’utilisation d’une seule base de code limitent la précision absolue, la hiérarchie des performances est indéniable.

Le portage de TypeScript vers Go réalisé par Microsoft en juillet a apporté des gains substantiels. Cependant, l’implémentation Rust qui a suivi démontre un bond encore plus important, en particulier dans les scénarios complexes de gestion d’erreurs. Les données montrent clairement une nouvelle référence de performance.

Pourquoi le résultat de Rust mérite un examen plus approfondi

Les charges de travail d’un compilateur représentent un test exigeant pour n’importe quel langage, y compris Go ou Rust. La vérification de types implique des relations récursives complexes, la construction de grands graphes de dépendances et la génération de diagnostics qui peuvent se multiplier de façon exponentielle lorsqu’un type central est défaillant. Cette complexité explique pourquoi le compilateur JavaScript a mis jusqu’à 13 secondes dans le scénario « core type broken ».

L’avantage de performance de Rust sur Go, avec une vitesse en moyenne 2,5 à 3 fois supérieure, découle probablement de différences fondamentales en matière de gestion de la mémoire et de surcoût d’exécution. Les abstractions sans coût de Rust, sa disposition explicite de la mémoire et l’absence de ramasse-miettes peuvent limiter les allocations et réduire les défauts de cache, ce qui offre un avantage tangible pour les tâches limitées par le processeur comme la compilation.

L’apparition d’un portage de TypeScript en Rust, facilitée par un développement assisté par l’IA, met en évidence une tendance importante. Les grandes bases de code existantes dotées de suites de tests étendues, comme le dépôt TypeScript sur GitHub, constituent des cibles idéales pour une traduction itérative par des agents de codage. Cette approche permet de générer rapidement des portages fonctionnels, comme le montrent des projets tels que tsrs ; pour en savoir plus, lisez Introducing tsrs: a Port of TypeScript to Rust.

Cependant, la réussite des tests existants ne garantit pas automatiquement une compatibilité complète et ne permet pas d’identifier des différences de comportement subtiles. Si le portage piloté par l’IA est puissant, une validation rigoureuse menée par des humains reste essentielle pour assurer la parité fonctionnelle et préserver l’intégrité de l’implémentation d’origine. La vitesse est indéniable, mais la stabilité à long terme exige un examen attentif.

Cet article vous plaît ? Recevez-en un comme celui-ci chaque matin.

un e-mail par jour · désinscription en deux clics · aucun traqueur tiers

Une victoire en benchmark n’est pas un remplacement direct

Une victoire en benchmark n’est pas un remplacement direct. Avant d’adopter un portage Rust, les développeurs doivent vérifier plusieurs facteurs essentiels. Il est crucial d’évaluer la parité du langage et de l’API du compilateur avec l’implémentation officielle de TypeScript, en veillant à une intégration fluide avec les outils d’édition, les systèmes de build et les sorties de diagnostic existants. Le comportement sur vos propres projets est le test ultime.

Réalisez un essai local équitable, en comparant des options de compilateur identiques entre la version officielle et la version Rust. Incluez des compilations complètes et incrémentales, surveillez l’utilisation de la mémoire et évaluez les performances sur des charges de travail CI représentatives, et pas seulement sur quelques exécutions chronométrées. Cette approche globale révèle la véritable maturité pour la production.

Les résultats impressionnants de ce portage Rust, en particulier son accélération de 3x par rapport à Go, relèvent le niveau en matière de performance des compilateurs. Ces implémentations alternatives incitent l’ensemble de l’écosystème à innover et montrent comment un code natif optimisé peut considérablement améliorer l’expérience des développeurs. Si les chiffres sont convaincants, la maturité pour la production dépend de la confiance et d’une compatibilité totale.

Ignorez ce portage Rust si votre priorité est la stabilité immédiate et la parité fonctionnelle complète avec le compilateur TypeScript officiel de Microsoft. Tant que l’intégration complète et le support de l’écosystème n’ont pas gagné en maturité, la version Rust, gagnante du benchmark, reste une preuve de concept convaincante et non un remplacement direct pour la plupart des environnements de production.

Foire aux questions

Le compilateur TypeScript de Microsoft est-il désormais écrit en Rust ?

Non. La vidéo compare un portage Rust indépendant avec le compilateur JavaScript existant et l’implémentation Go de Microsoft.

Dans les tests de la vidéo, de combien le portage Rust a-t-il été plus rapide ?

Sur le dépôt TypeScript testé, il a été en moyenne environ trois fois plus rapide que Go et environ 24 fois plus rapide que JavaScript.

Qu’a mesuré le benchmark ?

Il a mesuré quatre cas dans le dépôt TypeScript : des types valides, une erreur de type simple, des erreurs en cascade sur un type central, et des types profondément récursifs.

Les équipes doivent-elles remplacer leur compilateur TypeScript par le portage Rust ?

Pas sur la seule base de ces résultats. Les équipes doivent vérifier la compatibilité, la prise en charge des outils et les performances sur leurs propres projets avant de changer.

Found this useful? Share it.

Pour les éditeurs d'outils

Votre outil manque à ce comparatif ?

Ajoutez une entrée Sponsorisée, clairement identifiée, à côté des outils comparés ici, dans les 8 langues où nous publions. Nous vérifions la pertinence avant tout paiement. Ou proposez-le gratuitement et nous décidons sur le mérite.

Ajouter votre outilLe proposer gratuitementLes entrées sponsorisées sont identifiées et ne changent jamais notre classement

Pour les builders

Cette page travaille pour l’outil de quelqu’un d’autre.

Les agents IA la lisent. Des acheteurs y arrivent. Elle répond en huit langues et via MCP. Votre outil peut avoir la sienne — en ligne en 24 heures.