Разрабатываемый с нуля браузер Ladybird начал частичный перенос своего кода на язык программирования Rust. Этот шаг стал серьезным изменением в технических планах проекта. Команда начала с LibJS, собственного движка JavaScript, после повторного изучения языков с безопасной работой с памятью для постепенной замены компонентов на C++.
Создатель проекта Андреас Клинг сообщил, что ранее команда рассматривала Swift как возможную замену C++. Однако Swift плохо взаимодействовал с C++ и имел ограниченную поддержку за пределами платформ Apple. Язык Rust обладает сильным сообществом разработчиков системного программного обеспечения и более знаком участникам проекта.
Клинг объяснил причину таких перемен следующим образом:
Процесс перехода начался с LibJS. Его лексер, парсер, абстрактное синтаксическое дерево и генератор байт-кода в основном автономны и имеют хорошее тестовое покрытие, включая собственные регрессионные тесты Ladybird. Перенос кода сгенерировал около 25 000 строк на Rust и занял примерно две недели. Процессом руководили люди, но инструменты искусственного интеллекта, такие как Claude Code и Codex, помогли разработчикам, обработав сотни небольших запросов.
Тестирование подтвердило, что команда достигла поставленной цели. Версия на Rust прошла 52 898 стандартных тестов и 12 461 регрессионный тест без появления новых ошибок. Разработчики также отметили, что производительность осталась на прежнем уровне для всех отслеживаемых задач JavaScript.
На данный момент код на Rust спроектирован так, чтобы полностью соответствовать шаблонам C++, даже в том, как он обрабатывает распределение регистров. Команда планирует провести рефакторинг и упростить его позже, когда появится больше уверенности и можно будет удалить некоторые старые части кода. Переход будет происходить постепенно, при этом C++ пока остается в центре внимания, а новые элементы на Rust разрабатываются как долгосрочный проект с четкими правилами взаимодействия двух языков.
Источник: www.playground.ru