Год работы впустую. Почему создатели амбициозного браузера Ladybird бросили Swift ради Rust?

Год работы впустую. Почему создатели амбициозного браузера Ladybird бросили Swift ради Rust?

Главный язык Apple не подошел для создания независимого браузера.

image

Независимый проект по разработке браузера Ladybird сменил курс: вместо языка Swift команда выбрала Rust. Попытки перейти на Swift, по признанию самих разработчиков, обошлись им примерно в год потерянного времени.

Ladybird - амбициозный проект: его авторы пишут браузер и движок рендеринга с нуля, не опираясь ни на один из существующих движков. Напомним, что все mainstream-браузеры сводятся к трём семействам: Firefox на базе Gecko, Safari на базе WebKit - который восходит к форку KHTML от KDE, сделанному Apple в 2003 году, - и Chrome на базе Blink, который Google форкнул из WebKit десятью годами позже. Ladybird стоит особняком от всех них.

Изначально браузер создавался как часть операционной системы SerenityOS и был написан на C++. В 2023 году основатель проекта Андреас Клинг выделил его в отдельный кроссплатформенный продукт, а в 2024 году объявил на X о переходе на Swift - относительно молодой язык от Apple, ставший открытым и кроссплатформенным. Однако эксперимент не удался: совместимость с C++ так и не заработала должным образом, а поддержка платформ за пределами экосистемы Apple оказалась слабой.

Клинг закрыл соответствующий тикет на GitHub с коротким комментарием: «Закрываем, так как мы больше не планируем переходить на Swift» - и рассказал о новом направлении в официальном блоге проекта. Части Ladybird будут переписаны на Rust. Ранее от этого языка отказались, поскольку он плохо подходит для объектно-ориентированного стиля программирования в духе C++, но после года топтания на месте команда решила сделать прагматичный выбор.

Особого внимания заслуживает то, как именно проходила миграция. Клинг использовал ИИ-ассистенты — Claude Code и Codex - для перевода кода с C++ на Rust, начав с JavaScript-интерпретатора: он хорошо изолирован, имеет чёткие входные и выходные данные и покрыт тестами из официального набора ECMAScript Test Suite. При этом процесс нельзя назвать «вайб-кодингом» - Клинг подчёркивает, что всё было под его непосредственным руководством: он сам решал, что и в каком порядке портировать, задавал сотни небольших промптов и проводил несколько раундов критического ревью с помощью разных моделей.

Результат впечатляет: около 25 000 строк кода на Rust за две недели - по оценке самого Клинга, вручную на это ушли бы месяцы. При этом все AST-деревья и байткод, генерируемые Rust-версией, побайтово совпадают с выводом C++-оригинала. Ни одной регрессии.

Вместе с тем разработчики не собираются полностью уходить от C++: основная работа над движком продолжится на нём, а перевод подсистем на Rust будет идти параллельно как долгосрочный побочный процесс.

Вокруг самого Клинга и проекта хватает споров. Его обвиняли в трансфобии - в частности, из-за отказа сделать документацию SerenityOS гендерно-нейтральной. Проект получил спонсорство от Cloudflare, к которому у сообщества неоднозначное отношение. Отдельные споры вызвал дистрибутив Omarchy на базе Arch Linux, связанный с проектом. Для части сообщества этого достаточно, чтобы полностью отвергнуть Ladybird.