Для ускорения портирования были задействованы AI-ассистенты Claude Code и OpenAI Codex, благодаря чему код удалось переписать за две недели. Перевод осуществлялся поступательно при участии разработчика, который в процессе работы отправил AI-ассистентам несколько сотен промптов, решая в какой последовательности и что портировать, а также указывая требования к результирующему коду на Rust. После получения кода в разных AI-моделях был проведено рецензирование результата и анализ кода на предмет ошибок и сомнительных решений.
В итоге переписанный на Rust вариант движка успешно прошёл все 52898 тестов на совместимость с ECMAScript из набора test262 и 12461 регрессионных текстов от проекта Ladybird. Вариант на Rust продемонстрировал полное совпадение генерируемого AST и байткода с вариантом на С++, регрессий пока не выявлено. В тестах JavaScript также не было выявлено снижения производительности. Кроме того, полное совпадение показало сравнительное тестирование результатов обработки сайтов при использовании вариантов LibJS на C++ и Rust.
Переписывание компонентов браузера на Rust рассматривается как второстепенный проект, который может занять много времени. Основная разработка пока продолжается на языке C++. Решения о подсистемах, которые будут переписываться на Rust, будет принимать
основная команда разработчиков. Новый код на Rust будет сосуществовать с существующим кодом на C++ через явно определённые уровни интероперабельности.
Примечательно, что в 2024 году разработчики Ladybird решили использовать язык программирования Swift, но столкнулись с недостаточной интероперабельностью с кодом на C++ и ограниченной поддержкой платформ, отличных от Apple. Что касается Rust, то для этого языка отмечена более зрелая экосистема для системного программирования и гарантии безопасности. Кроме того, среди разработчиков Ladybird много участников, знакомых с данным языком. В 2024 году язык Rust не был утверждён для использования в Ladybird из-за парадигмы разработки на основе владения, не совсем сочетающейся с объектно-ориентированным стилем C++.
Андреас Клинг когда-то работал в компании Nokia и занимался разработкой KHTML, а затем в Apple был одним из разработчиков Safari. Изначально проект Ladybird был создан как приложение для операционной системы SerenityOS, но летом 2024 года был выделен в отдельный проект и получил пожертвование в 1 млн. долларов. Браузер написан на языке С++ и распространяется под лицензией BSD. Проектом развиваются собственный движок LibWeb, JavaScript-интерпретатор LibJS и сопутствующие библиотеки.
Источник: http://www.opennet.ru/opennews/art.shtml?num=64861
