Servo 0.2

Опубликован выпуск Servo 0.2.0 — новой версии экспериментального браузерного движка, написанного на Rust. Релиз вышел 31 мая 2026 года и включает изменения, внесённые в апреле: всего разработчики насчитали 534 коммита, что стало новым месячным рекордом проекта. Servo развивается как независимый проект под эгидой Linux Foundation Europe и ориентирован на создание лёгкого встраиваемого web-движка для приложений, мобильных платформ и экспериментальных браузерных оболочек.
Основные изменения
-
Переработан интерфейс servoshell для Android. В Android-версии демонстрационной оболочки Servo обновлён браузерный интерфейс и добавлен новый экран истории. APK стал примерно на 30% меньше, а также исправлена ошибка с чёрным экраном при закрытии настроек или возврате из другого приложения. Для OpenHarmony теперь можно закрывать вкладки.
-
Улучшена поддержка китайского, японского и корейского текста. В движке раскладки исправлена обработка переноса строк для CJK-языков, а в интерфейсе servoshell на Windows, Linux и FreeBSD включены CJK-шрифты. Это важно для реального отображения сайтов на языках, где правила переноса и подбора шрифтов отличаются от латиницы.
-
Добавлен интерактивный просмотр JSON. Если открыть JSON-файл как основной документ, Servo теперь показывает его через интерактивный pretty-printer. Это делает движок удобнее не только для обычного просмотра страниц, но и для разработчиков, которым приходится открывать API-ответы и структурированные данные прямо в браузере.
-
Расширена поддержка Web Platform. В Servo появились , , воспроизведение на OpenHarmony, поддержка
minimum-scaleиmaximum-scaleв , CSS-функцияcolor-mix()с произвольным числом цветов,tab-size,text-align: match-parent, созданиеWorkerиз blob URL, WebGL-контекст дляOffscreenCanvas, а также свойствоdetailуPerformanceMarkиPerformanceMeasure. -
Добавлены новые DOM API. Реализованы события
selectionchangeдля и , экспериментальныйStorageManager,activeElementдляDocumentиShadowRoot,crypto.subtle.supports(), свойстваcellPadding,cellSpacingиalignуHTMLTableElement,relatedTargetдля событийfocusиblur, а такжеtransferFromImageBitmap()дляImageBitmapRenderingContext. Разработчики отдельно отмечают, что Servo стал первым крупным браузерным движком с поддержкойcrypto.subtle.supports(). -
Улучшена навигация с клавиатуры и работа фокуса.
Tabтеперь умеет переходить через границы, аCtrl+Backspace— илиOption+Backspaceна macOS — удаляет слово целиком в полях ввода. Также исправлены ошибки фокуса и IME в настольной версии servoshell. -
Расширены инструменты разработчика. В связке с Firefox DevTools улучшены вкладки Inspector, Console и Debugger. Панель Rules теперь показывает объявления из
@layer, в Console и Debugger стало больше информации о функциях, массивах, объектах и других значениях, появилась инспекция локальных и глобальных переменных через Scopes, отладка worker-скриптов и начальная поддержка Style Editor. -
Усилена безопасность.
CryptoKeyтеперь затирает буферы с ключевым материалом после использования. Исправлены проблемы с доступом к DOM API между документами с разными origin, ошибки изоляцииlocalStorageиsessionStorageв sandboxed iframe иiframe srcdoc, некорректная доступность IndexedDB в sandboxed iframe и worker изdata:URL, возможность вытеснения cookie между некоторыми IP-origin, чтение памяти за пределами буфера вtexImage3D()для WebGL2, а также неопределённое поведение в обработчике сигналов servoshell. -
Продвинулась работа над IndexedDB и хранилищем. IndexedDB включён в экспериментальном режиме servoshell и переведён на новую систему «client storage», которая должна дать Servo единый формат хранения на диске и общее управление квотами для web-функций, сохраняющих данные. Также улучшены запросы по ключевым диапазонам, обработка транзакций, ключей, значений и исключений.
-
Обновлён API для встраивания Servo. Поскольку это второй месячный выпуск библиотеки Servo, разработчики уточнили политику совместимости: версия
0.2.0считается ломающим обновлением относительно0.1.x. Добавлена загрузка URL с пользовательскими HTTP-заголовками черезWebView::load_request, асинхронное получение cookie, очистка только session cookies без удаления постоянных cookie, передачаdestinationиreferrer_urlпри перехвате запросов, а также режим временного хранилища для изоляции данных сессии. -
Исправлены ошибки отображения и поведения страниц. Разработчики упоминают исправления для
console.log, CSS-анимаций,box-shadow,display: contents,display: inline-flex,display: table-cell,overflow: clip, абсолютного позиционирования внутри grid,word-spacing,removeChild()наDocumentиURL.revokeObjectURL(). Также улучшен внешний вид и placeholder у . -
Повышена производительность и снижено потребление памяти. Исправлены крупные неэффективности: ускорена загрузка спецификации ECMAScript за счёт переработки обработки атрибутов
idиname, первый TLS-сеанс стал быстрее на 30–60 мс, уменьшен IPC-трафик между потоками, снижено потребление памяти DOM-узламиAttr,TextиCharacterDataна 16 байт на узел, исправлена утечка памяти при удалении и. Страницаabout:memoryтеперь точнее учитывает выделения памяти, включая libc-аллоцирования на Linux.
В итоге Servo 0.2 — это очередной шаг к превращению проекта в пригодный для встраивания web-движок: улучшается мобильная оболочка, растёт совместимость с современными web-стандартами, закрываются ошибки безопасности и постепенно стабилизируется API для разработчиков приложений.
>>> Источник
