Andreas Kling, der Gründer des Web-Browsers Ladybird, hat beschlossen, die Programmiersprache Rust für die Entwicklung des Projekts einzusetzen und beginnt, Teile von Ladybird in dieser Sprache neu zu schreiben. Als Experiment wurde die JavaScript-Engine LibJS bereits von C++ auf Rust umgeschrieben. LibJS wurde aufgrund der guten Testabdeckung gewählt, die die Beurteilung der Portierungsqualität erleichtert.
Um die Portierung zu beschleunigen, wurden die KI-Assistenten Claude Code und OpenAI Codex eingesetzt, wodurch der Code in zwei Wochen neu geschrieben werden konnte. Die Übersetzung erfolgte schrittweise mit der Beteiligung eines Entwicklers, der während der Arbeit den KI-Assistenten mehrere Hundert Eingabeaufforderungen sendete, um zu entscheiden, in welcher Reihenfolge und was portiert werden sollte, sowie um die Anforderungen an den resultierenden Code in Rust anzugeben. Nach Erhalt des Codes in verschiedenen KI-Modellen wurde das Ergebnis überprüft und der Code auf Fehler und fragwürdige Lösungen analysiert.
Letztlich hat die auf Rust umgeschriebene Engine erfolgreich alle 52.898 Kompatibilitätstests mit ECMAScript aus der Testreihe test262 und 12.461 Regressionstests des Ladybird-Projekts bestanden. Die Rust-Version zeigte vollständige Übereinstimmung des generierten AST und des Bytecodes mit der C++-Version, bisher wurden keine Regressionen festgestellt. Auch in den JavaScript-Tests gab es keine Leistungseinbußen. Darüber hinaus zeigte ein Vergleich die vollständige Übereinstimmung der Verarbeitsrichtlinien von Websites bei der Verwendung der LibJS-Versionen in C++ und Rust.
Das Umschreiben der Browser-Komponenten in Rust wird als Sekundärprojekt betrachtet, das viel Zeit in Anspruch nehmen kann. Die Hauptentwicklung läuft bisher weiterhin in C++. Die Entscheidungen über die Subsysteme, die in Rust umgeschrieben werden sollen, werden vom Hauptteam der Entwickler getroffen. Der neue Code in Rust wird neben dem bestehenden C++-Code durch klar definierte Interoperabilitätsebenen zusammenarbeiten.
Bemerkenswert ist, dass die Entwickler von Ladybird im Jahr 2024 die Programmiersprache Swift verwenden wollten, jedoch auf unzureichende Interoperabilität mit C++-Code und begrenzte Unterstützung für Plattformen, die nicht von Apple sind, stießen. Was Rust betrifft, wurde für diese Sprache ein reiferes Ökosystem für systemnahe Programmierung und Sicherheitsgarantien festgestellt. Darüber hinaus gibt es unter den Entwicklern von Ladybird viele Mitglieder, die mit dieser Sprache vertraut sind. Im Jahr 2024 wurde Rust nicht für die Verwendung in Ladybird genehmigt, da die besitzbasierte Entwicklungsparadigma nicht ganz mit dem objektorientierten Stil von C++ zusammenpasste.
Andreas Kling arbeitete einst bei Nokia, wo er KHTML entwickelte, und war dann bei Apple einer der Entwickler von Safari. Ursprünglich wurde das Projekt Ladybird als Anwendung für das Betriebssystem SerenityOS geschaffen, aber im Sommer 2024 wurde es zu einem eigenständigen Projekt und erhielt eine Spende von 1 Million Dollar. Der Browser ist in C++ geschrieben und wird unter der BSD-Lizenz verteilt. Das Projekt entwickelt eine eigene Engine, LibWeb, einen JavaScript-Interpreter, LibJS, und unterstützende Bibliotheken.
Quelle: opennet.ru
