Andreas Kling, oprichter van de webbrowser Ladybird, heeft aangekondigd dat hij de programmeertaal Rust zal inzetten voor de ontwikkeling van het project en is begonnen met het herschrijven van delen van Ladybird in deze taal. Als experiment is de JavaScript-engine LibJS al herschreven van C++ naar Rust. LibJS is gekozen vanwege de goede testdekking, wat de beoordeling van de kwaliteit van de portering vereenvoudigt.
Om het porteren te versnellen zijn AI-assistenten Claude Code en OpenAI Codex ingeschakeld, waardoor de code in twee weken herschreven kon worden. De vertaling werd stap voor stap uitgevoerd met de hulp van een ontwikkelaar, die in het proces honderden prompts naar de AI-assistenten stuurde, waarbij hij besliste in welke volgorde en wat te porteren, en de eisen voor de resulterende code in Rust aangaf. Na het ontvangen van de code in verschillende AI-modellen werd het resultaat beoordeeld en de code geanalyseerd op fouten en twijfelachtige oplossingen.
Uiteindelijk slaagde de herschreven versie van de engine in Rust erin om alle 52898 compatibiliteitstests met ECMAScript van de testset test262 en 12461 regressietests van het Ladybird-project te doorstaan. De Rust-versie toonde een volledige overeenstemming van de gegenereerde AST en bytecode met de C++-versie, en er zijn tot nu toe geen regressies ontdekt. Ook in de JavaScript-tests was er geen verlies van prestaties vastgesteld. Bovendien toonde een volledige overeenkomst vergelijkend testen van de resultaten van websiteverwerking met de LibJS-versies in C++ en Rust.
Het herschrijven van browsercomponenten in Rust wordt beschouwd als een secundair project dat veel tijd kan vergen. De hoofdontwikkeling gaat voorlopig door in C++. De beslissingen over welke subsystemen zullen worden herschreven in Rust, zullen worden genomen door het hoofdtteam van ontwikkelaars. Nieuwe code in Rust zal naast de bestaande code in C++ bestaan via expliciet gedefinieerde niveaus van interoperabiliteit.
Opmerkelijk is dat de ontwikkelaars van Ladybird in 2024 besloten hebben de programmeertaal Swift te gebruiken, maar tegen beperkte interoperabiliteit met C++-code en beperkte ondersteuning voor platforms anders dan Apple aanliepen. Wat Rust betreft, dat heeft een meer volwassen ecosysteem voor systeemprogrammering en veiligheidsgaranties. Daarnaast zijn er onder de ontwikkelaars van Ladybird veel leden die met deze taal bekend zijn. In 2024 werd de taal Rust niet goedgekeurd voor gebruik in Ladybird vanwege de eigendom-gebaseerde ontwikkelingsparadigma, die niet helemaal aansluit bij de objectgeoriƫnteerde stijl van C++.
Andreas Kling werkte ooit bij Nokia en was betrokken bij de ontwikkeling van KHTML, daarna was hij bij Apple een van de ontwikkelaars van Safari. Het project Ladybird werd oorspronkelijk gecreƫerd als een applicatie voor het besturingssysteem SerenityOS, maar in de zomer van 2024 werd het een apart project en ontving het een donatie van 1 miljoen dollar. De browser is geschreven in C++ en wordt verspreid onder de BSD-licentie. Het project ontwikkelt de eigen engine LibWeb, de JavaScript-interpreter LibJS en bijbehorende bibliotheken.
Bron: opennet.ru
