Как стать автором
Поиск
Написать публикацию
Обновить

Автор проекта SerenityOS представил браузер Ladybird

Время на прочтение4 мин
Количество просмотров4.3K

Браузер Ladybird проходит тест Acid3 на 100 баллов. awesomekling.github.io

Андреас Клинг представил проект веб-браузера Ladybird. В новом браузере веб-страницы рендерит не какая-то версия открытых движков Gecko или Blink, а JavaScript обрабатывает не форк свободных SpiderMonkey или V8. Клинг построил кроссплатформенный браузер на основе движков LibWeb и LibJS из другого своего проекта — операционной системы SerenityOS.

Как браузер, так и его библиотеки написаны на языке C++ с участием библиотеки Qt. (Хотя у сообщества разработки SerenityOS в разработке находится язык программирования с безопасностью доступа к памяти Jakt, он ещё не готов к использованию в Ladybird.) Браузер Ladybird и компоненты его движка лицензированы под двухпунктной лицензией BSD, то есть допускается распространение, изменение и коммерческое (в том числе проприетарное) использование.

Клинг предлагает считать датой рождения проекта Ladybird 4 июля, когда разработчик записал небольшой видеоролик [во вставке ниже], где он создаёт простой графический интерфейс на Qt для движка LibWeb. На тот момент участники проекта SerenityOS уже довели LibWeb до успешной сборки на Linux в режиме headless, без вывода графики на экран. Клинг намеревался лишь сделать инструмент для отладки библиотеки LibWeb из SerenityOS в Linux, поскольку многим так удобнее. За 2 месяца разработки порт браузера из SerenityOS перерос в полноценный кроссплатформенный веб-браузер.


Технологический стэк браузера построен на основе 12 основных компонентов:

  • Ladybird. Приложение браузера с табами. На данный момент весь браузер Ladybird однопоточный, хотя браузер в SerenityOS использует отдельный процесс для каждой вкладки. Клинг обещает это исправить.
  • LibWeb. Компонент появился в 2019 году под названием LibHTML. Это веб-движок с поддержкой нескольких стандартов: HTML, DOM, CSS, SVG и так далее. Компонент на уровне Platform проводит инъекцию вспомогательного кода Qt для циклов событий, таймеров, настроек системных шрифтов и прочего.
  • LibJS. Компонент впервые появился через 9 месяцев после LibHTML, в 2020 году; процесс написания первых версий записан в видеоролике. LibJS отведены обработка ECMAScript, среды выполнения JavaScript и сборка мусора.

    В Ladybird нет и не предвидится JIT-компилятора для JavaScript, браузер построен на традиционном интерпретаторе с деревом абстрактного синтаксиса. Клинг говорит, что не хочет связываться со сложностями безопасности динамической компиляции, поэтому постарается выжать максимум возможного из технологий без JIT.
  • LibGfx. Отображение двумерной графики, текста и форматов картинок (PNG, JPG, GIF и другие).
  • LibRegex. Движок регулярных выражений.
  • LibXML. Парсер XML.
  • LibWasm. Парсер и интерпретатор WebAssembly.
  • LibUnicode. Библиотека поддержки Юникода.
  • LibTextCodec. Библиотека конвертации кодировки текста.
  • LibMarkdown. Парсер Markdown.
  • LibCore. Различные вспомогательные функции: ввод-вывод, время и дата, MIME и так далее.
  • Qt. Работа кроссплатформенных элементов графического интерфейса. Поскольку мультипоточная система RequestServer за пределами SerenityOS ещё не готова, проект Ladybird полагается на Qt для работы с сетью.

Клинг оценивает, что для ежедневного использования браузеру Ladybird ещё далеко: проект «сыроват» и находится на ранних стадиях развития. Конечно, Ladybird проходит тест Acid3 (самую новую версию) на 100 баллов из 100. Тем не менее для реального использования этого мало: Acid3 содержит лишь базовые функции CSS и разнообразные интерфейсы DOM/HTML, но не популярные в современном вебе flexbox или CSS grid.

Пусть Ladybird и улучшается от версии к версии, у проекта много проблем совместимости. Клинг не обещает никаких конкретных сроков готовности браузера. По оценке автора проекта, на доведение продукта до адекватного состояния могут уйти годы. Разработчик настроен оптимистично и не разделяет точку зрения, что для написания ещё одного браузерного движка нужны миллиарды долларов и сотни программистов.


Подреддит /r/programming в браузере Ladybird сейчас открывается, но выглядит некорректно. awesomekling.github.io

На данный момент Ladybird работает в Linux, macOS, Windows (через прокладку Windows Subsystem for Linux) и Android. Он постепенно появляется среди пакетов многих дистрибутивов, например, Ladybird уже присутствует в Arch Linux. Самая зрелая и протестированная версия — это версия для Linux.

Библиотеки для работы браузера заимствованы из SerenityOS, в единое целое их соединяет Qt. В теории, браузер может работать везде, где работает Qt, и за счёт этого достигать высокой портируемости.

Код браузера публикуется под свободной лицензией. Клинг говорит, что изменить курс разработки деньгами невозможно. Вместо этого разработчик предлагает помочь проекту коммитами, баг-репортами или профинансировать свой труд и труд Линуса Гроха и Сэма Аткинсона — других разработчиков, которые пишут компоненты браузера.

Сам Клинг с 2021 года живёт за счёт пожертвований, которые получает в рамках работы над SerenityOS и другими проектами. SerenityOS — UNIX-подобная операционная система, которую с 2018 года создаёт Андреас Клинг и сотни других участников. Браузер Ladybird не построен на уже существующем браузерном движке; SerenityOS также написана практически с нуля и не является ещё одним дистрибутивом Linux.

Репозиторий Ladybird
Теги:
Хабы:
Всего голосов 10: ↑10 и ↓0+10
Комментарии0

Другие новости

Ближайшие события