Le projet de navigateur open source Ladybird vient de franchir une étape majeure : après avoir renoncé à Swift, il migre son moteur JavaScript vers Rust — avec l’aide de Claude Code et Codex. Résultat : 25 000 lignes de code en deux semaines, zéro régression. On fait le point sur son développement avec vous.
Comme nous vous l’expliquions en juillet 2024, Ladybird ambitionne de proposer un navigateur web totalement indépendant de Chromium, WebKit et Gecko/Firefox, avec son propre moteur bâti from scratch. Prévu pour fin 2026 (en version alpha, ne vous réjouissez pas trop vite), il est financé exclusivement par des dons, sans accord commercial. Un projet aussi rare qu’ambitieux.
Pourquoi Rust plutôt que Swift ?
Pendant un temps, l’équipe avait envisagé Swift pour remplacer le C++. Problème : l’interopérabilité avec le C++ n’a jamais été satisfaisante, et le support en dehors de l’écosystème Apple restait trop limité. Rust, lui, dispose d’un écosystème bien plus mature pour la programmation système, et de nombreux contributeurs le connaissent déjà. Firefox et Chromium l’ont d’ailleurs déjà intégré dans leurs bases de code.
En 2024, le fondateur Andreas Kling avait pourtant écarté Rust, jugé peu adapté au modèle objet hérité des années 1990 du web (garbage collection, hiérarchies d’héritage profondes…). Un an plus tard, la décision pragmatique s’impose.
25 000 lignes de Rust en deux semaines
La première cible du portage est LibJS, le moteur JavaScript de Ladybird. Le lexeur, le parseur, l’AST et le générateur de bytecode ont été convertis en Rust avec l’aide de Claude Code et Codex — mais dans une approche pilotée par l’humain, pas en génération autonome. Andreas Kling a dirigé chaque étape : des centaines de petits prompts pour orienter les agents, suivis de passes de relecture adversariale avec différents modèles pour détecter erreurs et mauvais patterns.
Le bilan : environ 25 000 lignes de Rust, zéro régression sur les 52 898 tests de la suite test262 et les 12 461 tests de régression propres à Ladybird. Aucune régression de performance non plus sur les benchmarks JavaScript. Le même travail aurait pris plusieurs mois en manuel.
Le code obtenu porte encore une forte empreinte C++ — c’est voulu. La priorité absolue de ce premier passage est la compatibilité avec le pipeline C++ existant, jusqu’à produire un bytecode identique octet par octet. L’idiomatic Rust viendra dans un second temps.
Et maintenant ?
Ce portage ne devient pas le chantier principal du projet. Le développement continue en C++, et la migration vers Rust avancera en parallèle, sous la supervision de l’équipe centrale. Ladybird reste disponible sous licence BSD-2-Clause sur GitHub, avec des instructions de compilation pour les plus courageux.
Le site officiel : ladybird.org.

