May in Servo: user scripts, mp4 compat, blackboxing in DevTools, and more! - Servo aims to empower developers with a lightweight, high-performance alternative for embedding web technologies in applications.
May in Servo: user scripts, mp4 compat, blackboxing in DevTools, and more!
Plus seven new commands for execCommand(), and Sanitizer API now experimental.
Posted 2026-06-30
Servo 0.3.0 contains all of the changes we landed in May, which came out to 391 commits (March: 534).<br>For security fixes, see § Security .
We’ve shipped several new web platform features:
‘font-kerning: none’ (@simonwuelker, #44634)
‘font-variant-east-asian’ (@simonwuelker, #44989)
‘font-variant-ligatures’ (@simonwuelker, #44903)
‘font-variant-numeric’ (@simonwuelker, #44950)
‘font-variant-position’ (@simonwuelker, #45142)
mp4 files without fast start in (@calvaris, #45084)
(@yezhizhen, #45028)
(@yezhizhen, #45111)
layout (@mrobinson, #44791)
Plus a bunch of new DOM APIs:
onslotchange property on ShadowRoot (@jdm, #44688)
screenLeft and screenTop on Window (@TG199, #45128)
new Blob() with {endings: "native"} (@yezhizhen, #44803)
new PerformanceMark() (@shubhamg13, #44702)
parseHTML() on Document (@kkoyung, #44952)
readAsBinaryString() on FileReader (@yezhizhen, #44858, #44921)
performance.measure() with mark values ‘redirectStart’ , ‘redirectEnd’ , ‘secureConnectionStart’ , and ‘responseEnd’ (@shubhamg13, #44673, #44624, #44850, #44739)
We’ve also fixed some build issues on Windows (@mukilan, #45079), FreeBSD (@delan, @mrobinson, @mukilan, #44600), and for anyone building Servo on NixOS or with Nix (@freyacodes, #45051, #45135).
This is another big update, so here’s an outline:
Security<br>– memory safety fixes
Work in progress<br>– execCommand(), Sanitizer, IndexedDB, accessibility, workers
Embedding API<br>– MSRV, cookies, preferences, diagnostics
For users and developers<br>– --host-file, --userscripts, DevTools Debugger
More on the web platform<br>– focus, forms, navigation, SubtleCrypto, WebGPU
Performance<br>– about:memory, threads, layout, DOM, build times
Stability<br>– crashes, hangs, static analysis
Security
Servo’s JS runtime, SpiderMonkey 140.10.0 , had several memory safety bugs that have been fixed in Servo 0.3.0 with the update to SpiderMonkey 140.10.1 (@jschwe, #44755).<br>For more details, see CVE-2026-7322, CVE-2026-7323, and MFSA 2026-36.
Work in progress
We’re continuing to implement document.execCommand() for rich text editing , under --pref dom_exec_command_enabled (@TimvdLippe, #44735, #44973, #44887).<br>This release adds support for the ‘backColor’ , ‘foreColor’ , ‘createLink’ , ‘unlink’ , ‘superscript’ , ‘subscript’ , and ‘removeFormat’ commands (@TimvdLippe, #44644, #44682, #44657, #44710, #44677), plus partial support for the ‘insertParagraph’ command (@TimvdLippe, #44909).
We’re also working on the Sanitizer API, under --pref dom_sanitizer_enabled.<br>With the feature now enabled in servoshell’s experimental mode (@kkoyung, #44701), this release adds support for setComments() , setDataAttributes() , allowProcessingInstruction() , removeProcessingInstruction() , and removeUnsafe() on Sanitizer (@kkoyung, #44734, #44983).
IndexedDB continues to improve, under --pref dom_indexeddb_enabled.<br>This release brings a more conformant abort() on IDBTransaction (@Taym95, #43950).
All of the features above are enabled in servoshell’s experimental mode.
We’ve made more progress towards accessibility support, including the name from contents algorithm (@alice, @delan, @mrobinson, #44439) and several changes towards building the accessibility tree incrementally (@alice, @delan, @mrobinson, #44766, #45035, #45207, #44768, #44785, #44801, #44767, #45029).<br>The latter is critical for performance in real-world web content.
We’re now working on SharedWorker and ServiceWorker , under --pref dom_sharedworker_enabled and --pref dom_serviceworker_enabled respectively.<br>This release adds support for new SharedWorker() (@Taym95, #44761), and parts of the ServiceWorker API (@gterzian, @arihant2math, #45082, #44787).
Embedding API
Servo now requires Rust 1.88.0 or newer, up from the old MSRV of 1.86.0 (@sagudev, #44815).<br>We run compile tests with the MSRV, but most of our testing is now done with Rust 1.95.0 (@simonwuelker, #44632).
Breaking changes to the cookies methods in our SiteDataManager API (@longvatrong111, #44708):
SiteDataManager::clear_cookies now takes an additional callback argument, allowing it to be called async – to continue calling it sync, pass None as the callback
SiteDataManager::clear_session_cookies now takes an additional callback argument, allowing it to be called async – to continue calling it sync, pass None as the callback
SiteDataManager::set_cookie_for_url now takes an additional callback argument, allowing it to be called async – to continue calling it sync, pass None as the callback
SiteDataManager::set_cookie_for_url_async has...