Andreas Kling, założyciel przeglądarki internetowej Ladybird, ogłosił decyzję o wykorzystaniu języka Rust w trakcie rozwoju projektu oraz rozpoczęciu przepisywania części Ladybird w tym języku. Jako eksperyment z C++ na Rust przepisana została już silnik JavaScript LibJS. LibJS wybrano ze względu na dobre pokrycie testami, co ułatwia ocenę jakości portowania.
W celu przyspieszenia portowania zatrudniono asystentów AI Claude Code oraz OpenAI Codex, dzięki czemu kod udało się przepisać w ciągu dwóch tygodni. Przekład realizowano etapowo przy udziale programisty, który w trakcie pracy wysłał asystentom AI kilka setek promptów, decydując o kolejności i zakresie portowania, a także wskazując wymagania dotyczące końcowego kodu w Rust. Po uzyskaniu kodu w różnych modelach AI przeprowadzono przegląd wyników i analizę kodu pod kątem błędów i wątpliwych rozwiązań.
Ostatecznie przepisana w Rust wersja silnika pomyślnie przeszła wszystkie 52898 testów kompatybilności z ECMAScript z zestawu test262 oraz 12461 testów regresyjnych od projektu Ladybird. Wersja w Rust wykazała całkowite dopasowanie generowanego AST i kodu bajtowego do wersji w C++, a regresji jak dotąd nie wykryto. W testach JavaScript również nie stwierdzono spadku wydajności. Co więcej, pełne dopasowanie wykazało porównawcze testowanie wyników przetwarzania stron z wykorzystaniem wersji LibJS w C++ i Rust.
Przepisywanie komponentów przeglądarki w Rust traktowane jest jako projekt drugorzędny, który może zająć dużo czasu. Główna rozwój wciąż odbywa się w języku C++. Decyzje o podsystemach, które będą przepisywane na Rust, podejmie główny zespół programistów. Nowy kod w Rust będzie współistnieć z istniejącym kodem w C++ przez wyraźnie określone poziomy interoperacyjności.
Warto zauważyć, że w 2024 roku deweloperzy Ladybird postanowili używać języka programowania Swift, ale napotkali problemy z niewystarczającą interoperacyjnością z kodem C++ oraz ograniczoną obsługą platform innych niż Apple. Jeśli chodzi o Rust, odnotowano znacznie bardziej dojrzały ekosystem dla programowania systemowego i gwarancje bezpieczeństwa. Ponadto wśród deweloperó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 rozwoju opartego na posiadaniu, który nie do końca zgrywał się z obiektowym stylem C++.
Andreas Kling kiedyś pracował w firmie Nokia, gdzie zajmował się rozwojem KHTML, a następnie w Apple był jednym z deweloperów Safari. Początkowo projekt Ladybird został stworzony jako aplikacja dla systemu operacyjnego SerenityOS, ale latem 2024 roku został wydzielony jako osobny projekt i otrzymał darowiznę w wysokości 1 miliona dolarów. Przeglądarka napisana jest w języku C++ i jest rozpowszechniana na licencji BSD. W projekcie rozwijane są własny silnik LibWeb, interpreter JavaScript LibJS oraz towarzyszące biblioteki.
Źródło: opennet.ru
