Servo 0.4.0 принёс рекордные 558 коммитов за июнь. В экспериментальном режиме заработала attr() (@Loirooriol), image(<color>), closest-corner и farthest-corner в ellipse() и circle(), математические выражения типа sign(1em - 32px) теперь разрешаются не на этапе парсинга. Добавлены font-feature-settings в @font-face, а также медиа-запросы @media (device-width), (orientation), (pointer), (hover) и их варианты.
Среди DOM API — SharedWorker, console.dir(), customElementRegistry на Document и ShadowRoot, конструктор и initialize() реестра, textStream() у Request, Response и Blob, методы захвата указателя и touch-события, crypto.subtle.digest() для KT128/KT256 и crypto.subtle.getPublicKey() для ML-KEM/ML-DSA.
JS-движок SpiderMonkey обновлён до 140.11.0 и 140.12.0 — закрыты CVE-2026-8388, CVE-2026-8391, CVE-2026-8974, CVE-2026-8975, MFSA 2026-48, MFSA 2026-58. RSA в SubtleCrypto теперь constant-time (пока уязвим для Marvin Attack, RUSTSEC-2023-0071), ML-DSA — constant-time Decompose (RUSTSEC-2025-0144). XSS в file:/// листингах исправлен.
Вёрстка на lichess.org стала значительно лучше, улучшенная обработка variable fonts сделала читаемыми Zulip и Speedtest. Google Photos и Cash Converters работают, Google Maps и OpenStreetMap рендерятся, но с огрехами интерактивности.
В работе: универсальный attr() (флаг --pref layout.css.attr.enabled), WebGPU — реализованы copyExternalImageToTexture(), createQuerySet(), resolveQuerySet(), pushDebugGroup() и др. Началась поддержка accessibility, выделения текста и Web Animations. Для встраивания проектируется C API со стабильным ABI.
В servoshell: требуется Android 13+, drag and drop файлов, горизонтальный скролл таб-бара, полноэкранный режим на текущем мониторе, localhost автоматически подразумевает http://. Интеграция с DevTools — консоль показывает непойманные исключения, можно инспектировать вложенные массивы и Map, в Scopes видны (uninitialized), this, глобальная область. Сборка исправлена на riscv32, riscv64, arm64, Android-версия переписана на Compose UI и Kotlin.
BoxFragment похудел на 17% (288→240 байт), утечки памяти при перезагрузке и в 2D-канвасах устранены. 2D-канвас потребляет на 23% меньше энергии, изображения декодируются и кешируются асинхронно. Инкрементальная раскладка и обновления stacking context tree дали до 10% ускорения в микро-бенчмарках. Фаззинг помог найти и исправить 16 краш-багов.
Для защиты от паник при GC внедрён метод safe_borrow_mut() с маркером NoGC — часть перехода к безопасному взаимодействию со SpiderMonkey.
22 новых разработчика влили свой первый патч. Проект получает 7681 USD/мес пожертвований.