Andreas Kling, le fondateur du navigateur web Ladybird, a annoncé avoir décidé d'utiliser le langage Rust pour le développement du projet et a commencé à réécrire certaines parties de Ladybird dans ce langage. En tant qu'expérimentation, le moteur JavaScript LibJS a déjà été réécrit de C++ en Rust. LibJS a été choisi en raison de sa bonne couverture de tests, facilitant l'évaluation de la qualité du portage.
Pour accélérer le portage, les assistants AI Claude Code et OpenAI Codex ont été mobilisés, ce qui a permis de réécrire le code en deux semaines. La traduction a été effectuée progressivement avec la participation d'un développeur, qui, au cours du processus, a envoyé plusieurs centaines de prompts aux assistants AI, décidant dans quel ordre et quoi porter, ainsi qu'indiquant les exigences pour le code résultant en Rust. Après réception du code dans différents modèles AI, une révision des résultats et une analyse du code pour détecter les erreurs et les solutions douteuses ont été réalisées.
En fin de compte, la version du moteur réécrite en Rust a réussi tous les 52898 tests de compatibilité avec ECMAScript du ensemble test262 et 12461 tests de régression du projet Ladybird. La version en Rust a montré une parfaite correspondance de l'AST généré et du bytecode avec la version en C++, sans régressions détectées jusqu'à présent. Aucun déclin de performance n'a été constaté dans les tests JavaScript. De plus, la parfaite correspondance a été démontrée par les tests comparatifs des résultats du traitement des sites en utilisant les versions LibJS en C++ et Rust.
La réécriture des composants du navigateur en Rust est considérée comme un projet secondaire, qui pourrait prendre beaucoup de temps. Le développement principal continue pour l'instant en C++. Les décisions concernant les sous-systèmes qui seront réécrits en Rust seront prises par l'équipe principale de développeurs. Le nouveau code en Rust coexistera avec le code existant en C++ à travers des niveaux d'interopérabilité clairement définis.
Il est à noter qu'en 2024, les développeurs de Ladybird ont décidé d'utiliser le langage de programmation Swift, mais ont été confrontés à une interopérabilité insuffisante avec le code C++ et à un support limité pour les plateformes autres qu'Apple. En ce qui concerne Rust, ce langage présente un écosystème plus mature pour la programmation système et des garanties de sécurité. De plus, parmi les développeurs de Ladybird, nombreux sont ceux qui connaissent bien ce langage. En 2024, le langage Rust n'a pas été approuvé pour une utilisation dans Ladybird en raison de la paradigme de développement basé sur la possession, qui ne s'harmonise pas tout à fait avec le style orienté objet du C++.
Andreas Kling a autrefois travaillé chez Nokia et a contribué au développement de KHTML, puis chez Apple, il a été l'un des développeurs de Safari. À l'origine, le projet Ladybird a été créé comme une application pour le système d'exploitation SerenityOS, mais à l'été 2024, il a été séparé en un projet distinct et a reçu un financement de 1 million de dollars. Le navigateur est écrit en C++ et est distribué sous la licence BSD. Le projet développe son propre moteur LibWeb, un interpréteur JavaScript LibJS et des bibliothèques associées.
Source : opennet.ru
