Andreas Kling, twórca przeglądarki internetowej Ladybird, ogłosił decyzję o wykorzystaniu języka Rust w projekcie oraz rozpoczęciu przepisywania części Ladybird w tym języku. Jako eksperyment z C++ przepisana została już silnik JavaScript LibJS. LibJS wybrano ze względu na dobre pokrycie testami, co ułatwia ocenę jakości portowania.
Aby przyspieszyć proces portowania, zaangażowano asystentów AI Claude Code i OpenAI Codex, co pozwoliło na przepisanie kodu w ciągu dwóch tygodni. Proces tłumaczenia odbywał się stopniowo przy udziale programisty, który w trakcie pracy przesłał asystentom AI setki promptów, ustalając kolejność portowania oraz wymagania dotyczące rezultatu kodu w Rust. Po uzyskaniu kodu w różnych modelach AI przeprowadzono recenzję wyników oraz analizę kodu pod kątem błędów i wątpliwych rozwiązań.
Ostatecznie, przepisana na Rust wersja silnika pomyślnie przeszła wszystkie 52898 testów zgodności z ECMAScript z zestawu test262 oraz 12461 testów regresyjnych z projektu Ladybird. Wersja na Rust wykazała pełne dopasowanie generowanego AST i bajtkodu do wersji na C++, a do tej pory nie wykryto regresji. W testach JavaScript również nie zaobserwowano spadku wydajności. Ponadto, pełne dopasowanie wykazało porównawcze testowanie wyników przetwarzania stron przy użyciu wersji LibJS na C++ i Rust.
Przepisanie komponentów przeglądarki na Rust jest traktowane jako projekt drugorzędny, który może zająć dużo czasu. Główna praca nadal prowadzi się w języku C++. Decyzje dotyczące podsystemów, które będą przepisywane na Rust, podejmie główny zespół deweloperski. Nowy kod w Rust będzie współistnieć z istniejącym kodem w C++ poprzez wyraźnie określone poziomy interoperacyjności.
Warto zauważyć, że w 2024 roku programiści Ladybird zdecydowali się na użycie języka programowania Swift, napotykając jednak problemy z niewystarczającą interoperacyjnością z kodem w C++ oraz ograniczoną obsługą platform innych niż Apple. Jeśli chodzi o Rust, to dla tego języka zauważono bardziej dojrzały ekosystem dla programowania systemowego oraz gwarancje bezpieczeństwa. Ponadto wśród programistów Ladybird jest wielu uczestników zaznajomionych z tym językiem. W 2024 roku język Rust nie został zatwierdzony do użycia w Ladybird z powodu paradygmatu programowania opartego na własności, który nie całkowicie współgra z obiektowo-orientowanym stylem C++.
Andreas Kling kiedyś pracował w firmie Nokia, a następnie w Apple był jednym z twórców Safari. Pierwotnie projekt Ladybird został stworzony jako aplikacja dla systemu operacyjnego SerenityOS, jednak latem 2024 roku wydzielono go jako osobny projekt, który otrzymał darowiznę w wysokości 1 miliona dolarów. Przeglądarka została napisana w języku C++ i jest rozpowszechniana na licencji BSD. W ramach projektu rozwijany jest własny silnik LibWeb, interpreter JavaScript LibJS oraz towarzyszące biblioteki.
Źródło: opennet.ru
