Ladybird-Browser integriert Rust mit Hilfe von KI

Das unabhängige Browser-Projekt Ladybird hat seine JavaScript-Engine LibJS von C++ nach Rust portiert. KI-Werkzeuge beschleunigten die Übersetzung erheblich.

vorlesen Druckansicht
Globus mit Netzwerkverbindungen, gelber Hintergrund

(Bild: heise medien)

Lesezeit: 3 Min.
Inhaltsverzeichnis
close notice

This article is also available in English. It was translated with technical assistance and editorially reviewed before publication.

Das freie Browser-Projekt Ladybird hat einen wichtigen Schritt in Richtung Speichersicherheit vollzogen: Die Entwickler haben zentrale Komponenten ihrer JavaScript-Engine LibJS von C++ nach Rust portiert. Der Port umfasst rund 25.000 Zeilen Code und wurde mit Unterstützung von KI-Werkzeugen innerhalb von zwei Wochen umgesetzt.

Konkret wurden der Lexer, Parser, Abstract Syntax Tree (AST) und der Bytecode-Generator von LibJS übersetzt. Diese Komponenten eigneten sich laut Hauptentwickler Andreas Kling besonders gut für den ersten Port, da sie relativ selbstständig arbeiten und sich durch die test262-Suite umfangreich testen lassen. Alle 52.898 Tests der test262-Suite sowie 12.461 Ladybird-spezifische Regressionstests verliefen ohne Probleme – die Rust- und C++-Implementierung erzeugen byte-identische Ausgaben.

Für die Übersetzung setzte Kling auf die KI-Modelle Claude Code und Codex, betont jedoch, dass es sich um eine Arbeit unter menschlicher Aufsicht (human-directed) handelte. Er steuerte den Prozess durch hunderte kleine Prompts und entschied selbst, welche Teile in welcher Reihenfolge portiert werden sollten. Nach der initialen Übersetzung führte er mehrere „adversarial“ Reviews durch, bei denen verschiedene KI-Modelle den Code auf Fehler und schlechte Muster prüften. Was manuell mehrere Monate gedauert hätte, war so in zwei Wochen erledigt.

Videos by heise

Der resultierende Rust-Code trägt bewusst den Stil „translated from C++“, ist also nicht idiomatisches Rust. Diese Entscheidung fiel zugunsten der Kompatibilität mit der C++-Pipeline. Erst wenn die C++-Implementierung vollständig abgelöst wird, will das Projekt den Code in idiomatisches Rust überführen.

Die Entscheidung für Rust ist bemerkenswert, da Ladybird die Sprache 2024 noch abgelehnt hatte. Damals argumentierten die Entwickler, Rusts Ownership-Modell passe nicht gut zum objektorientierten Stil der Web-Plattform mit ihren tiefen Vererbungshierarchien und Garbage Collection. Als Alternative wurde Swift evaluiert, scheiterte jedoch an unzureichender C++-Interoperabilität und limitiertem Plattform-Support außerhalb des Apple-Ökosystems.

Nach einem Jahr Stillstand entschied sich Kling nun pragmatisch für Rust. Als Gründe nennt er das reifere Ökosystem für die Systemprogrammierung, die verbreiteten Rust-Kenntnisse in der Contributor-Community und die Tatsache, dass auch Firefox und Chromium bereits Rust integrieren. Vor allem aber bietet Rust Speichersicherheitsgarantien, die C++ fehlen – ein kritischer Faktor für Browser-Engines, die häufige Angriffsziele sind.

Einen vollständigen Ausstieg aus C++ plant Ladybird nicht. Die Sprache bleibt laut Kling die Hauptentwicklungssprache des Projekts. Der Rust-Port sei ein „Sidetrack, der lange läuft“. Neuer Rust-Code koexistiert mit bestehendem C++ über definierte Interop-Grenzen. Das Core-Team steuert bewusst, welche Komponenten wann portiert werden.

Ladybird entwickelt eine vollständig unabhängige Browser-Engine als Alternative zu den etablierten Engines Gecko (Firefox), Blink (Chromium) und WebKit (Safari). Noch befindet sich das Open-Source-Projekt in einer frühen Phase, eine erste Alpha-Version für Linux und macOS soll 2026 erscheinen.

(fo)