Andreas Kling, grundare av webblÀsaren Ladybird, meddelade att han har beslutat att anvÀnda sprÄket Rust i utvecklingen av projektet och att han pÄbörjar omskrivning av delar av Ladybird till detta sprÄk. Som ett experiment har JavaScript-motorn LibJS redan skrivits om frÄn C++ till Rust. LibJS valdes pÄ grund av den goda testtÀckningen, vilket underlÀttar bedömningen av kvaliteten pÄ porteringen.
För att pĂ„skynda porteringen anvĂ€ndes AI-assistenterna Claude Code och OpenAI Codex, vilket gjorde det möjligt att skriva om koden pĂ„ tvĂ„ veckor. ĂversĂ€ttningen genomfördes gradvis med hjĂ€lp av en utvecklare som under arbetets gĂ„ng skickade flera hundra uppmaningar till AI-assistenterna, för att lösa i vilken ordning och vad som skulle porteras, samt angav krav pĂ„ den resulterande koden i Rust. Efter att ha fĂ„tt koden frĂ„n olika AI-modeller genomfördes en granskning av resultatet och en analys av koden för att upptĂ€cka fel och tveksamma lösningar.
Resultatet av den skrivna versionen av motorn i Rust lyckades framgÄngsrikt klara alla 52898 tester för kompatibilitet med ECMAScript frÄn test262-satsen och 12461 regressiva tester frÄn Ladybird-projektet. Rust-versionen visade fullstÀndig överensstÀmmelse mellan den genererade AST och bytekoden med C++-versionen, och nÄgra regressioner har inte upptÀckts Àn. För JavaScript-testerna uppvisades inte heller nÄgon minskning av prestandan. Dessutom visade den fullstÀndiga överensstÀmmelsen jÀmförande testning av resultaten frÄn webbplatsbehandlingar med LibJS-versionerna pÄ C++ och Rust.
Omskrivningen av webblÀsarens komponenter i Rust ses som ett sekundÀrt projekt som kan ta mycket tid. Huvudutvecklingen pÄgÄr fortfarande pÄ sprÄket C++. Besluten om vilka delsystem som ska skrivas om i Rust kommer att fattas av huvudteamet av utvecklare. Den nya koden i Rust kommer att samexistera med den befintliga koden i C++ genom tydligt definierade nivÄer av interoperabilitet.
Det Àr anmÀrkningsvÀrt att utvecklarna av Ladybird planerar att anvÀnda programmeringssprÄket Swift Är 2024, men de stötte pÄ begrÀnsad interoperabilitet med C++-koden och begrÀnsat stöd för plattformar som inte Àr Apples. För Rust finns det en mer mogen ekosystem för systemprogrammering och sÀkerhetsgarantier. Dessutom Àr mÄnga av utvecklarna av Ladybird bekanta med detta sprÄk. à r 2024 godkÀndes inte Rust för anvÀndning i Ladybird pÄ grund av utvecklingsparadigmet baserat pÄ Àgande, vilket inte riktigt passar med det objektorienterade C++-stilen.
Andreas Kling arbetade tidigare pÄ Nokia och var involverad i utvecklingen av KHTML, och dÀrefter var han en av utvecklarna av Safari pÄ Apple. Ursprungligen skapades projektet Ladybird som en applikation för operativsystemet SerenityOS, men under sommaren 2024 blev det ett separat projekt och fick en donation pÄ 1 miljon dollar. WebblÀsaren Àr skriven i C++ och distribueras under en BSD-licens. Projektet utvecklar sin egen motor LibWeb, JavaScript-tolk LibJS och relaterade bibliotek.
KĂ€lla: opennet.ru
