Компоненты браузера Ladybird начали переписывать на Rust при помощи AI

Андреас Клинг (Andreas Kling), основатель web-браузера Ladybird, объявил о решении задействовать язык Rust при разработке проекта и начале переписывания частей Ladybird на данном языке. В качестве эксперимента с C++ на Rust уже переписан JavaScript-движок LibJS. LibJS выбран из-за хорошего покрытия тестами, упрощающего оценку качества портирования.

Для ускорения портирования были задействованы 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