Andreas Kling, zakladatel webového prohlížeče Ladybird, oznámil, že se rozhodl využít jazyk Rust při vývoji projektu a začal přepisovat části Ladybird v tomto jazyce. Jako experiment byl JavaScriptový engine LibJS již přepsán z C++ do Rustu. LibJS byl vybrán kvůli dobrému pokrytí testy, což usnadňuje hodnocení kvality portování.
Pro urychlení portování byly zapojeny AI asistenti Claude Code a OpenAI Codex, což umožnilo přepsání kódu během dvou týdnů. Překlad probíhal postupně za účasti vývojáře, který během práce zaslal AI asistentům několik stovek promptů, aby určil pořadí věcí k portování a specifikoval požadavky na výsledný kód v Rustu. Po získání kódu byly různé AI modely podrobeny revizi a analýze kódu na chyby a pochybné rozhodnutí.
Výsledek přepsaného enginu v Rustu úspěšně prošel všemi 52898 testy na kompatibilitu s ECMAScript z testovací sady test262 a 12461 regresními testy od projektu Ladybird. Verze v Rustu prokázala kompletní shodu generovaného AST a bytecode s verzí v C++, potíže se zatím neobjevily. Testy JavaScriptu také neprokázaly snížení výkonu. Kromě toho kompletní shoda ukázala srovnávací testování výsledků zpracování webových stránek při použití verzí LibJS v C++ a Rustu.
Přepisování komponent webového prohlížeče v Rustu se považuje za vedlejší projekt, který může trvat delší dobu. Hlavní vývoj zatím pokračuje v jazyce C++. O podsystemech, které budou přepisovány v Rustu, rozhodne hlavní tým vývojářů. Nový kód v Rustu bude koexistovat se stávajícím kódem v C++ prostřednictvím jasně definovaných úrovní interoperability.
Je pozoruhodné, že v roce 2024 se vývojáři Ladybird rozhodli použít programovací jazyk Swift, ale narazili na nedostatečnou interoperabilitu s kódem v C++ a omezenou podporu platforem jiných než Apple. Co se týče Rustu, je pro tento jazyk sice uvedena zralejší ekosystém pro systémové programování a zaručení bezpečnosti. Kromě toho je mezi vývojáři Ladybird mnoho účastníků, kteří znají tento jazyk. V roce 2024 nebyl jazyk Rust schválen pro použití v Ladybird kvůli paradigmat na základě vlastnictví, které se zcela nehodily k objektově orientovanému stylu C++.
Andreas Kling kdysi pracoval ve společnosti Nokia a zabýval se vývojem KHTML, poté byl v Apple jedním z vývojářů Safari. Původně byl projekt Ladybird vytvořen jako aplikace pro operační systém SerenityOS, ale během léta 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 šíří se pod licencí BSD. V rámci projektu se vyvíjí vlastní engine LibWeb, JavaScriptový interpret LibJS a související knihovny.
Zdroj: opennet.ru
