Servo 0.4.0

Опубликован выпуск 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 и посмотреть полный автоматически сформированный список изменений можно на странице выпусков проекта.
>>> Подробности
