100 000 lignes de TypeScript vers Rust : retour d’expérience concret avec Claude Code
(blog.vjeux.com/2026)L’ancien ingénieur de Facebook Christopher Chedeau (Vjeux) a mené une expérience consistant à porter le moteur de combat de Pokemon Showdown (environ 100 000 lignes de TypeScript) vers Rust en s’appuyant sur Claude Code
Objectifs du projet
- Construire un oracle rapide (système de référence) pour l’entraînement d’une IA de combat Pokemon
- Implémentation TypeScript existante → trop lente (impossible d’exécuter des millions de simulations de combat)
- Langage cible : Rust (hautes performances) → mais aucune expérience préalable en Rust
Principaux résultats
- Portage d’environ 100 000 lignes terminé en 1 mois (environ 2 à 4 semaines de travail effectif)
- Environ 5 000 commits générés
- Vitesse d’exécution améliorée de 3,5x
- Taux de concordance de 99,96 % lors des tests différentiels (sur 2 millions de combats aléatoires)
- Les 0,04 % restants seraient dus à des bugs dans le code TypeScript d’origine
Stratégie clé du succès
- Adoption des tests différentiels (differential testing)
- Exécution simultanée de la version TypeScript d’origine et de la version Rust → comparaison des résultats
- En cas de divergence → affichage des logs à Claude et demande de correction
- Validation possible même avec une connaissance presque nulle de la syntaxe Rust
Principales difficultés rencontrées par Claude
- Le portage fichier par fichier fonctionne bien ↔ des problèmes fréquents apparaissent lors de l’intégration entre fichiers
- Exemple : le même concept (
move) est défini dans des structures différentes
- Exemple : le même concept (
- Limite de la fenêtre de contexte → perte d’informations importantes lors des résumés intermédiaires
- Tendance à vouloir “faire mieux” → ignore les consignes explicites de “portage ligne par ligne” et tente du refactoring → multiplication des bugs
- Demandes d’optimisation → les plans semblaient excellents, mais les gains réels étaient quasi nuls (et certains changements ont même ralenti l’exécution)
Un hack de workflow inhabituel
- Automatisation des demandes d’approbation utilisateur de Claude
- Avec AppleScript, appui automatique sur Entrée toutes les quelques secondes → exécution autonome 24 h/24
- (Risque de sécurité assumé, car il s’agissait d’un oracle à usage ponctuel)
Où en sont les outils de codage IA aujourd’hui ?
- Transformations mécaniques et portages massifs → très efficaces
- Optimisation des performances, conception d’architecture et autres tâches de haut niveau → encore insuffisants
- Débat sur Hacker News
- Sceptiques : code impossible à maintenir, “qui compile seulement”
- Défenseurs : les tests différentiels suffisent à le rendre fiable + gain de temps énorme par rapport à un humain
3 enseignements pour la pratique
- Un système de tests automatisés rigoureux est indispensable (sans tests différentiels, la probabilité d’échec est très élevée)
- Des consignes claires et étroitement cadrées sont les plus efficaces (“portage ligne par ligne” O vs “améliore ça” X)
- L’IA n’est qu’un outil → le développeur doit toujours diagnostiquer les problèmes, formuler les bonnes questions et garder le cap
→ Le cas d’une personne ne connaissant pas Rust qui parvient à porter en un mois une base de code de 100 000 lignes à un niveau exploitable en pratique constitue à la fois une preuve de la viabilité du codage assisté par IA et une expérience représentative qui en montre clairement les limites
Aucun commentaire pour le moment.