Download Latest Version servo-x86_64-linux-gnu.tar.gz (46.5 MB)
Email in envelope

Get an email when there's a new version of Servo

Home / v0.0.2
Name Modified Size InfoDownloads / Week
Parent folder
servo-aarch64-android.aar 2025-11-15 51.6 MB
servo-aarch64-android.aar.sha256 2025-11-15 91 Bytes
servo-aarch64-android.apk 2025-11-15 154.3 MB
servo-aarch64-android.apk.sha256 2025-11-15 91 Bytes
servo-aarch64-apple-darwin.dmg 2025-11-15 107.7 MB
servo-aarch64-apple-darwin.dmg.sha256 2025-11-15 96 Bytes
servo-aarch64-linux-ohos.hap 2025-11-15 90.8 MB
servo-aarch64-linux-ohos.hap.sha256 2025-11-15 94 Bytes
servo-aarch64-linux-ohos.so 2025-11-15 107.7 MB
servo-aarch64-linux-ohos.so.sha256 2025-11-15 93 Bytes
servo-x86_64-apple-darwin.dmg 2025-11-15 109.9 MB
servo-x86_64-apple-darwin.dmg.sha256 2025-11-15 95 Bytes
servo-x86_64-linux-gnu.tar.gz 2025-11-15 44.0 MB
servo-x86_64-linux-gnu.tar.gz.sha256 2025-11-15 95 Bytes
servo-x86_64-windows-msvc.exe 2025-11-15 134.6 MB
servo-x86_64-windows-msvc.exe.sha256 2025-11-15 95 Bytes
servo-x86_64-windows-msvc.zip 2025-11-15 98.1 MB
servo-x86_64-windows-msvc.zip.sha256 2025-11-15 95 Bytes
README.md 2025-11-14 40.9 kB
v0.0.2 source code.tar.gz 2025-11-14 139.4 MB
v0.0.2 source code.zip 2025-11-14 216.5 MB
Totals: 21 Items   1.3 GB 0

v0.0.2

This release is equivalent to nightly 2025-11-14, with some additional manual testing of the release artifacts. For our first release, the version number received a lot of attention. We are still establishing our release workflow, and this will be reflected in the version numbering scheme once the initial issues have been ironed out. See also our v0.0.1 release blogpost

Trying out the Servo Tech demo

MacOS

The macOS releases are not signed yet, so you will need to follow the troubleshooting guide in order to run the Servo Tech Demo binary on your Mac.

Linux

If you see an error loading shared libraries when starting servo on Linux, please refer to the troubleshooting guide.

HarmonyOS

Please note that the servo-aarch64-linux-ohos.hap attached here is signed for OpenHarmony, not HarmonyOS. For HarmonyOS self-signing is currently required - You can download the servo-aarch64-linux-ohos.so shared library and use DevEco Studio to follow the instructions in the ArkTS Servo Demo repository

What's Changed

Our releases don't fully align with our monthly blog-posts yet, nevertheless we recommend reading our blog post October in servo for a curated overview of recent changes.

