Andreas Kling, fondatorul browserului web Ladybird, a anunțat decizia de a utiliza Rust în dezvoltarea proiectului și începutul rescrierii unor părți din Ladybird în acest limbaj. Ca experiment cu C++, motorul JavaScript LibJS a fost deja rescris în Rust. LibJS a fost ales datorită acoperirii sale bune de testare, ceea ce simplifică evaluarea calității portării.
Pentru a accelera procesul de portare, au fost utilizați asistenții AI Claude Code și OpenAI Codex, permițând finalizarea rescrierei codului în două săptămâni. Traducerea a fost realizată progresiv cu contribuția dezvoltatorului, care a trimis câteva sute de solicitări asistenților AI pe parcursul procesului, hotărând în ce ordine și ce să fie portat, precum și specificând cerințele pentru codul Rust rezultat. După primirea codului de la diverse modele AI, rezultatul a fost revizuit și analizat pentru erori și decizii discutabile.
În cele din urmă, motorul bazat pe Rust a trecut cu succes toate cele 52898 de teste de compatibilitate ECMAScript din suita test262 și 12461 de teste de regresie din proiectul Ladybird. Versiunea Rust a demonstrat o potrivire completă între AST și bytecode generate și versiunea C++, fără a se detecta regresii până în prezent. Testele JavaScript nu au arătat nici ele o degradare a performanței. În plus, un test comparativ al rezultatelor procesării site-urilor web utilizând versiunile C++ și Rust ale LibJS a demonstrat o potrivire completă.
Rescrierea componentelor browserului în Rust este considerată un proiect secundar care ar putea dura mult timp. Dezvoltarea primară este în curs de desfășurare în C++. Deciziile cu privire la subsistemele care vor fi rescrise în Rust vor fi luate de echipa principală de dezvoltare. Noul cod Rust va coexista cu codul C++ existent prin straturi de interoperabilitate definite explicit.
În mod special, în 2024, dezvoltatorii Ladybird au decis să utilizeze limbajul de programare Swift, dar au întâmpinat o interoperabilitate insuficientă cu codul C++ și suport limitat pentru platformele non-Apple. În ceea ce privește Rust, acest limbaj este remarcat pentru ecosistemul său mai matur pentru programarea sistemelor și garanțiile de siguranță. În plus, mulți dintre dezvoltatorii Ladybird sunt familiarizați cu acest limbaj. În 2024, Rust nu a fost aprobat pentru utilizare în Ladybird din cauza paradigmei sale de dezvoltare bazate pe proprietate, care intră în conflict cu stilul orientat pe obiecte al C++.
Andreas Kling a lucrat la Nokia, dezvoltând KHTML, iar mai târziu a lucrat la Apple ca unul dintre dezvoltatorii Safari. Ladybird a fost creată inițial ca o aplicație pentru sistemul de operare SerenityOS, dar în vara anului 2024, a fost divizată într-un proiect separat și a primit o donație de 1 milion de dolari. Browserul este scris în C++ și distribuit sub licența BSD. Proiectul dezvoltă propriul motor LibWeb, interpretorul JavaScript LibJS și bibliotecile aferente.
Sursa: opennet.ru
