Andreas Kling, zakladatel webového prohlížeče Ladybird, oznámil rozhodnutí použít při vývoji projektu Rust a zahájení přepisování částí Ladybirdu v tomto jazyce. Jako experiment s C++ byl JavaScriptový engine LibJS již v Rustu přepsán. LibJS byl vybrán kvůli dobrému pokrytí testy, což zjednodušuje hodnocení kvality portu.
Pro urychlení procesu portování byli využiti asistenti umělé inteligence Claude Code a OpenAI Codex, což umožnilo dokončení přepsání kódu během dvou týdnů. Překlad probíhal postupně za účasti vývojáře, který během procesu odeslal asistentům umělé inteligence několik stovek pokynů, v nichž rozhodoval o pořadí a obsahu portovaného kódu a specifikoval požadavky na výsledný kód v Rustu. Po obdržení kódu z různých modelů umělé inteligence byl výsledek zkontrolován a analyzován z hlediska chyb a sporných rozhodnutí.
Engine založený na Rustu nakonec úspěšně prošel všemi 52 898 testy kompatibility s ECMAScript ze sady test262 a 12 461 regresními testy z projektu Ladybird. Verze v Rustu prokázala úplnou shodu mezi vygenerovaným AST a bytecode a verzí v C++, přičemž dosud nebyly zjištěny žádné regrese. Testy v JavaScriptu také neprokázaly žádné snížení výkonu. Navíc srovnávací test výsledků zpracování webových stránek s použitím verzí LibJS v C++ a Rustu prokázal úplnou shodu.
Přepisování komponent prohlížeče v Rustu je považováno za druhotný projekt, který by mohl zabrat značné množství času. Primární vývoj v současné době probíhá v C++. Rozhodnutí o tom, které subsystémy budou v Rustu přepsány, učiní hlavní vývojový tým. Nový kód v Rustu bude koexistovat se stávajícím kódem v C++ prostřednictvím explicitně definovaných vrstev interoperability.
Je pozoruhodné, že v roce 2024 se vývojáři Ladybirdu rozhodli používat programovací jazyk Swift, ale narazili na nedostatečnou interoperabilitu s kódem C++ a omezenou podporu pro platformy jiných výrobců než Apple. Pokud jde o Rust, tento jazyk je známý svým vyspělejším ekosystémem pro systémové programování a bezpečnostními zárukami. Navíc mnoho vývojářů Ladybirdu je s tímto jazykem obeznámeno. V roce 2024 nebyl Rust schválen pro použití v Ladybirdu kvůli jeho vývojovému paradigmatu založenému na vlastnictví, které je v rozporu s objektově orientovaným stylem C++.
Andreas Kling kdysi pracoval ve společnosti Nokie, kde vyvíjel KHTML, a později pracoval ve společnosti Apple jako jeden z vývojářů Safari. Ladybird byl původně vytvořen jako aplikace pro operační systém SerenityOS, ale v létě 2024 byl vyčleněn do samostatného projektu a obdržel dar ve výši 1 milionu dolarů. Prohlížeč je napsán v jazyce C++ a distribuován pod licencí BSD. Projekt vyvíjí vlastní engine LibWeb, interpret JavaScriptu LibJS a související knihovny.
Zdroj: opennet.ru