Automatic Changelog * script: Make file picker selection flow asynchronous by @delan in https://github.com/servo/servo/pull/39893 * servoshell: use accesskit exported from egui_winit and update egui crates by @mukilan in https://github.com/servo/servo/pull/40010 * compositor: Do not panic on touch events by @mrobinson in https://github.com/servo/servo/pull/40019 * libservo: Allow embedders to drive frame updates via `RefreshDriver` trait by @coding-joedow in https://github.com/servo/servo/pull/39072 * Implement document preloaded resources by @TimvdLippe in https://github.com/servo/servo/pull/39794 * Add simonwuelker as a code owner for xpath by @simonwuelker in https://github.com/servo/servo/pull/40027 * servoshell: Hook up Android software keyboard to embedder events. by @jdm in https://github.com/servo/servo/pull/40009 * servoshell: Add CFBundleSupportedPlatforms to Info.plist by @IsaacMarovitz in https://github.com/servo/servo/pull/40030 * mach: Android: Support custom profiles by @jschwe in https://github.com/servo/servo/pull/39982 * script: Fully initialize `ResizeObserverEntry` fields by @simonwuelker in https://github.com/servo/servo/pull/40036 * Validate response status and MIME type in `WorkerGlobalScope::ImportScripts` by @WaterWhisperer in https://github.com/servo/servo/pull/40023 * layout: Simplify `InlineFormattingContextBuilder::start_inline_box()` by @Loirooriol in https://github.com/servo/servo/pull/40037 * CODEOWNERS: Add sagudev as CI and crown codeowner by @sagudev in https://github.com/servo/servo/pull/40051 * servoview: Focus the view when a touch input occurs. by @jdm in https://github.com/servo/servo/pull/40049 * script: use `run_a_classic_script` algorithm for worker scripts by @Gae24 in https://github.com/servo/servo/pull/39905 * compositor: Have viewport meta tag affect the layout viewport by @atbrakhi in https://github.com/servo/servo/pull/40055 * cargo-deny: add exceptions for 'unic-*' crates. by @mukilan in https://github.com/servo/servo/pull/40058 * webdriver: Miscellanous cleanup by @yezhizhen in https://github.com/servo/servo/pull/39986 * script: Don't use StyleSheet::update_from_str. by @emilio in https://github.com/servo/servo/pull/40024 * webgpu: Add the latest spec compliant GPUAdapterInfo by @tharkum in https://github.com/servo/servo/pull/39960 * Implement run steps after a timeout by @Taym95 in https://github.com/servo/servo/pull/39994 * script: Add CanGc to Seekable method in HtmlMediaElement by @willypuzzle in https://github.com/servo/servo/pull/40033 * script: Support observing "device-pixel-content-box" with ResizeObserver by @simonwuelker in https://github.com/servo/servo/pull/40056 * Implement abortsignal timeout by @Taym95 in https://github.com/servo/servo/pull/40032 * android: Add UI setting for experimental features by @jdm in https://github.com/servo/servo/pull/40054 * config: Enable AbortController/AbortSignal by default. by @jdm in https://github.com/servo/servo/pull/40079 * script: Validate worker_type in `WorkerGlobalScope::ImportScripts` by @WaterWhisperer in https://github.com/servo/servo/pull/40078 * layout: Handle `<select>` as a widget by @Loirooriol in https://github.com/servo/servo/pull/39970 * Linux: Detect JIT support by @jschwe in https://github.com/servo/servo/pull/40071 * script: Update placeholder-shown state during IME composition events by @notJoon in https://github.com/servo/servo/pull/40082 * storage: Rename remaining references storage to webstorage by @arihant2math in https://github.com/servo/servo/pull/40090 * script: Move IndexedDB DOM interfaces to `script/dom/indexeddb/` by @WaterWhisperer in https://github.com/servo/servo/pull/40091 * wdspec tests: Check correct node type instead of asserting error for script execution by @yezhizhen in https://github.com/servo/servo/pull/39988 * Box tree construction: only unset pseudo elements if the box is rebuilt by @longvatrong111 in https://github.com/servo/servo/pull/39930 * script: Prepare to run script and callback before invoking CE constructor by @simonwuelker in https://github.com/servo/servo/pull/39013 * net: Add warning log for failed HTTP requests. by @jdm in https://github.com/servo/servo/pull/40093 * Update blurmac code by @arihant2math in https://github.com/servo/servo/pull/40096 * servoshell (Desktop): Handle window resize events despite no focused webview by @aaron-wgd in https://github.com/servo/servo/pull/40086 * script: implement structured cloning for `ImageData` by @Gae24 in https://github.com/servo/servo/pull/40084 * html: Enhance media network and decoding error handling by @tharkum in https://github.com/servo/servo/pull/39899 * compositing: Move WebRender initialization to `IOCompositor` creation by @mrobinson in https://github.com/servo/servo/pull/40101 * compositing: Fully implement pinch zoom by @mrobinson in https://github.com/servo/servo/pull/40083 * Script: len,is_empty and match for DOMString by @Narfinger in https://github.com/servo/servo/pull/39866 * xpath: Provide error message when throwing SyntaxError from parsing by @simonwuelker in https://github.com/servo/servo/pull/40103 * Fix window title stuck on last opened webview by @Taym95 in https://github.com/servo/servo/pull/39259 * script: implement remaining WorkerGlobalScope's event handlers by @Gae24 in https://github.com/servo/servo/pull/40102 * Implement UIEvent.which by @Taym95 in https://github.com/servo/servo/pull/40109 * blurmac: Update objc2 to 0.4.1 by @arihant2math in https://github.com/servo/servo/pull/40113 * layout: Use content area rect for content box queries. by @jdm in https://github.com/servo/servo/pull/40115 * script: Include target in resize observer depth calculation. by @jdm in https://github.com/servo/servo/pull/40116 * storage: Simplify layout of storage crate by @arihant2math in https://github.com/servo/servo/pull/40124 * libservo: Stop using the custom test harness and `run_api_tests` by @mrobinson in https://github.com/servo/servo/pull/40131 * fix http cache reconstruct response from cache after validation behaviour by @rayguo17 in https://github.com/servo/servo/pull/40067 * libservo: Merge input method activation into the EmbedderControl API by @mrobinson in https://github.com/servo/servo/pull/40014 * xpath: Verify context node in XPathExpression::evaluate_internal by @simonwuelker in https://github.com/servo/servo/pull/40105 * script: Have the renderer process root viewport handle keyboard scrolling by @mrobinson in https://github.com/servo/servo/pull/40108 * servoshell: Cleanup headed_window from the old code by @rodio in https://github.com/servo/servo/pull/40132 * html: Add the 'name' and 'areas' IDL attributes for by @tharkum in https://github.com/servo/servo/pull/40133 * constellation: Optimize tracing of maybe_close_random_pipeline by @jschwe in https://github.com/servo/servo/pull/39035 * OHOS/Android: Implement WebDriverCommandMsg::GetViewportSize in egl app_state. by @Narfinger in https://github.com/servo/servo/pull/40135 * ohos: Fix JIT detection by @jschwe in https://github.com/servo/servo/pull/40130 * add CanGc as argument to methods in PaintRenderingContext2D by @yerke in https://github.com/servo/servo/pull/40148 * add CanGc as argument to methods in Credential by @yerke in https://github.com/servo/servo/pull/40149 * Revert "blurmac: Update objc2 to 0.4.1 (#40113)" by @arihant2math in https://github.com/servo/servo/pull/40145 * script: Use interior mutability for stream controller queues. by @jdm in https://github.com/servo/servo/pull/40138 * script: Replace IndexedDB's unsafe uses of RootedVec<JSVal>. by @jdm in https://github.com/servo/servo/pull/40143 * add CanGc as argument to methods in BluetoothDevice by @yerke in https://github.com/servo/servo/pull/40147 * add CanGc as argument to methods in OscillatorNode and StereoPannerNode by @yerke in https://github.com/servo/servo/pull/40146 * script: Restrict scope of mutable borrow in IDBTransaction::ObjectStore. by @jdm in https://github.com/servo/servo/pull/40139 * xpath: Replace `nom` with hand-written parsing rules by @simonwuelker in https://github.com/servo/servo/pull/39977 * bluetooth: Enable bluetooth feature when testing bluetooth on WPT and test on CI by @arihant2math in https://github.com/servo/servo/pull/40144 * devtools: Support getting XPath selector for node actor by @simonwuelker in https://github.com/servo/servo/pull/39892 * compositing: Initialize the WebRender image handlers with the IOCompositor by @mrobinson in https://github.com/servo/servo/pull/40134 * add CanGc as argument to key_type_to_jsval by @yerke in https://github.com/servo/servo/pull/40153 * add CanGc as argument to Validatable.validity_state by @yerke in https://github.com/servo/servo/pull/40155 * add CanGc as argument to structuredclone::read by @yerke in https://github.com/servo/servo/pull/40157 * script: Enter debugger global's realm when invoking public APIs from script thread. by @jdm in https://github.com/servo/servo/pull/40151 * xpath: Remove JS exception variant from evaluation error enum by @simonwuelker in https://github.com/servo/servo/pull/40164 * layout: Cleanup clear_fragment_layout_cache() by @Loirooriol in https://github.com/servo/servo/pull/40040 * xpath: Compare local names in html documents case-insensitively when there's no prefix by @simonwuelker in https://github.com/servo/servo/pull/40161 * script: Add message to InvalidCharacterError by @alevann in https://github.com/servo/servo/pull/40169 * add CanGc as argument to safe_to_jsval by @yerke in https://github.com/servo/servo/pull/40175 * add CanGc as argument to Validatable.satisfies_constraints by @yerke in https://github.com/servo/servo/pull/40176 * add CanGc as argument to methods in HTMLMediaElement by @yerke in https://github.com/servo/servo/pull/40179 * script: Add an implementation of `DedicatedWorkerGlobalScope.name` and `DedicatedWorkerGlobalScope.onmessageerror` by @yerke in https://github.com/servo/servo/pull/40156 * Fix `starting_column` comparison in `ColspanToDistribute::comparison_for_sort` by @yerke in https://github.com/servo/servo/pull/40180 * Properly initialize related_target in UI events by @TimvdLippe in https://github.com/servo/servo/pull/40182 * CI: Let mac arm64 unit-tests also use nextest retries by @jschwe in https://github.com/servo/servo/pull/40183 * cargo: Update linebender crates by @sagudev in https://github.com/servo/servo/pull/40181 * deps: Bump mozjs to 140.7 by @jschwe in https://github.com/servo/servo/pull/40185 * script: cleanup memory reporting code inside dedicatedworkerglobalscope by @Gae24 in https://github.com/servo/servo/pull/40170 * pixels: Split `Snapshot` into `SharedSnapshot` and `Snapshot` by @mrobinson in https://github.com/servo/servo/pull/40136 * deps: Bump fontsan to 0.6.1 by @jschwe in https://github.com/servo/servo/pull/40187 * script: Return early from "assign_slottables" when assigned slots did not change by @simonwuelker in https://github.com/servo/servo/pull/40191 * add CanGc as argument to methods in HTMLImageElement by @yerke in https://github.com/servo/servo/pull/40177 * add CanGc as argument to methods in HTMLLinkElement by @yerke in https://github.com/servo/servo/pull/40178 * rename `WorkerGlobalScope.get_worker_id` to `WorkerGlobalScope.worker_id` by @yerke in https://github.com/servo/servo/pull/40195 * script: Don't bail out of "assign slottables for a tree" when the target is a slot element by @simonwuelker in https://github.com/servo/servo/pull/40190 * script: Rephrase default error message for Error::Namespace by @simonwuelker in https://github.com/servo/servo/pull/40201 * Media: Change of Volume of video tag should passed to player by @rayguo17 in https://github.com/servo/servo/pull/40203 * script: Move SVG DOM interfaces to `script/dom/svg/` by @WaterWhisperer in https://github.com/servo/servo/pull/40206 * script: Add Ed25519 support to SubtleCrypto by @kkoyung in https://github.com/servo/servo/pull/39369 * move test for PrefValue to a separate mod test by @yerke in https://github.com/servo/servo/pull/40204 * xpath: Throw a `NAMESPACE_ERR` DOMException when namespace resolver callback returns invalid value or throws by @simonwuelker in https://github.com/servo/servo/pull/40167 * script: Implement Compression API by @kkoyung in https://github.com/servo/servo/pull/39658 * wpt: avoid checking if worker is instanceof SharedWorker in abrupt-completion.html by @Gae24 in https://github.com/servo/servo/pull/40208 * ci: Tokenless self-hosted runner select by @delan in https://github.com/servo/servo/pull/39900 * compositing: Stop down render backend before shutting down WebRender by @mrobinson in https://github.com/servo/servo/pull/40209 * script: Enable xpath by default by @simonwuelker in https://github.com/servo/servo/pull/40212 * AbortSignal: mark throwIfAborted as [Throws] by @Taym95 in https://github.com/servo/servo/pull/40224 * CI: Remove timeout from bootstrap dependencies step by @sagudev in https://github.com/servo/servo/pull/40238 * chore: update obsolete comments on VirtualMethods functions by @webbeef in https://github.com/servo/servo/pull/40231 * android: Let Servo handle touch events by @mrobinson in https://github.com/servo/servo/pull/40240 * script: Move CSS DOM interfaces to `script/dom/css/` by @WaterWhisperer in https://github.com/servo/servo/pull/40241 * Script: Implement more efficient methods on DOMString Part2 by @Narfinger in https://github.com/servo/servo/pull/39925 * Replace "map(..).unwrap_or(false)" with "is_some_and(..)" everywhere by @simonwuelker in https://github.com/servo/servo/pull/40244 * Implement Document.parseHTMLUnsafe by @lukewarlow in https://github.com/servo/servo/pull/40246 * Update js-sys and associated dependencies by @atouchet in https://github.com/servo/servo/pull/40252 * ci: Run lint jobs on self-hosted runners by @delan in https://github.com/servo/servo/pull/39915 * Fix updating slottables when slots are removed from a shadowtree by @TimvdLippe in https://github.com/servo/servo/pull/40188 * tests: Mark iframe-same-origin.html.ini as passing. by @jdm in https://github.com/servo/servo/pull/40255 * script: Use new inserted node when performing slot checks by @ZejunYu in https://github.com/servo/servo/pull/40251 * libservo: Expose `WebViewPoint` / `WebViewRect` and use them for the API by @mrobinson in https://github.com/servo/servo/pull/40223 * Redesign `servo:newtab` page by @arihant2math in https://github.com/servo/servo/pull/40137 * libservo: Use the embedder control API for simple dialogs by @mukilan in https://github.com/servo/servo/pull/40239 * script: Move performance DOM interfaces to `script/dom/performance/` by @WaterWhisperer in https://github.com/servo/servo/pull/40262 * Script: Use the correct constructor for DOMString to be lazy by @Narfinger in https://github.com/servo/servo/pull/40263 * libservo: Allow passing device or page pixels as scroll delta by @atbrakhi in https://github.com/servo/servo/pull/40267 * Allocator: Fix tracking allocator by @Narfinger in https://github.com/servo/servo/pull/40270 * servoshell: Extract duplicate WebDriver methods to common struct by @atbrakhi in https://github.com/servo/servo/pull/40186 * compositing: Split out `Painter` from `IOCompositor` by @mrobinson in https://github.com/servo/servo/pull/40264 * Update some non-breaking dependencies by @atouchet in https://github.com/servo/servo/pull/40276 * net: Set Response::cache_state appropriately. by @mark-buer in https://github.com/servo/servo/pull/40277 * script: Do not store an initial content size in new ResizeObservers. by @jdm in https://github.com/servo/servo/pull/40260 * wpt: Skip Bluetooh WebDriver BiDi tests by @mrobinson in https://github.com/servo/servo/pull/40281 * wpt: Rebase another batch of testdriver.js tests by @mrobinson in https://github.com/servo/servo/pull/40282 * servoshell: Support `WebDriverCommandMsg::InputEvent` for egl by @yezhizhen in https://github.com/servo/servo/pull/40280 * script: Implement import key operation for ECDH by @kkoyung in https://github.com/servo/servo/pull/40253 * script: Don't unregister slots from their shadow root when the whole shadow tree is being unbound by @simonwuelker in https://github.com/servo/servo/pull/40278 * wpt: Properly process the `--headless` argument by @mrobinson in https://github.com/servo/servo/pull/40289 * libservo: Have wheel events trigger scroll in Servo by @mrobinson in https://github.com/servo/servo/pull/40269 * webdriver: Add a 10 second timeout for screenshots by @mrobinson in https://github.com/servo/servo/pull/40290 * wpt: Remove unused files for the WebDriver conformance suite by @yezhizhen in https://github.com/servo/servo/pull/40285 * cargo: Bump Rust to 1.91 by @sagudev in https://github.com/servo/servo/pull/39471 * wpt: Make legacy `ServoWdspecBrowser` work as intended by @yezhizhen in https://github.com/servo/servo/pull/40296 * script: Remove unneeded unsafe code annotation by @kkoyung in https://github.com/servo/servo/pull/40300 * script: Implement export key operation of ECDH by @kkoyung in https://github.com/servo/servo/pull/40298 * servoshell/desktop: Draw WebViews without using an egui::CentralPanel by @aaron-wgd in https://github.com/servo/servo/pull/40128 * Add support for LargestContentfulPaint PaintMetric by @shubhamg13 in https://github.com/servo/servo/pull/39384 * pixels: Store decoded images as RGBA premultiplied data by @mrobinson in https://github.com/servo/servo/pull/40158 * compositor: Rename `RenderingGroupId` to `PainterId` by @mukilan in https://github.com/servo/servo/pull/40307 * servoshell: Move `servoshell_preferences` to `RunningAppStateBase` by @atbrakhi in https://github.com/servo/servo/pull/40308 * compositor: use the `Painter` terminology in `RefreshDriver` traits by @mukilan in https://github.com/servo/servo/pull/40302 * servoshell: Implement `WebDriverCommandMsg::TakeScreenshot` for egl by @yezhizhen in https://github.com/servo/servo/pull/40303 * script: Implement generate key operation of ECDH by @kkoyung in https://github.com/servo/servo/pull/40305 * compositor: Make new frame notifications per Painter by @mukilan in https://github.com/servo/servo/pull/40309 * installer: Change windows installation directory by @jschwe in https://github.com/servo/servo/pull/40311 * servoshell: Fix typo in unrecognized debug option message by @lumiscosity in https://github.com/servo/servo/pull/40318 * ci: Fix unit-test coverage by @jschwe in https://github.com/servo/servo/pull/40317 * script: Report target padding and desired sizes for ResizeObserver notifications by @jdm in https://github.com/servo/servo/pull/40254 * script: fix defaults on formMethod getters on <input> and <button> by @lumiscosity in https://github.com/servo/servo/pull/40310 * Properly provide architecture in useragent string by @lumiscosity in https://github.com/servo/servo/pull/40321 * script: add CanGc as argument to VirtualMethods::children_changed by @yerke in https://github.com/servo/servo/pull/40325 * devtools: move test for IdMap to a separate mod test by @yerke in https://github.com/servo/servo/pull/40326 * Turn all commented links before functions into doccomments by @simonwuelker in https://github.com/servo/servo/pull/40331 * move unit tests to a separate mod test by @yerke in https://github.com/servo/servo/pull/40332 * script: move media interfaces to `script/dom/media` module by @yerke in https://github.com/servo/servo/pull/40335 * script: add `CanGc` as argument to `VirtualMethods.post_connection_steps` by @yerke in https://github.com/servo/servo/pull/40329 * layout: Show pointer cursor for submit input with text value by @yerke in https://github.com/servo/servo/pull/40205 * wpt: Remove annotations in `executorservo.py` by @mrobinson in https://github.com/servo/servo/pull/40337 * servoshell: Move `webview_by_id` into `RunningAppStateTrait` by @yezhizhen in https://github.com/servo/servo/pull/40330 * servoshell: Move `servo` to `RunningAppStateBase` by @atbrakhi in https://github.com/servo/servo/pull/40315 * chore: Update mozjs to remove cargo_metadata by @sagudev in https://github.com/servo/servo/pull/40342 * wpt: Have `ServoRefTestExecutor` inherit from `RefTestExecutor` by @mukilan in https://github.com/servo/servo/pull/40327 * CI: Add free disk space in docs workflow by @sagudev in https://github.com/servo/servo/pull/40345 * wpt: Turn on `selectFiles` and handle asynchronicity in FileAPI test by @mrobinson in https://github.com/servo/servo/pull/40349 * wpt: Always run Servo tests in headless mode on WPT TaskCluster by @mrobinson in https://github.com/servo/servo/pull/40351 * script: Trigger rendering update for skipped resize observations. by @jdm in https://github.com/servo/servo/pull/40353 * Update Attr::SetValue to match updated spec by @lukewarlow in https://github.com/servo/servo/pull/40286 * devtools: Expose cache status for requests in network monitor. by @mark-buer in https://github.com/servo/servo/pull/40328 * script: Implement `ToggleEvent` and use for `
` element by @lukewarlow in https://github.com/servo/servo/pull/40271 * deps: Update tungstenite-related group by @yezhizhen in https://github.com/servo/servo/pull/40364 * script: improve spec compliance of the iframe load event steps by @gterzian in https://github.com/servo/servo/pull/40100 * servoshell: Add a `VsyncRefreshDriver` for Android by @mrobinson in https://github.com/servo/servo/pull/40306 * script: Use `base64ct` instead of `base64` in SubtleCrypto by @kkoyung in https://github.com/servo/servo/pull/40334 * script: remove microtask queue from globalscope by @Gae24 in https://github.com/servo/servo/pull/40371 * script: Do not include transforms and inline boxes in ResizeObserver box area queries by @jdm in https://github.com/servo/servo/pull/40323 * ohos CI: Compile nightly in production and upload libservoshell.so by @jschwe in https://github.com/servo/servo/pull/40373 * ohos CI: Upload screenshot if speedometer failed by @jschwe in https://github.com/servo/servo/pull/40374 * Script: Efficient DOMString methods for as_bytes, eq_ascii, is_ascii, to_jsval by @Narfinger in https://github.com/servo/servo/pull/40283 * Light mode for newtab page by @arihant2math in https://github.com/servo/servo/pull/40272 * config: Enable ResizeObserver by default. by @jdm in https://github.com/servo/servo/pull/40378 * servoshell: Move `handle_webdriver_script_command` to `RunningAppStateTrait` by @yezhizhen in https://github.com/servo/servo/pull/40372 * wpt: Filter non-stable expected results and create an artifact for it by @mrobinson in https://github.com/servo/servo/pull/40369 * wpt: Enable WebDriver by default when running WPT by @mrobinson in https://github.com/servo/servo/pull/40291 * CI: Switch to `macos-15-intel` by @sagudev in https://github.com/servo/servo/pull/40377 * Initial credential management checks by @arihant2math in https://github.com/servo/servo/pull/40388 * ohos: Support resize for tablet by @richerfu in https://github.com/servo/servo/pull/40391 * net: Associate every `ImageCache` with a `WebView` by @mrobinson in https://github.com/servo/servo/pull/40376 * Add bump-version command by @arihant2math in https://github.com/servo/servo/pull/40357 * script: Let `HTMLCanvasElement` manage the `ImageKey` for canvases by @mrobinson in https://github.com/servo/servo/pull/40375 * Reduce unnecessary type conversion and share `WebDriverCommandMsg::LoadUrl` handler across platform by @yezhizhen in https://github.com/servo/servo/pull/40393 * `script/dom/`: Change some `#[allow]`s to `#[expect]`s by @arihant2math in https://github.com/servo/servo/pull/40403 * script: Implement import key operation of X25519 by @kkoyung in https://github.com/servo/servo/pull/40398 * Add CanGc argument to SafeFromJSValConvertible::safe_from_jsval by @Taym95 in https://github.com/servo/servo/pull/40404 * libservo: Integrate context menu into the show_embedder_control API by @mrobinson in https://github.com/servo/servo/pull/40402 * script: Enforce exclusivity between `
` elements in the same tree by @simonwuelker in https://github.com/servo/servo/pull/40314 * xpath: Handle OOB conditions and non-char-boundaries in `substring` by @simonwuelker in https://github.com/servo/servo/pull/40411 * wpt: Ensure that the correct argument is read when outputting stable unexpected log by @mrobinson in https://github.com/servo/servo/pull/40409 * layout: Have ServoRestyleDamage immediately update flags on `LayoutImpl` by @mrobinson in https://github.com/servo/servo/pull/40400 * libservo: Add a fallback clipboard by @mrobinson in https://github.com/servo/servo/pull/40408 * script: Implement derive bits operation of ECDH by @kkoyung in https://github.com/servo/servo/pull/40333 * script: Implement MallocSizeOf for (De)Compressor by @kkoyung in https://github.com/servo/servo/pull/40420 * script: Implement export key operation of X25519 by @kkoyung in https://github.com/servo/servo/pull/40421 * html: Support releasing of <media> underlying resources and frames by @tharkum in https://github.com/servo/servo/pull/40316 * webdriver: Implement extension command `Shutdown` by @yezhizhen in https://github.com/servo/servo/pull/40422 * Disallow running `clippy` and `--use-crown` together by @WaterWhisperer in https://github.com/servo/servo/pull/40427 * script/layout: Implement Element.currentCSSZoom attribute by @WaterWhisperer in https://github.com/servo/servo/pull/40304 * Partially implement dialog.showModal() by @lukewarlow in https://github.com/servo/servo/pull/40405 * script: Error if `program` in `TransformFeedbackVaryings` and `GetTransformFeedbackVarying` is from another context by @Taym95 in https://github.com/servo/servo/pull/40431 * tools: Use ISO8601 timestamps and filter ports correctly in the Devtools parser by @eerii in https://github.com/servo/servo/pull/40428 * script: Eagerly update the `Device` in Layout when it changes by @mrobinson in https://github.com/servo/servo/pull/40432 * ci: Extract fast checkout steps into composite action by @delan in https://github.com/servo/servo/pull/40234 * webdriver: Remove session requirement from Shutdown command by @yezhizhen in https://github.com/servo/servo/pull/40445 * script: Handle broken image icon in `HTMLImageElement` by @mrobinson in https://github.com/servo/servo/pull/40429 * webdriver: Allow dummy sessionId for `ServoExtensionCommand::Shutdown` by @yezhizhen in https://github.com/servo/servo/pull/40450 * script: Also set the `Theme` on incomplete loads by @mrobinson in https://github.com/servo/servo/pull/40449 * ci: Move runner-select and runner-timeout to servo/ci-runners by @delan in https://github.com/servo/servo/pull/40235 * script/dom/: Change some `#[allow]`s to `#[expect]`s by @WaterWhisperer in https://github.com/servo/servo/pull/40454 * script: Properly handle foreign contexts in `Context2D`'s `isSync` and `isTransformFeedback` by @Taym95 in https://github.com/servo/servo/pull/40436 * xpath: Enforce tree order in node sets during evaluation by @simonwuelker in https://github.com/servo/servo/pull/40451 * Change some `#[allow]`s to `#[expect]`s by @WaterWhisperer in https://github.com/servo/servo/pull/40458 * libservo: Fix panic in `Reload` of `ContextMenuAction` by @atbrakhi in https://github.com/servo/servo/pull/40430 * net: Use callbacks instead of IPC channels in the `ImageCache` API by @mrobinson in https://github.com/servo/servo/pull/40453 * net: Simplify `FetchResponseListener` and move it to `script` by @mrobinson in https://github.com/servo/servo/pull/40461 * Script: Do not double copy for javascript source by @Narfinger in https://github.com/servo/servo/pull/40464 * ci: Fix ohos libservoshell.so artifact path by @jschwe in https://github.com/servo/servo/pull/40468 * WebGLBuffer: follow spec for buffer binding restrictions by @Taym95 in https://github.com/servo/servo/pull/40462 * script: Add message to IndexSizeError by @WaterWhisperer in https://github.com/servo/servo/pull/40463 * Add basic `IDL` implementation for `LargestContentfulPaint` by @shubhamg13 in https://github.com/servo/servo/pull/39714 * Reduce boilerplate in `Constellation` and `ScriptThread` by @webbeef in https://github.com/servo/servo/pull/34960 * background_hang_monitor: Clean up `Sampler` a bit and use `allow(dead_code)` by @mrobinson in https://github.com/servo/servo/pull/40477 * script: Implement generate key operation of X25519 by @kkoyung in https://github.com/servo/servo/pull/40480 * compositor: Allow `GenerateFrame` to take `Vec<WebViewId>` by @mukilan in https://github.com/servo/servo/pull/40482 * webdriver: Print details when fail to start server by @yezhizhen in https://github.com/servo/servo/pull/40476 * Upgrade wptrunner mozprocess version to 1.4.0 by @yezhizhen in https://github.com/servo/servo/pull/40466 * Add code-coverage option to mach run, test-wpt and test-devtools by @jschwe in https://github.com/servo/servo/pull/39916 * script: extend the prevention of the firing of load events to all iframes by @gterzian in https://github.com/servo/servo/pull/40401 * compositing: Allow mapping from WebRender key types to `PainterId` by @mrobinson in https://github.com/servo/servo/pull/40484 * net: Do not implement `Serialize`/`Deserialize` for `RasterImage` and introduce``SharedRasterImage` by @Narfinger in https://github.com/servo/servo/pull/40459 * fonts: prime per-painter font key cache during `WebView` creation by @mukilan in https://github.com/servo/servo/pull/40487 * script: Wrap unsafe code in `scriptruntime.rs` in `unsafe {}` by @mrobinson in https://github.com/servo/servo/pull/40494 * wpt: Run in headless mode by default unless `--no-headless` is passed by @mrobinson in https://github.com/servo/servo/pull/40495 * webdriver: Do not remove id from `input_state_table` if it still in `input_cancel_list` by @yezhizhen in https://github.com/servo/servo/pull/40483 * Fix some typos in comments across various parts of the codebase by @arihant2math in https://github.com/servo/servo/pull/40492 * script: Wrap unsafe code in `windowproxy.rs` in `unsafe {}` by @mrobinson in https://github.com/servo/servo/pull/40493 * script: Implement derive bits operation of X25519 by @kkoyung in https://github.com/servo/servo/pull/40497 * tools: Remove wrapped JSON message in the DevTools parser by @eerii in https://github.com/servo/servo/pull/40489 * mach try: Don't run commit hooks by @jschwe in https://github.com/servo/servo/pull/40486 * servoshell: Implement context menu in servoshell by @atbrakhi in https://github.com/servo/servo/pull/40434 * script: Rename `ScriptThreadMessage::AttachLayout` to `ScriptThreadMessage::SpawnPipeline` by @mrobinson in https://github.com/servo/servo/pull/40491 * script: Handle more `ScriptThread` messages synchronously by @mrobinson in https://github.com/servo/servo/pull/40490 * script: Wrap remaining unsafe code and enable `unsafe_op_in_unsafe_fn` by @mrobinson in https://github.com/servo/servo/pull/40499 * tools: Update DevTools parser flags by @eerii in https://github.com/servo/servo/pull/40488 * Remove tshark from mach bootstrap by @eerii in https://github.com/servo/servo/pull/40506 * Suppress debug representations of network response bodies by @jdm in https://github.com/servo/servo/pull/38789 * html: Render media controls without ready state precondition by @tharkum in https://github.com/servo/servo/pull/40456 * bootstrap: Run apt update before apt-cache by @jschwe in https://github.com/servo/servo/pull/40505 * script: Use InputEvent for input events by @excitablesnowball in https://github.com/servo/servo/pull/39989 * script: Start preparation to use safer JSContext by @sagudev in https://github.com/servo/servo/pull/40465 * Implement read looping using a read request following the spec by @Taym95 in https://github.com/servo/servo/pull/39510 * CI: Remove llvm upgrade from Windows workflow by @sagudev in https://github.com/servo/servo/pull/40524 * Update mozjs to include SpiderMonkey 140.5 by @sagudev in https://github.com/servo/servo/pull/40514 * script: Implement import key operation of ECDSA by @kkoyung in https://github.com/servo/servo/pull/40523 * dom: Add the attribute mutation reason by @tharkum in https://github.com/servo/servo/pull/40527 * Remove duplicate entry for 'rustc-dev' in toolchain by @jschwe in https://github.com/servo/servo/pull/40531 * Upgrade cssparser to version 0.36 by @Loirooriol in https://github.com/servo/servo/pull/40525 * constellation: Reuse `InitialScriptState` and `InitialPipelineState` in `UnprivilegedPipelineContent` by @mrobinson in https://github.com/servo/servo/pull/40529 * net: Create unit tests for the image cache by @WaterWhisperer in https://github.com/servo/servo/pull/40498 * html: Add description for steps of legacy constructor by @tharkum in https://github.com/servo/servo/pull/40535 * servoshell: Move screenshot stability tracking to shared base by @atbrakhi in https://github.com/servo/servo/pull/40534 * script: Implement export key operation of ECDSA by @kkoyung in https://github.com/servo/servo/pull/40536 * script_bindings: Small USVString cleanup by @Narfinger in https://github.com/servo/servo/pull/40537 * servoshell: Move `webdriver_receiver` to shared base by @atbrakhi in https://github.com/servo/servo/pull/40538 * Net: ServoUrl.into_string().parse() optimization by @Narfinger in https://github.com/servo/servo/pull/40539 * script: improve cookie processing of control characters by @webbeef in https://github.com/servo/servo/pull/40544 * Upgrade Stylo to 2025-11-01 by @Loirooriol in https://github.com/servo/servo/pull/40522 * storage: Run storage tests by @arihant2math in https://github.com/servo/servo/pull/40546 * Fixed codegen to prevent double declaration of -webkit- prefixed CSS properties by @RichardTjokroutomo in https://github.com/servo/servo/pull/40549 * mach: Remove unused setup/config by @arihant2math in https://github.com/servo/servo/pull/40547 * script: Implement generate key operation of ECDSA by @kkoyung in https://github.com/servo/servo/pull/40553 * Fix compilation warning for platforms other than Linux by @yezhizhen in https://github.com/servo/servo/pull/40551 * deps: De-duplicate phf by @Loirooriol in https://github.com/servo/servo/pull/40555 * script: Implement verify operation of ECDSA by @kkoyung in https://github.com/servo/servo/pull/40557 * script: Pass the right base URI to inline sheets by @Loirooriol in https://github.com/servo/servo/pull/40554 * tests: Import the XPathMark-FT test suite by @simonwuelker in https://github.com/servo/servo/pull/40541 * script: Add context-based context menu options by @mrobinson in https://github.com/servo/servo/pull/40501 * xpath: Don't expect ancestor-or-self axis to be in tree order by @simonwuelker in https://github.com/servo/servo/pull/40542 * net: Small cleanup in http_network_or_cache_fetch by @Narfinger in https://github.com/servo/servo/pull/40559 * script: Choose correct document for xpath queries by @simonwuelker in https://github.com/servo/servo/pull/40564 * tests: Remove duplicate xpath test by @simonwuelker in https://github.com/servo/servo/pull/40565 * script: Have `FetchResponseListener::process_response_eof` consume the listener by @mrobinson in https://github.com/servo/servo/pull/40556 * ohos: Make test-speedometer-ohos more robust by @jschwe in https://github.com/servo/servo/pull/40558 * script: Return only a `JoinHandle` from `ScriptThread` constructor by @mrobinson in https://github.com/servo/servo/pull/40571 * script: Add message to HierarchyRequestError by @austinwillis in https://github.com/servo/servo/pull/40366 * xpath: Cleanup `normalize-space` and `translate` by @simonwuelker in https://github.com/servo/servo/pull/40566 * script: Introduce HtmlSerialize to support extensible node serialization by @rodio in https://github.com/servo/servo/pull/40568 * xpath: Fix implementation for `preceding::`/`following::` axes by @simonwuelker in https://github.com/servo/servo/pull/40588 * tidy: Minor cleanup of licenseck.py by @jschwe in https://github.com/servo/servo/pull/40585 * layout: Do not stretch block-level widgets by default by @Loirooriol in https://github.com/servo/servo/pull/40579 * script: Implement sign operation of ECDSA by @kkoyung in https://github.com/servo/servo/pull/40591 * storage: Webstorage testing by @arihant2math in https://github.com/servo/servo/pull/40569 * script: Consolidate more logic into `ScriptThread::spawn_pipeline` by @mrobinson in https://github.com/servo/servo/pull/40586 * script: Use `ScriptEventLoopSender` for Runtime event loop callbacks by @mrobinson in https://github.com/servo/servo/pull/40590 * libservo: Add `WebView::can_go_forward` and `WebView::can_go_back` by @mrobinson in https://github.com/servo/servo/pull/40598 * html: Remove `canGC` argument from <media> internal `seek` method by @tharkum in https://github.com/servo/servo/pull/40587 * html: Add <media> internal `ended_playback` method by @tharkum in https://github.com/servo/servo/pull/40603 * Add servo:license by @arihant2math in https://github.com/servo/servo/pull/40319 * script: Correctly parse spki and pkcs8 of ECDH by @kkoyung in https://github.com/servo/servo/pull/40605 * script: servoparser line number pass to CSP by @WaterWhisperer in https://github.com/servo/servo/pull/40597 * servoshell: Close all embedder controls when loading a toplevel page in WebDriver by @mrobinson in https://github.com/servo/servo/pull/40507 * xpath: Apply predicate list before sorting result when evaluating location step expression by @simonwuelker in https://github.com/servo/servo/pull/40592 * Add AbortSignal garbage collection by @Taym95 in https://github.com/servo/servo/pull/40508 * html: Add <media> `current` and `official` playback positions by @tharkum in https://github.com/servo/servo/pull/40609 * chore: Update actions/checkout to @v5 by @WaterWhisperer in https://github.com/servo/servo/pull/40606 * Replace calls to ".filter_map()" followed by ".next()" with ".find_map()" by @simonwuelker in https://github.com/servo/servo/pull/40612 * xpath: Handle a NodeSet being passed to `id` by @simonwuelker in https://github.com/servo/servo/pull/40593 * Update servoshell to v0.0.2 by @jschwe in https://github.com/servo/servo/pull/40614 * script: Fix MutationObserver to use `Dom` instead of `DomRoot` by @WaterWhisperer in https://github.com/servo/servo/pull/40608
## New Contributors * @notJoon made their first contribution in https://github.com/servo/servo/pull/40082 * @alevann made their first contribution in https://github.com/servo/servo/pull/40169 * @ZejunYu made their first contribution in https://github.com/servo/servo/pull/40251 * @mark-buer made their first contribution in https://github.com/servo/servo/pull/40277 * @richerfu made their first contribution in https://github.com/servo/servo/pull/40391 * @austinwillis made their first contribution in https://github.com/servo/servo/pull/40366 **Full Changelog**: https://github.com/servo/servo/compare/v0.0.1...v0.0.2
Source: README.md, updated 2025-11-14