Servo 0.4.0

1000px.jpg

Опубликован выпуск Servo 0.4.0 — экспериментального браузерного движка, написанного на языке Rust. Релиз состоялся 31 июля 2026 года и объединил 558 изменений, внесённых в проект в течение июня. Готовые сборки демонстрационной оболочки Servo распространяются для Linux, macOS, Windows, Android и OpenHarmony. Исходный код доступен под лицензией MPL 2.0.

Servo создаётся как лёгкий и встраиваемый движок для отображения веб-содержимого в сторонних приложениях. Проект не следует воспринимать как полностью готовую замену Firefox или Chromium: поставляемая вместе с ним оболочка Servoshell прежде всего предназначена для демонстрации возможностей движка и его тестирования. При этом разработчики постепенно улучшают совместимость с настоящими сайтами и формируют стабильный интерфейс для внедрения Servo в другие программы.

В версии 0.4.0 заметно улучшилось отображение сайтов. Разработчики отмечают более правильную компоновку страниц Lichess, а усовершенствованная поддержка вариативных шрифтов сделала значительно читабельнее интерфейсы Zulip и Speedtest. Google Photos и некоторые другие сложные веб-приложения уже работают в Servo, тогда как Google Maps и OpenStreetMap отображаются достаточно хорошо, но пока сохраняют проблемы с интерактивными элементами. Сравнительные снимки Servo 0.3.0 и 0.4.0 опубликованы в официальном отчёте проекта.

Основные изменения Servo 0.4.0:

  • Расширена поддержка медиазапросов CSS. Реализованы условия device-width, device-height, height, aspect-ratio, orientation, pointer, hover, а также варианты min- и max-. Это позволяет сайтам точнее адаптировать оформление к размеру экрана, его ориентации и возможностям устройства ввода.

  • Добавлен SharedWorker. Новый DOM API позволяет нескольким вкладкам и окнам одного сайта использовать общий фоновый JavaScript-процесс. Также появились console.dir(), потоковое чтение текста через textStream() и методы захвата указателя setPointerCapture(), releasePointerCapture() и hasPointerCapture().

  • Развивается поддержка пользовательских элементов. CustomElementRegistry теперь может быть связан не только с глобальным объектом, но и с отдельными документами и теневыми деревьями. Добавлены конструктор реестра и метод его инициализации.

  • Улучшена реализация CSS. В экспериментальном режиме появился расширенный вариант функции attr(). Добавлена поддержка image(), новых параметров для circle() и ellipse(), свойства font-feature-settings внутри @font-face, а вычисление выражений calc() в некоторых случаях можно откладывать до этапа формирования макета страницы.

  • Продолжена работа над WebGPU. Реализованы копирование внешних изображений в текстуры, наборы запросов и отладочные группы команд. Повышена совместимость объектов GPUTexture, выбора графического адаптера и проверки защищённого контекста. Эти функции пока активируются через экспериментальный режим Servoshell.

  • Улучшена демонстрационная оболочка. В настольной версии файлы теперь можно открывать перетаскиванием в окно, а панель вкладок прокручивается горизонтально при большом числе открытых страниц. Минимальной поддерживаемой версией мобильной системы стала Android 13; интерфейс Android-варианта переведён на Compose UI и Kotlin.

Полный перечень новых Web API и связанных изменений приведён в июньском отчёте Servo.

Отдельное внимание уделено безопасности. Используемый Servo движок JavaScript SpiderMonkey сначала обновили с версии 140.10.1 до 140.11.0. Обновление устранило в том числе уязвимости CVE-2026–8388, CVE-2026–8391, CVE-2026–8974 и CVE-2026–8975, описанные в бюллетене MFSA 2026–48. Затем SpiderMonkey довели до версии 140.12.0, включив дополнительные исправления из MFSA 2026–58. Разработчики Servo уточняют, что на момент публикации ещё не было установлено, какие именно перечисленные в этом бюллетене уязвимости применимы к движку. Исправлена возможность внедрения HTML и JavaScript в автоматически создаваемые списки файлов при открытии локальных каталогов через file://. Операции RSA и отдельный этап алгоритма ML-DSA переведены на выполнение с постоянным временем, хотя разработчики предупреждают, что текущая реализация RSA всё ещё подвержена атаке Marvin.

В интерфейсе встраивания появился метод получения контекста отрисовки из WebView, расширена документация публичного API и удалён внутренний метод send_error. Поскольку Rust пока не обладает стабильным двоичным интерфейсом, команда также начала проектировать обёртку на языке C. В перспективе она позволит подключать Servo как готовую динамическую библиотеку, не собирая весь движок вместе с приложением из исходного кода.

В числе находящихся в разработке возможностей названы видимое выделение текста, Web Animations, дальнейшее развитие доступности и расширенная реализация attr(). Загрузить Servo 0.4.0 и посмотреть полный автоматически сформированный список изменений можно на странице выпусков проекта.

>>> Подробности

©  Linux.org.ru