Servo 0.2

1000px.jpg

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

>>> Источник

©  Linux.org.ru