Andreas Kling, zakladateľ webového prehliadača Ladybird, oznámil rozhodnutie zapojiť jazyk Rust pri vývoji projektu a začať prepisovanie častí Ladybird v tomto jazyku. Ako experiment s C++ už bol prepisovaný JavaScriptový engine LibJS na Rust. LibJS bol vybraný kvôli dobrému pokrytiu testami, čo uľahčuje hodnotenie kvality portovania.
Na urýchlenie portovania boli zapojení AI asistenti Claude Code a OpenAI Codex, vďaka čomu sa kód podarilo prepísať za dva týždne. Preklad bol realizovaný postupne s účastníctvom vývojára, ktorý počas práce poslal AI asistentom niekoľko sto promptov, rozhodujúc o poradí a tom, čo portovať, ako aj uvádzajúc požiadavky na výsledný kód v Rust. Po obdržaní kódu z rôznych AI modelov bola vykonaná recenzia výsledkov a analýza kódu na prítomnosť chýb a pochybností o rozhodnutiach.
Nakoniec prepisovaný variant enginu na Rust úspešne prešiel všetkými 52898 testami na kompatibilitu s ECMAScript z testovacej sady test262 a 12461 regresívnymi testami od projektu Ladybird. Varianta na Rust preukázala úplnú zhodu generovaného AST a bajtkódu s variantom na C++, regresie zatiaľ neboli zistené. V testoch JavaScriptu taktiež nebolo zaznamenané zhoršenie výkonu. Okrem toho úplná zhoda ukázala porovnávacie testovanie výsledkov spracovania webových stránok pri použití variantov LibJS na C++ a Rust.
Prepisovanie komponentov prehliadača na Rust sa považuje za sekundárny projekt, ktorý môže trvať dlhý čas. Hlavný vývoj zatiaľ pokračuje v jazyku C++. O subsystémoch, ktoré budú prepísané na Rust, bude rozhodovať hlavný tím vývojárov. Nový kód v Rust bude koexistovať s existujúcim kódom v C++ prostredníctvom jasne definovaných úrovní interoperabilnosti.
Zaujímavé je, že vývojári Ladybird sa v roku 2024 rozhodli použiť programovací jazyk Swift, no stretli sa s nedostatočnou interoperabilitou s kódom v C++ a obmedzenou podporou platforiem odlišných od Apple. Pokiaľ ide o Rust, pre tento jazyk je pozorovaný zrelší ekosystém pre systémové programovanie a záruku bezpečnosti. Okrem toho je medzi vývojármi Ladybird mnoho účastníkov oboznámených s týmto jazykom. V roku 2024 jazyk Rust nebol schválený na použitie v Ladybird kvôli paradigme vývoja založenej na vlastníctve, ktorá nie je úplne kompatibilná s objektovo-orientovaným štýlom C++.
Andreas Kling kedysi pracoval v spoločnosti Nokia a venoval sa vývoju KHTML, potom bol v Apple jedným z vývojárov Safari. Pôvodne projekt Ladybird vznikol ako aplikácia pre operačný systém SerenityOS, no v lete 2024 bol vyčlenený do samostatného projektu a dostal dar vo výške 1 milióna dolárov. Prehliadač je napísaný v C++ a šíri sa pod licenciou BSD. Projekt vyvíja vlastný engine LibWeb, JavaScript interpretátor LibJS a príbuzné knižnice.
Zdroj: opennet.ru
