Домой Статьи и аналитика Технологии Servo 0.2: что нового в экспериментальном движке на Rust

Servo 0.2: что нового в экспериментальном движке на Rust

Крупное обновление движка Servo приносит 534 коммита, улучшенную мобильную оболочку и расширенную поддержку стандартов Web Platform.

Servo 0.2: что нового в экспериментальном движке на Rust
Servo 0.2: что нового в экспериментальном движке на Rust — иллюстрация к материалу. Источник: linux.org.ru

Опубликован релиз Servo 0.2.0 — новой итерации экспериментального браузерного движка, написанного на языке Rust. Выпуск, состоявшийся 31 мая 2026 года, вобрал в себя изменения за апрель, составившие рекордные для проекта 534 коммита. Напомним, что Servo развивается как независимый проект под эгидой Linux Foundation Europe и ставит своей целью создание легковесного встраиваемого веб-движка для мобильных платформ, различных приложений и кастомных браузерных оболочек.

Ключевые нововведения и улучшения

  • Обновление servoshell для Android: В мобильной демонстрационной оболочке полностью переработан интерфейс и добавлен экран истории. Размер установочного APK-файла сократился примерно на 30%, а также была устранена критическая ошибка, вызывавшая отображение черного экрана при закрытии настроек или переключении между приложениями. Добавлена возможность закрытия вкладок в версии для OpenHarmony.
  • Поддержка языков CJK: В движке раскладки скорректирована обработка переноса строк для китайского, японского и корейского языков. В интерфейс servoshell на платформах Windows, Linux и FreeBSD интегрированы CJK-шрифты, что критически важно для корректного рендеринга сайтов на данных языках.
  • Интерактивный просмотр JSON: Servo получил встроенный инструмент для отображения JSON-файлов в виде интерактивного дерева с использованием pretty-printer. Это значительно упрощает работу разработчиков с API-ответами и структурированными данными.
  • Расширение поддержки Web Platform: Внедрена поддержка функций color-mix() с произвольным количеством цветов, tab-size, text-align: match-parent, а также свойств minimum-scale и maximum-scale в теге <meta>. Реализованы воспроизведение видео, создание Worker из blob URL и WebGL-контекст для OffscreenCanvas.
  • Новые DOM API: Добавлены события selectionchange, экспериментальный StorageManager, activeElement для Document и ShadowRoot, crypto.subtle.supports(), а также свойства cellPadding, cellSpacing и align для HTMLTableElement. Разработчики отмечают, что Servo стал первым браузерным движком с поддержкой crypto.subtle.supports().
  • Навигация и работа с текстом: Улучшено управление фокусом через клавишу Tab и исправлена работа IME. Реализовано удаление слов целиком при помощи комбинаций Ctrl+Backspace или Option+Backspace (для macOS).
  • Инструменты разработчика: Совместно с Firefox DevTools улучшены панели Inspector, Console и Debugger. Добавлена поддержка отображения @layer, инспекция переменных через Scopes, отладка worker-скриптов и начальная поддержка Style Editor.

Безопасность и хранение данных

Значительно усилена безопасность: CryptoKey теперь гарантированно затирает буферы с ключевым материалом после завершения операций. Исправлены уязвимости, связанные с междоменным доступом к DOM API, ошибками изоляции localStorage и sessionStorage в sandboxed iframe, а также чтением памяти вне границ буфера в WebGL2.

Проект перешел на новую систему хранения данных «client storage», которая обеспечивает единый формат хранения на диске и централизованное управление квотами для веб-функций. IndexedDB теперь доступен в экспериментальном режиме с улучшенной обработкой транзакций и запросов по диапазонам ключей.

Производительность и API

Версия 0.2.0 является ломающим обновлением API по сравнению с 0.1.x. Внедрена поддержка пользовательских HTTP-заголовков через WebView::load_request и асинхронное получение файлов cookie.

Разработчики добились заметного прироста производительности: ускорена загрузка спецификации ECMAScript, сокращено время выполнения первого TLS-сеанса на 30–60 мс и снижено потребление памяти DOM-узлами на 16 байт на узел. Страница about:memory теперь предоставляет более точные данные об аллокациях, включая показатели libc на Linux.

Источник: https://www.linux.org.ru