Andreas Kling, der Gründer des Webbrowsers Ladybird, kündigte an, dass er die Programmiersprache Rust für die Entwicklung des Projekts einsetzen wird und damit beginnt, Teile von Ladybird in dieser Sprache neu zu schreiben. Als Experiment wurde bereits die JavaScript-Engine LibJS von C++ auf Rust umgeschrieben. LibJS wurde aufgrund seiner guten Testabdeckung gewählt, was die Bewertung der Portierungsqualität vereinfacht.
Um die Portierung zu beschleunigen, wurden die KI-Assistenten Claude Code und OpenAI Codex eingesetzt, wodurch der Code in nur zwei Wochen umgeschrieben werden konnte. Der Übersetzungsprozess erfolgte schrittweise mit Beteiligung des Entwicklers, der dabei mehreren Hundert Eingaben an die KI-Assistenten sendete, um zu entscheiden, in welcher Reihenfolge und was portiert werden sollte, sowie um Anforderungen an den resultierenden Rust-Code zu formulieren. Nach Erhalt des Codes in verschiedenen KI-Modellen wurde das Ergebnis überprüft und der Code auf Fehler und fragwürdige Entscheidungen analysiert.
Der überarbeitete Engine-Code in Rust hat erfolgreich alle 52.898 Kompatibilitätstests mit ECMAScript aus dem Test262-Satz sowie 12.461 Regressionstests des Ladybird-Projekts bestanden. Die Rust-Version hat eine vollständige Übereinstimmung des generierten AST und Bytecodes mit der C++-Version gezeigt, bisher wurden keine Regressionen festgestellt. Zudem gab es in den JavaScript-Tests keinen Rückgang der Leistung. Darüber hinaus hat die vollständige Übereinstimmung den Vergleichstest der Verarbeitungsergebnisse von Webseiten bei der Verwendung der LibJS-Versionen in C++ und Rust belegt.
Die Neuschreibung von Browserkomponenten in Rust wird als ein sekundäres Projekt betrachtet, das viel Zeit in Anspruch nehmen kann. Die Hauptentwicklung erfolgt weiterhin in C++. Entscheidungen über die Subsysteme, die in Rust neu geschrieben werden sollen, werden vom Hauptentwicklungsteam getroffen. Der neue Code in Rust wird alongside dem bestehenden C++-Code durch klar definierte Interoperabilitätsebenen koexistieren.
Bemerkenswert ist, dass die Entwickler von Ladybird im Jahr 2024 die Programmiersprache Swift verwenden wollten, aber auf mangelnde Interoperabilität mit C++-Code und begrenzte Unterstützung für Plattformen außerhalb von Apple stießen. Was Rust betrifft, so zeichnet sich diese Sprache durch ein reiferes Ökosystem für systemnahe Programmierung und Sicherheitsgarantien aus. Zudem gibt es unter den Entwicklern von Ladybird viele, die mit dieser Sprache vertraut sind. Im Jahr 2024 wurde Rust jedoch aufgrund der Besitz-basierten Entwicklung nicht für die Verwendung in Ladybird genehmigt, da dies nicht gut mit dem objektorientierten Stil von C++ harmoniert.
Andreas Kling arbeitete einst bei Nokia und war an der Entwicklung von KHTML beteiligt. Später war er bei Apple einer der Entwickler von Safari. Ursprünglich wurde das Projekt Ladybird als Anwendung für das Betriebssystem SerenityOS entwickelt, wurde jedoch im Sommer 2024 zu einem eigenen Projekt ausgegliedert und erhielt eine Spende in Höhe von 1 Million Dollar. Der Browser ist in C++ geschrieben und wird unter der BSD-Lizenz verbreitet. Das Projekt entwickelt eine eigene Engine namens LibWeb, den JavaScript-Interpreter LibJS und zugehörige Bibliotheken.
Quelle: opennet.ru
