Главная | IT | Выпуск браузерного движка Servo 0.1.0, который теперь доступен в форме crate-пакета

Выпуск браузерного движка Servo 0.1.0, который теперь доступен в форме crate-пакета

Опубликован выпуск браузерного движка Servo 0.1.0 и развиваемого вместе с ним демонстрационного браузера ServoShell, написанных на языке Rust. Готовые сборки сформированы для Linux, Android, macOS и Windows. Помимо отдельных сборок Servo теперь поставляется и в форме crate-пакета, позволяющего встраивать движок в приложения и использовать его в форме библиотеки.

Servo 0.1.0 стал первым выпуском, для которого обеспечен длительный цикл поддержки (LTS). Новые LTS-ветки будут публиковать раз в 6 месяцев на основе очередного промежуточного выпуска. Поддержка LTS-выпусков будет осуществляться 9 месяцев (3 месяца даётся для перехода на новую LTS-ветку). От обычных выпусков LTS-ветка отличается публикацией обновлений с исправлениями уязвимостей в библиотеке servo, JavaScript-движке и зависимостях. Предполагается, что LTS-ветка будет полезна для разработчиков, встраивающих Servo в свои проекты и не желающих ежемесячно переходить на очередной промежуточный выпуск с возможными изменениями в API.

Выпуск Servo 0.1.0 LTS построен на основе сформированной несколько дней назад промежуточной версии 0.0.6, в которой были реализованы следующие новые возможности:

  • В HTML-элементe «button» реализованы атрибуты «command» и «commandfor», которые можно использовать в кнопках вместо атрибутов «popovertargetaction» и «popovertarget» для декларативной настройки взаимодействия с меню, вызываемым при нажатии на кнопку.
  • Добавлен CSS-селектор «:modal», позволяющий определить, что диалог, созданный через элемент <dialog>, является модальным.
  • Реализовано CSS-правило @property, позволяющее регистрировать собственные CSS-свойства.
  • Добавлены CSS-свойства «alignment-baseline» и «baseline-shift» для выравнивания текста по вертикали.
  • Добавлена поддержка заголовка «Content-Security-Policy: base-uri», ограничивающего URL, которые могут использоваться в HTML-элементе <base>.
  • Добавлена частичная поддержка отложенной загрузки iframe-блоков, при которой содержимое, находящееся вне видимой области, не загружается до тех пор, пока пользователь не прокрутит страницу в место, непосредственно предшествующее элементу. Включение отложенной загрузки страниц осуществляется через атрибут «loading=lazy» в теге iframe (<iframe loading=lazy>).
  • Добавлена частичная поддержка CSS-свойства «transform-style: preserve-3d» для позиционирования дочерних элементов в 3D-пространстве.
  • Реализованы события pointermove, pointerdown, pointerup и pointercancel.
  • Обеспечен поворот изображений на основе метаданных EXIF.
  • Обеспечено использование переменной окружения LANG для выбора языка по умолчанию для заголовка «Accept-Language» и свойства navigator.language.
  • Добавлены API Pointer Events и UserActivation.
  • Реализованы методы import.meta.resolve(), formData(), toJSON(), createIndex(), deleteIndex() и index().
  • В демонстрационном браузере servoshell для изменения настроек
    реализованы страницы servo:preferences (GUI конфигуратор) и servo:config (изменение отдельных параметров в стиле about:config). Добавлена поддержка перезагрузки страницы при нажатии F5.

  • В инструментах для web-разработчиков в режиме инспектирования добавлена поддержка редактирования атрибутов DOM, в web-консоли обеспечен предпросмотр объектов, передаваемых через console.log(), в отладчике появилась возможность приостановки и возобновления выполнения скриптов.
  • Расширен API для встраивания браузерного движка в приложения.

Движок Servo изначально развивался компанией Mozilla, но затем перешёл под покровительство организации Linux Foundation. Servo отличается поддержкой многопоточного рендеринга web-страниц, распараллеливанием операций с DOM (Document Object Model) и задействованием предоставляемых языком Rust механизмов безопасного программирования. Servo изначально создан с поддержкой разбиения кода DOM и рендеринга на более мелкие подзадачи, которые могут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU. В Firefox уже интегрированы некоторые части Servo, такие как многопоточный CSS-движок и система отрисовки WebRender.

Источник