Ladybird adopte Rust : 25 000 lignes de code Rust résultent de la conversion depuis C++ avec l'aide des outils de codage IA Claude Code et CodexLadybird, le navigateur web indépendant actuellement en cours de développement, a commencé à réécrire certaines parties de sa base de code en C++ dans le langage Rust, citant les garanties de sécurité et la maturité de l'écosystème comme facteurs décisifs. Son fondateur, Andreas Kling, a affirmé que le portage a généré environ 25 000 lignes de code Rust, et qu'il s'est appuyé sur une utilisation structurée et dirigée par l'homme des outils de codage par intelligence artificielle (IA) Claude Code et Codex. Kling a souligné que si l'adéquation de Rust avec la programmation orientée objet (POO) avait initialement été remise en question, son écosystème en pleine expansion et ses fonctionnalités de sécurité en font le choix idéal pour l'avenir du navigateur.
Ladybird est un navigateur web open source développé par Ladybird Browser Initiative, une organisation à but non lucratif dédiée au développement du navigateur. Il est distribué sous licence BSD 2-Clause. Une version alpha est prévue pour 2026, une version bêta pour 2027 et une version stable pour le grand public en 2028. À l'origine composant de SerenityOS, il est désormais développé en tant que projet autonome. L'initiative est entièrement financée par des dons, avec Cloudflare, FUTO, Shopify et 37signals parmi ses sponsors.
Rust est un langage de programmation polyvalent qui met l'accent sur la performance, la sûreté des types et la concurrence. Il assure la sécurité mémoire sans nécessiter l'utilisation de techniques de gestion de la mémoire automatisée telles que le ramasse-miettes. À la place, les erreurs de sécurité de la mémoire et les conflits d'accès aux données sont évités grâce au « vérificateur d'emprunt », qui suit la durée de vie des objets référencés au moment de la compilation. Rust a été remarqué pour son adoption rapide. Selon le sondage Stack Overflow 2025, c'est le langage le plus apprécié.
Ce virage technologique intervient un peu plus d'un an après qu'Andreas Kling a annoncé, en juin 2024, qu'il ferait de Ladybird une initiative distincte et qu'il se consacrerait désormais entièrement au navigateur, en se désengageant de SerenityOS. Le projet visait alors à créer un navigateur web indépendant, plutôt qu’un énième dérivé de Chrome ou de Firefox.
Le nouveau navigateur Ladybird a commencé à réécrire certaines parties de son code en Rust. Dans un communiqué publié sur le site du projet, Andreas Kling, fondateur et président de Ladybird Browser Initiative, a déclaré que l'équipe avait envisagé Swift comme un remplacement possible du C++. Cependant, Swift ne fonctionnait pas bien avec le C++ et son support était limité en dehors des plateformes Apple.
« Cela fait un certain temps que nous recherchons un langage de programmation sécurisé pour remplacer le C++ dans Ladybird. Nous avions précédemment exploré Swift, mais l'interopérabilité avec le C++ n'était pas tout à fait au point et la prise en charge des plateformes en dehors de l'écosystème Apple était limitée. Rust est une autre histoire. L'écosystème est beaucoup plus mature pour la programmation système, et bon nombre de nos contributeurs connaissent déjà ce langage. À l'avenir, nous réécrirons certaines parties de Ladybird en Rust », a déclaré Andreas Kling.
Le communiqué d'Andreas Kling est présenté ci-dessous : «
Pourquoi Rust ?
Lorsque nous avons évalué Rust pour la première fois en 2024, nous l'avons rejeté parce qu'il n'était pas très performant en matière de POO de style C++. Le modèle objet de la plateforme web hérite de nombreuses caractéristiques de la POO des années 1990, avec le ramasse-miettes, les hiérarchies d'héritage profondes, etc. Le modèle de propriété de Rust n'est pas naturellement adapté à cela.
Mais après une nouvelle année passée à faire du surplace, il est temps de faire un choix pragmatique. Rust offre l'écosystème et les garanties de sécurité dont nous avons besoin. Firefox et Chromium ont déjà commencé à intégrer Rust dans leurs bases de code, et nous pensons que c'est également le bon choix pour Ladybird.
Portage de LibJS
Notre première cible était LibJS , le moteur JavaScript de Ladybird. Le lexer, le parseur, l'AST et le générateur de bytecode sont relativement autonomes et bénéficient d'une couverture de test étendue grâce à test262, ce qui en faisait un point de départ naturel.
J'ai utilisé Claude Code et Codex pour la traduction. Il s'agissait d'une génération de code dirigée par l'homme, et non autonome. J'ai décidé quoi porter, dans quel ordre, et à quoi devait ressembler le code Rust. Il s'agissait de centaines de petites invites, guidant les agents vers les endroits où les choses devaient aller. Après la traduction initiale, j'ai effectué plusieurs passages de révision contradictoire, demandant à différents modèles d'analyser le code à la recherche d'erreurs et de mauvais modèles.
Résultats
Dès le départ, l'exigence était d'obtenir une sortie identique octet par octet à partir des deux pipelines. Le résultat a été environ 25 000 lignes de Rust, et le portage complet a pris environ deux semaines. Le même travail m'aurait pris plusieurs mois à faire à la main. Nous avons vérifié que chaque AST produit par l'analyseur Rust est identique à celui de C++, et que tout le bytecode généré par le compilateur Rust est identique à la sortie du compilateur C++. Aucune régression n'a été constatée :
Nous n'avons constaté aucune régression des performances sur les benchmarks JS que nous suivons.
Au-delà des suites de tests, j'ai effectué des tests approfondis en naviguant sur le Web en mode lockstep, où les pipelines C++ et Rust fonctionnent simultanément, afin de vérifier que le résultat est identique pour chaque élément JavaScript qui les traverse.
Si vous regardez le code, vous remarquerez qu'il a un fort côté « traduit depuis C++ ». C'est parce qu'il a été traduit à partir du C++. La priorité absolue pour cette première étape est la compatibilité avec notre pipeline C++. Le code Rust imite intentionnellement des éléments tels que les modèles d'allocation de registres C++ afin que les deux compilateurs produisent un bytecode identique. La précision arrive en deuxième position. Nous savons que le résultat n'est pas idiomatique Rust, et beaucoup de choses peuvent être simplifiées une fois que nous serons prêts à abandonner le pipeline C++. Ce nettoyage viendra en temps voulu.
Prochaines étapes
Ce n'est pas l'objectif principal du projet. Nous continuerons à développer le moteur en C++, et le portage des sous-systèmes vers Rust sera une tâche secondaire qui s'étendra sur une longue période. Le nouveau code Rust coexistera avec le code C++ existant grâce à des limites d'interopérabilité bien définies.
Nous voulons réfléchir mûrement aux parties à porter et à l'ordre dans lequel elles le seront, c'est pourquoi le travail de portage est géré par l'équipe principale. Veuillez vous coordonner avec nous avant de commencer tout travail de portage afin que personne ne perde son temps sur quelque chose que nous ne pouvons pas fusionner.
Je sais que cette décision sera controversée, mais je pense qu'elle est la bonne pour l'avenir de Ladybird. :^)
Andreas Kling
Fondateur & président
»
Alors que Ladybird réécrit certaines parties de son code en Rust, la transformation du navigateur repose également sur une structuration institutionnelle conçue pour garantir son indépendance à long terme. En juillet 2024, Andreas Kling s'est associé à Chris Wanstrath, cofondateur de GitHub, pour lancer The Ladybird Browser Initiative, une organisation à but non lucratif basée aux États-Unis et exclusivement dédiée au développement du navigateur.
Les fondateurs revendiquent un modèle affranchi des financements publicitaires et des accords commerciaux pour les moteurs de recherche par défaut. L’organisation interdit par ailleurs aux donateurs d’acquérir des sièges au conseil d’administration, précisant que tous les soutiens financiers sont des dons sans restriction. Malgré le scepticisme entourant la création d'un navigateur conçu de toutes pièces, l'équipe vise une version alpha pleinement fonctionnelle pour 2026, en misant sur une gouvernance conçue pour éviter toute influence de la part des entreprises.
Et vous ?
Quel est votre avis sur le sujet ?
Trouvez-vous cette initiative du projet Ladybird crédible ou pertinente ?Voir aussi :
Le navigateur Ladybird commencera à utiliser le langage Swift au lieu de C++ cet automne, car Swift offre une sécurité de la mémoire et est également un langage moderne avec une ergonomie solide
Ladybird, le projet qui vise à créer un navigateur indépendant, est désormais piloté par une organisation à but non lucratif avec une contribution de 1 million de dollars du fondateur de GitHub
La version 1.92 du langage de programmation Rust est disponible, introduisant les tables de déroulement par défaut et affinant les vérifications de lints et d'attributs
Vous avez lu gratuitement 2 355 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.