Как стать автором
Обновить

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

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

Браузер 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

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

Истории

Работа

QT разработчик
6 вакансий

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

19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн