Entwicklung & Code
Ladybird-Browser integriert Rust mit Hilfe von KI
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.
Weiterlesen nach der Anzeige
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.
KI beschleunigte Übersetzung erheblich
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.
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.
Kehrtwende nach Ablehnung 2024
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.
Weiterlesen nach der Anzeige
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.
C++ bleibt Hauptsprache
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)