В июне 2025 года проект Servo, инновационный веб-движок с открытым исходным кодом, продолжил активное развитие, расширяя возможности поддержки современных веб-технологий и совершенствуя внутренние механизмы работы. В центре внимания этого месяца оказались улучшения, связанные с обработкой изображений, внедрением новых веб-API, совершенствованием производительности и расширением интеграционных возможностей для разработчиков. Многие изменения влияют как на конечных пользователей, так и на разработчиков, создающих сайты и приложения, работающие на базе Servo. Одной из наиболее заметных новинок стало полноценное отображение анимированных GIF-файлов. Теперь браузер способен воспроизводить эти графические файлы с анимацией без значительной нагрузки на ресурсы процессора.
Работа над этим функционалом требовала тщательной архитектурной проработки, чтобы встроить поддержку GIF-анимаций в существующую систему анимации браузера без негативного влияния на производительность. Кроме того, была реализована поддержка SVG-изображений, загружаемых через стандартный HTML-тег img. Это важный шаг в сторону универсальности обработки графических форматов, поскольку SVG является широко распространённым форматом векторной графики, который позволяет дизайнерам создавать масштабируемые изображения с высоким качеством отображения на различных устройствах. Проект также приветствует новых участников – в этом месяце два стажёра Outreachy начали работу над улучшениями Servo. Они сосредоточены на обновлении инфраструктуры непрерывной интеграции и внедрении нового мониторинга сети в инструменты для разработчиков.
Эти усилия направлены на повышение стабильности и удобства поддержки проекта. Значительные улучшения коснулись реализации механизма компоновки страниц (layout). Традиционно Servo применял алгоритм компоновки, требующий перерасчёта всей страницы при любом изменении. Это негативно сказывалось на производительности при динамических изменениях контента. В июне были введены изменения, позволяющие выполнять частичный перерасчёт макета — так называемую инкрементальную компоновку.
Теперь движок может обрабатывать локальные изменения без повторного рендеринга всей страницы, что заметно ускоряет работу с динамическими CSS-стилями и улучшает отзывчивость интерфейса. Продолжается работа над поддержкой Trusted Types API — механизма безопасности, защищающего веб-приложения от определённых видов атак, связанных с внедрением вредоносного кода. Уровень прохождения тестов по этой функции возрос с 47% до 58% за май, отражая постоянное улучшение реализации. Параллельно совершенствуется политика безопасности контента (Content Security Policy), которая теперь проходит около 59% автоматизированных тестов. Это дает основания ожидать в ближайшем будущем более стабильную и безопасную работу веб-приложений в среде Servo.
В числе новых возможностей появились поддержка HTML-элемента input с типом color, что позволяет создавать цветовые формы ввода с помощью стандартных средств браузера, а также объект URLPattern — полезный инструмент для сопоставления и обработки URL-адресов на клиентской стороне. Для разработчиков стали доступны новые методы взаимодействия с потоками данных и DOM: методы TransformStream, pipeThrough для ReadableStream и setHTMLUnsafe для ShadowRoot расширяют возможности управления асинхронным потоком данных и манипуляции деревом элементов. Свойство scrollingElement теперь корректно отображает элемент для прокрутки в документе, что улучшает совместимость с современными веб-API. · Были реализованы также функции, связанные с буфером обмена — метод readText на navigator.clipboard, позволяющий безопасно считывать текстовые данные пользователем.
Свойство type на Stylesheet добавляет возможность уточнять тип применяемого стиля, что полезно для динамического изменения внешнего вида страниц. Важные улучшения коснулись поддержки HTMLVideoElement как источника изображения для 2D canvas API. Это расширяет горизонты использования видео в динамической графике и интерактивных приложениях. Также внедрена возможность сериализации ImageBitmap для передачи через postMessage, что повышает эффективность обмена изображениями между разными контекстами веб-приложений. Различные баги и несовпадения с веб-спецификациями были устранены — теперь события ввода запускаются корректно в соответствии с последовательностью событий клавиатуры, были исправлены проблемы с доступностью и сериализацией атрибутов, а также с поведением Request headers.
Улучшена обработка ошибок конструктора ImageData и корректно работают значения в custom elements. В части взаимодействия браузера с инструментами автоматизации и тестирования, WebDriver сервер получил улучшения в обработке кликов, действий колёсика мыши и синхронизации команд, что делает работу с автоматическим контролем браузера более предсказуемой и стабильной. Анонсированы планы по интеграции Vello как нового бекенда для 2D canvas, что значительно повысит производительность графических операций и снизит нагрузки на аппаратные ресурсы. Также был совершен ряд правок, направленных на корректное отображение псевдоэлемента ::placeholder и исправление проблем с вводом текста. Отдельного внимания заслуживают нововведения в части взаимодействия с JavaScript из среды внедрения (embedder).
Теперь встроенные приложения могут выполнять JS-код внутри webview и получать асинхронные ответы, что открывает новые возможности для создания гибких и интерактивных интеграций с браузерной логикой. В дополнение к этому, механизмы по умолчанию предоставляют стили и интерактивность для элементов управления формами и мультимедийных компонентов, что снижает нагрузку на разработчиков при создании кастомных встраиваний движка. Автоматическая передача системных светлых и тёмных тем на всём уровне webview также улучшает визуальное восприятие, обеспечивая единообразие дизайна. Интеграция с инструментами разработчика Servo также была усовершенствована — элементы теперь выделяются в инспекторе макета, а узлы <!DOCTYPE> отображаются корректно, что облегчает отладку и анализ страниц. Убрана необходимость отдельной настройки включения поддержки Shadow DOM, так как эта функция была активирована по умолчанию в марте 2025 года, что упрощает конфигурацию проекта.
Следующим шагом стал запуск расширенной системы автоматического бенчмаркинга, которая теперь способна измерять время запуска Servo и загрузки основной страницы на HarmonyOS. Это поможет своевременно выявлять регрессии и оптимизировать работу на разнообразных платформах. Улучшена возможность написания юнит-тестов для API встраивания Servo, что способствует более быстрой и надёжной отладке проблем, связанных с завершением работы движка и устранением ошибок. Оболочка servoshell получила ряд обновлений: флаг --user-agent теперь правильно устанавливает заголовок User-Agent, была временно отключена поддержка сервис-воркеров в экспериментальных функциях, а при сборке с Address Sanitizer теперь проверяются все зависимости C++. На платформе Windows для загрузки используется winget как запасной вариант при отсутствии choco.
Также оболочка на старте корректно определяет системную светлую или тёмную тему, а геометрия экрана на OpenHarmony теперь правильно сообщается движку. В области производительности введены механизмы более эффективного удаления изображения из GPU-кэша, что снижает нагрузку на графическую подсистему и экономит ресурсы. Заметно уменьшен объём используемой памяти за счёт оптимизации хранения данных HSTS, что обеспечивает экономию более 60 мегабайт. Активно ведётся мониторинг использования памяти для sessionStorage и localStorage, данных публичного суффиксного списка и системных шрифтов. Также размер окончательного бинарного файла Servo уменьшился на два мегабайта благодаря удалению неиспользуемого кода DOM.
Команда бережно исправила множество сбоев и синий экранов, связанных с анимированными изображениями, мультимедийными элементами с неизвестной длительностью, графическими объектами canvas и другими частями движка. Был исправлен источник блокировок в потоках с большими блоками данных и устранены сбои при закрытии вкладок и удалении iframes. Особое внимание уделено отказу от небезопасных практик в использовании пользовательских значений JavaScript в Rust Drop-методах с целью повышения безопасности и стабильности. Стабильность и актуальность кода поддерживаются благодаря обновлению ключевых зависимостей — форка WebRender и Stylo, что обеспечивает сохранение совместимости с технологиями Firefox и снижает риски появления ошибок. В завершение стоит отметить, что проект продолжает получать поддержку в виде регулярных пожертвований и спонсорства, что обеспечивает финансирование инфраструктуры и развитие образовательных инициатив.
Благодаря прозрачности расходов, сообщество может быть уверено в эффективном использовании ресурсов. Подводя итоги, можно констатировать, что июнь 2025 года стал сезоном значительного прогресса для Servo, укрепляющего позиции как перспективного и оперативно развивающегося веб-движка, ориентированного на безопасность, производительность и удобство интеграций. Разработка движка продолжает следовать современным стандартам, открывая новые возможности как для пользователей, так и для разработчиков, взаимодействующих с веб-технологиями будущего.