Для продолжения разработки браузера Ladybird решено использовать язык Swift

Разработчики экспериментального браузера Ladybird объявили о намерении использовать язык программирования Swift в качестве основного для своего проекта. Включение в состав кода на Swift планируется начать осенью, после выхода релиза Swift 6 (использовать ветку Swift 5 мешает привязка к старой версии Clang, несовместимой с текущей кодовой базой Ladybird на С++). Благодаря возможности совмещения кода на С++ и Swift, внедрение Swift будет производиться постепенно без переписывания имеющегося кода.

Выбор Swift обусловлен рядом преимуществ, включая безопасные методы работы с памятью, защиту от состояний гонки, современный синтаксис и эргономику. Особое значение для команды Ladybird имеет объектно-ориентированная природа Swift, что позволяет точнее моделировать веб-спецификации и внутренние компоненты браузера. Разработчики также отмечают улучшающуюся поддержку Swift для не-Apple платформ и активную работу над совместимостью с C++, что открывает путь к постепенному внедрению языка в проект. Несмотря на исторические связи Swift с Apple, язык становится всё более независимым, о чём свидетельствует, например, перенос его репозитория в отдельную организацию на GitHub.

Андреас Клинг, основатель проекта Ladybird, поделился своими мыслями о Rust. По мнению Клинга, хотя Rust обладает впечатляющей экосистемой, он менее удобен для разработки долгоживущих программ с большими сложными графами объектов. Кроме того, Клинг охарактеризовал сообщество Rust как "токсичное".

Напомним, что изначально браузер Ladybird развивался в рамках проекта по разработке операционной системы SerenityOS. В июне 2024 года, Андреас Клинг, который в своё время работал в компании Nokia и занимался разработкой Safari, решил отделить проект браузера от проекта операционной системы, и полностью посвятить своё время его разработке. В июле проект получил пожертвование в 1 млн. долларов и приступил к формированию некоммерческой организации Ladybird Browser Initiative.

Браузер написан на языке С++ и распространяется под лицензией BSD. Проектом развивается собственный движок LibWeb, JavaScript-интерпретатор LibJS, библиотека отрисовки текста и 2D-графики LibGfx, движок для регулярных выражений LibRegex, XML-парсер LibXML, интерпретатор промежуточного кода WebAssembly (LibWasm), библиотека для работы с Unicode LibUnicode, библиотека для преобразования текстовых кодировок LibTextCodec, парсер для разметки Markdown (LibMarkdown), библиотеки с криптографическими примитивами (LibCrypto, LibTLS), библиотека для работы с архивами LibArchive, библиотеки для воспроизведения звука и видео (LibAudio, LibVideo) и библиотека LibCore с общим набором полезных функций, таких как преобразование времени, ввода/вывод и обработка MIME-типов.

В Ladybird применяется многопроцессная архитектура, в которой занимающийся формированием интерфейса процесс отделён от процессов, обеспечивающих обработку web-контента, отправку запросов по сети, декодирование изображений и хранение Cookie. Связанные с декодированием изображений и сетевым взаимодействием обработчики выделены в отдельные процессы для усиления изоляции и защиты. Для каждой вкладки используется отдельный процесс обработки web-контента, изолированный от остальной системы. Для построения интерфейса в macOS используется AppKit, в Android - родной для данной платформы API создания графического интерфейса, а на остальных платформах - Qt. Поддерживаются основные web-стандарты (браузер проходит тесты Acid3), HTTP/1.1 и HTTPS. Графический интерфейс оформлен в классическом стиле и поддерживает вкладки.



Источник: https://www.opennet.ru/opennews/art.shtml?num=61685