Skip to content

Releases: servo/servo

v0.0.6

31 Mar 11:18
7c2c0aa

Choose a tag to compare

This release of Servo 0.0.6 is the first to offer a signed and notarized dmg of our demo browser app ServoShell for macOS. This means you can easily try out ServoShell on MacOS without complicated workarounds. Note that our macOS nightly builds are still unsigned.
This releases also adds a tar archive containing servo and vendored rust sources, making offline builds easier (on Linux). See the Building Offline section in the book for more information.

Servo 0.0.6 includes:

See our February blog post for a curated overview of the changes in this release.

Trying out the Servo Tech demo

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

Please check out our February blog post to get a curated overview over the recent changes.

Generated Release notes

What's Changed

Read more

v0.0.5

28 Feb 11:28
301f7da

Choose a tag to compare

v0.0.5

Servo 0.0.5 includes:

See our January blog post for a curated overview of the changes in this release.

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

Please check out our January blog post to get a curated overview over the recent changes.

Generated Release notes
  • ohos CI: Add a proper name for scenario test screenshot artifacts by @yezhizhen in #41614
  • script: Implement generate key operation of ML-KEM by @kkoyung in #41615
  • script: Implement WebCrypto encapsulation and decapsulation with ML-KEM by @kkoyung in #41617
  • Refactor allow to expect by @waynevanson in #41586
  • layout: Stop splitting inline boxes when they contain block-levels by @Loirooriol in #41492
  • deps: Bump wayland-related together by @yezhizhen in #41621
  • script: Fix alg field of exported ML-KEM key in JWK format by @kkoyung in #41627
  • script: Implement import key operations of ML-DSA by @kkoyung in #41628
  • Replace NetworkError::Internal with structured enum variants for calls with literal strings by @uthmaniv in #36599
  • layout: Fix size of anonymous not marked as depending on block constraints by @Loirooriol in #41632
  • layout: Handle block-in-inline dependency on block constraints by @Loirooriol in #41624
  • script: Skip some steps when determining encoding for XML document by @simonwuelker in #41637
  • script: Implement export key operation of ML-DSA by @kkoyung in #41647
  • change #[allow]s to #[expect]s by @TimurBora in #41635
  • Correct path to twin find_python() functions in servo and script_bindings build.rs by @leo030303 in #41649
  • layout: Fix intrinsic contribution of anonymous not marked as depending on block constraints by @Loirooriol in #41652
  • libservo: Refactor site data integration test to enable reuse by @janvarga in #41609
  • package: Make Windows installer respect customized path by @yezhizhen in #41653
  • layout: Fix intrinsic size of block-in-inline not marked as depending on block constraints by @Loirooriol in #41655
  • Retry EventSource after temporary failures using is_permanent_failure by @WaterWhisperer in #41651
  • script: Implement generate key operation of ML-DSA by @kkoyung in #41659
  • Implement pending preload responses with futures by @TimvdLippe in #40059
  • cargo: Move shared tokio dependency to the root by @yezhizhen in #41677
  • deps: Make bot update tokio-rs repository together by @yezhizhen in #41679
  • libservo: Add initial support for SiteDataManager::clear_site_data by @janvarga in #41618
  • script: Implement sign and verify operations of ML-DSA by @kkoyung in #41676
  • script: Remove pointless rename. by @jdm in #41680
  • webdriver: Fix outdated timeouts test and remove redundant check by @yezhizhen in #41631
  • Fix WebIDL clamp conversion to use round-half-to-even by @Taym95 in #41640
  • script: Store a Weak handle to ScriptThread in both ScriptThread and Window by @Narfinger in #40645
  • script: Properly handle messaging errors in components/constellation/constellation.rs by @j-mendez in #41419
  • Unit Tests: Disable proxy for local tests by @Narfinger in #41688
  • Build/Canvas: Vello or Vello CPU feature flags by @Narfinger in #41686
  • devtools: Implement ActorEncode and clean inspector sub-actors by @eerii in #41685
  • Expose nested browsing context status in RequestClient by @WaterWhisperer in #41661
  • Stylo: Fix mismatched_lifetime_syntaxes warnings by @Loirooriol in #41690
  • ohos CI: pass through results of optional jobs to try-label result by @jschwe in #41601
  • net: Keep track of size of keep-alive records by @TimvdLippe in #41457
  • script: Fix fetch-later length and quota computation by @TimvdLippe in #41665
  • script: Ship navigator.sendBeacon by @TimvdLippe in #41694
  • ohos ci: Attempt to close USB mode popup by @jschwe in #41695
  • CODEOWNERS: Add jschwe & yezhizhen as CI scenario tests owners by @yezhizhen in #41706
  • Revert "Build/Canvas: Vello or Vello CPU feature flags (#41686)" by @mrobinson in #41698
  • script: Add a Rope type and use it for TextInput by @mrobinson in #41650
  • net: Support no_proxy and https_proxy by @Narfinger in #41689
  • net: Remove NetworkError::Internal by @TimvdLippe in #41693
  • libservo: Stop exporting ipc-channel for gamepad responders and use callbacks by @Narfinger in #41412
  • libservo: Extend SiteDataManager::clear_site_data to clear sessionStorage by @janvarga in #41709
  • script: Init and pass down &mut JSContext in script-related threads by @sagudev in #41692
  • Upgrade Stylo to 2025-12-01 by @Loirooriol in #41696
  • Base: Implement GenericReceiverSet by @Narfinger in #41071
  • 26488 - Moves WebGLRenderingContext cleanup to a dedicated struct by @willypuzzle in #41717
  • script: Capitalize Content-Type key in formdata. by @jdm in #41722
  • script: Consolidate global initialization for fetch requests by @TimvdLippe in #41663
  • fonts: Fix loading local web font by @TimvdLippe in #41714
  • servoshell: Support tracing-rs events when using hitrace by @janeoa in #41708
  • devtools: Implement ActorEncode for NetworkEventActor by @eerii in #41731
  • fonts: Use GenericChannel instead of IPC channels by @Narfinger in #41733
  • webxr: Remove the ipc feature by @Narfinger in #41736
  • mach: linux bootstrap: Remove unused constant by @jschwe in #41745
  • mach: Break the shackle that restricts cross-compilation from Windows by @yezhizhen in #41748
  • script: Pass &mut JSContext to tasks by @sagudev in #41756
  • net: Remove...
Read more

v0.0.4

23 Jan 06:31
b73ae02

Choose a tag to compare

v0.0.4

Servo 0.0.4 most notably features multi-window support on Desktop platforms. See our December blog post for a curated overview of the changes in this release.

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

Please check out our December blog post to get a curated overview over the recent changes.

Generated Release notes

What's Changed

  • ci: Update condition to upload test results to codecov by @jschwe in #40988
  • build(deps): Use crates.io release of mozjs by @jschwe in #40989
  • Block and report CSP violations for javascript: URLs in window.open by @dyegoaurelio in #40997
  • script: Reconstruct box tree when order changes by @Loirooriol in #40994
  • script: Don't dirty with ContentOrHeritage damage when changing state by @Loirooriol in #40902
  • libservo: Finish the SimpleDialog API by @mrobinson in #40982
  • script: Implement encrypt/decrypt operation of ChaCha20-Poly1305 by @kkoyung in #41003
  • html: Track the script/UA initiated media seek request by @tharkum in #40981
  • constellation: Remove debugging println! introduced in #40944 by @mrobinson in #41009
  • webdriver: Refactor actions.rs by @yezhizhen in #41004
  • servoshell: Add support for opening new windows on desktop by @mrobinson in #40927
  • CI: On OHOS run speedometer in perf mode by @Narfinger in #41006
  • libservo: Make Servo an opaque cloneable handle by @mukilan in #41010
  • Use 'GenericSender' and 'GenericReceiver' for bluetooth main component by @Narfinger in #41008
  • Implement usage of custom protocol handlers by @TimvdLippe in #40803
  • libservo: Trigger shutdown internally from Servo's Drop impl by @mukilan in #41012
  • script: Add error messages to operations of ChaCha20-Poly1305 by @kkoyung in #41030
  • Script Implement ReadableByteStreamTee by @Taym95 in #35991
  • Documentation: Add documentation for EmbedderMsg to clarify by @Narfinger in #41032
  • script: shorten script thread name by @webbeef in #41033
  • touch: Stop flinging if no scroll happened by @kongbai1996 in #41028
  • IndexedDB: Use GenericSender, GenericReceiver and GenericCallback for IndexedDB by @Narfinger in #41031
  • selectors::Element::parent() shouldn't cross shadow tree boundary by @longvatrong111 in #40977
  • html: Enhance image update the image data, environment changes algorithms by @tharkum in #41046
  • html: Change the play state of the media player if the old is opposite by @tharkum in #41027
  • config: Add SERVO_DIAGNOSTICS environment variable for diagnostic options by @atbrakhi in #41013
  • change some allows to expects by @AnonMiraj in #41040
  • net: use system certificates by @Narfinger in #40935
  • script: add error messages by @danilopedraza in #41039
  • allocator: Write untracked allocations to log file. by @jdm in #41066
  • webdriver: Add touch support for all platforms by @yezhizhen in #41067
  • devtools: Box the actor inside register by @eerii in #41074
  • devtools: Default implementation for handle_message by @eerii in #41076
  • script: Expose a single interface to run js code on globalscope by @Gae24 in #41078
  • net: Remove use of deprecated crate rustls-pemfile. by @mukilan in #41095
  • webgl: Unconditionally decrement busy count of WebGL contexts. by @mukilan in #41094
  • Guard MediaElementAudioSourceNode against closed contexts and add crash test by @Taym95 in #41092
  • dom: Avoid crashing on empty favicon href attribute by @webbeef in #41056
  • script: Fix IIRFilter crash on silent blocks and add crash test by @Taym95 in #41091
  • doc: Refer to the correct links in the Servo Book by @frozolotl in #41110
  • layout: Pass degrees to the WebRender hue rotate filter by @AnonMiraj in #41063
  • Expose window.clientInformation as a navigator alias by @Taym95 in #41111
  • script: Implement creating and running classic scripts according to spec by @Gae24 in #41109
  • script: Move WebGLProgram Drop implementation to a member type by @willypuzzle in #37622
  • script_bindings: Remove Drop impl exception for WebGLProgram. by @jdm in #41124
  • ohos / android: Fix missing error message for cli parsing errors by @Narfinger in #41072
  • Devtools: Switch to GenericChannel and GenericCallback by @Narfinger in #41051
  • Remove our macOS-only task-info crate by @mrobinson in #41132
  • mach: Add yes installation cofirmation flag to bootstrap command by @MCozhusheck in #41086
  • devtools: ActorEncode trait by @eerii in #41139
  • mach: Properly handle empty commit message in the WPT export script by @chenura999 in #41128
  • compositor: Allow touch up to not panic when its touch sequence not found by @PotatoCP in #41129
  • Base: Implement GenericOneshot channels by @Narfinger in #41143
  • compositing: Drop Painters when they have no WebViews by @mrobinson in #41144
  • fonts: Replace deprecated xml-rs with [email protected] by @Ajay-singh1 in #41134
  • libservo: Remove WebViewInner::rect by @mrobinson in #41156
  • script: Implement import key operation of RSA-PSS by @kkoyung in #41157
  • fonts: Add more Noto fallback options for different languages for Android by @Ajay-singh1 in #41151
  • layout: Cleanup hit-testing logic for outlines by @Loirooriol in #41159
  • constellation: Only set up a single Devtools route for all ScriptThreads by @mrobinson in #41161
  • script: Remove reference to closed bug #18998 by @mrobinson in #41162
  • Optimize assets, again by @lumiscosity in #41163
  • devtools: Update to Firefox 145 by @eerii in #41087
  • webdriver: Enable testdriver tests for Touch by always dispatching embedder MouseMove by @yezhizhen in #41171
  • script: Update media to include fix for AudioBufferSourceNode.loop by @Taym95 in #41075
  • layout: Merge BaseFragment and BaseFragmentInfo by @Loirooriol in #41177
  • layout: Ensure that background-repeat: round size calculation rounds to nearest natural number by @mrobinson in #41158
  • script: Decouple ownership of the media element from IPC router callback by @tharkum in #41131
  • script: Implement import key operation of RSASSA-PKCS1-v1_5 by @kkoyung in #41172
  • script: Update spec text of WebCrypto API by @kkoyung in #41180
  • Rename IOCompositor to Paint by @mrobinson in #41176
  • script: Bring creating and running classic scripts closer to spec by @Gae24 in #40938
  • servoshell: Use WheelMode::DeltaPixel on line-based wheel events converted to pixels by @mrobinson in #41184
  • layout: Preserve cached intrinsic inline sizes in more cases by @Loirooriol in #41160
  • compositing: Have preventDefault prevent the scroll behavior of wheel even...
Read more

v0.0.3

16 Dec 08:44
7cd39f4

Choose a tag to compare

v0.0.3

Servo 0.0.3 is a comparatively smaller release, since we synchronized our release cut-off with the monthly November blog post, meaning that 0.0.3 contains only about 2 weeks worth of changes.

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

Please check out our November blog post to get a curated overview over the recent changes (although some of them will have already been present in 0.0.2).

Generated Release notes
  • script: Issue resource timing for stylesheets before the "load" event by @mrobinson in #40618
  • Add scroll and fling trace. by @kongbai1996 in #40629
  • wpt: Remove legacy expectation by @kkoyung in #40642
  • script: Flatten nested match arms in NormalizedAlgorithm by @kkoyung in #40643
  • Implement protocol handler web API's behind flag by @TimvdLippe in #40616
  • html: Handle new DurationChanged event by by @tharkum in #40644
  • Support calc() values in CSS Grid by @nicoburns in #34846
  • script: Remove unnecessary Trusted wrapper in RemovableDomEventListener by @WaterWhisperer in #40649
  • script: Add support for parsing CSS in parallel by @mrobinson in #40639
  • script: Use hkdf crate for HKDF in WebCrypto by @kkoyung in #40650
  • Tweak automatic release notes by @jschwe in #40651
  • script: Housekeeping WebIDL dictionaries of WebCrypto API by @kkoyung in #40652
  • script: Eliminate duplicate quirks mode origin check in stylesheet loader by @mrobinson in #40646
  • script: Don't rely on Attr nodes when communicating with layout by @simonwuelker in #40657
  • canvas: Clear bitmap without transform by @sagudev in #38286
  • indexeddb: Fix typo in range sql generator by @arihant2math in #40658
  • servodriver: Shut down Servo elegantly when all tests finish by @yezhizhen in #40455
  • script: Add cx_no_gc/cx/realm codegen option and demostrate them by @sagudev in #40582
  • Fix indexeddb intermitency by @arihant2math in #40648
  • CI: use --profile instead of profile shorthands by @sagudev in #38644
  • indexeddb: Clean shutdown of indexeddb threads/threadpool by @arihant2math in #40666
  • libservo: Make WebView::set_history have crate visibility by @mrobinson in #40671
  • resources: Ensure that selectors in CSS for the newtab page refer to actual elements by @arihant2math in #40670
  • Implement WindowOrWorkerGlobalScope::reportError by @TimvdLippe in #40654
  • Remove #![allow(dead_code)] from readablestreambyobreader by @Taym95 in #40675
  • net: Relax the SVG content type detection logic. by @mukilan in #40636
  • script: Fix wrongly matched normalized algorithm in NormalizedAlgorithm::get_key_length by @kkoyung in #40686
  • compositing: Allow WebGL contexts to have different Surfman devices by @mukilan in #40594
  • html: Fire the canplaythrough event in the expected order by @tharkum in #40685
  • wpt: Backport upstream WPT PR for new SVG test. by @mukilan in #40689
  • html: Run the play seek if loop attribute was set after playback ended by @tharkum in #40688
  • layout: Adjust inset-modified containing block to have non-negative size by @Loirooriol in #40628
  • Upload junit report of unit-tests in CI by @jschwe in #39897
  • libservo: Add ContextMenuElementInformation to for the context menu API by @mrobinson in #40607
  • script: Trigger reflow properly for pseudo-elements with content: attr() by @mrobinson in #40698
  • Revert #40594 "Allow WebGL contexts to have different Surfman devices" by @yezhizhen in #40707
  • Compositor: Add touch compatibility handling for mouse move events by @kongbai1996 in #40637
  • layout: Display User Agent Controls widget for video element. by @rayguo17 in #40578
  • layout: Rebuild the box tree when the quotes attribute changes on a pseudo-element by @mrobinson in #40699
  • libservo: Trigger a rendering update when waiting for paint readiness in WebView unit tests by @mrobinson in #40712
  • profiling: Add abstraction over tracing-rs by @jschwe in #40160
  • Replace codecov/test-results-action by @jschwe in #40718
  • servoshell: Always use ControlFlow::Wait on winit by @mrobinson in #40715
  • python: Remove notify-py from Python dependencies by @mrobinson in #40717
  • Update expectation for media-elements/event_timeupdate_noautoplay.html to PASS by removing .ini by @WaterWhisperer in #40714
  • compositing: Allow WebGL contexts to have different Surfman devices by @mrobinson in #40721
  • compositing: Rework WebRender external image handlers to be per-Painter by @mrobinson in #40690
  • script: Don't allocate when retrieving attribute values for layout by @simonwuelker in #40724
  • Fix RefCell already borrowed panic in HTMLMediaElement::set_audio_renderer by @Taym95 in #40729
  • Use safe JSContext/AutoRealm/CurrentRealm in codegen by @sagudev in #40716
  • Compositor: Resize PinchZoom::unscaled_viewport when viewport size changes by @kongbai1996 in #40396
  • webdriver: implement protocol handler automation mode by @TimvdLippe in #40733
  • script: Use a WeakRef for references to WebGLRenderingContext by @mrobinson in #40725
  • webgl: Ensure all Surfman surfaces are released properly by @mrobinson in #40736
  • CI: only upload test results to codecov if unit-test are actually run by @sagudev in #40739
  • compositing: Make RefreshDriver per-RenderingContext by @mrobinson in #40738
  • compositor: Share the WebGpuExternalImageMap among all Painters by @mrobinson in #40737
  • script: Add message to Dom exception Error::NotSupported by @d-kraus in #40745
  • ohos CI: Add webdriver based scenario tests by @monissaJ in #40473
  • script: Optimize Node::insert by @webbeef in #40742
  • script: Finish converting all error message enum variants to Option by @arihant2math in #40750
  • mach: Normalize the --profile argument to build commands by @mukilan in #40753
  • CI: Do not fail_fast on push to main by @sagudev in #40755
  • profiling: Fix missing span enter by @jschwe in #40758
  • compositing: Do not set scroll offsets of zero when restoring scroll offsets in new display lists by @kongbai1996 in #40757
  • devtools: Support reloading tab by @eerii in #40760
  • html: The queued volumechange event should be cancellable by @tharkum in #40763
  • script: Implement SHA-3 in WebCrypto API by @kkoyung in #40765
  • Prefer log over (e)println! by @jschwe in #40764
  • paint: Do trigger animations when a non-animation paint happens by @mrobinson in #40433
  • script: Don't crash when encountering unexpected node types in Range::createContextualFragment by @simonwuelker in #40762
  • script: Add messages to exceptions thrown in Element::attachShadow by @simonwuelker i...
Read more

v0.0.2

15 Nov 20:10
cae6350

Choose a tag to compare

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 #39893
  • servoshell: use accesskit exported from egui_winit and update egui crates by @mukilan in #40010
  • compositor: Do not panic on touch events by @mrobinson in #40019
  • libservo: Allow embedders to drive frame updates via RefreshDriver trait by @coding-joedow in #39072
  • Implement document preloaded resources by @TimvdLippe in #39794
  • Add simonwuelker as a code owner for xpath by @simonwuelker in #40027
  • servoshell: Hook up Android software keyboard to embedder events. by @jdm in #40009
  • servoshell: Add CFBundleSupportedPlatforms to Info.plist by @IsaacMarovitz in #40030
  • mach: Android: Support custom profiles by @jschwe in #39982
  • script: Fully initialize ResizeObserverEntry fields by @simonwuelker in #40036
  • Validate response status and MIME type in WorkerGlobalScope::ImportScripts by @WaterWhisperer in #40023
  • layout: Simplify InlineFormattingContextBuilder::start_inline_box() by @Loirooriol in #40037
  • CODEOWNERS: Add sagudev as CI and crown codeowner by @sagudev in #40051
  • servoview: Focus the view when a touch input occurs. by @jdm in #40049
  • script: use run_a_classic_script algorithm for worker scripts by @Gae24 in #39905
  • compositor: Have viewport meta tag affect the layout viewport by @atbrakhi in #40055
  • cargo-deny: add exceptions for 'unic-*' crates. by @mukilan in #40058
  • webdriver: Miscellanous cleanup by @yezhizhen in #39986
  • script: Don't use StyleSheet::update_from_str. by @emilio in #40024
  • webgpu: Add the latest spec compliant GPUAdapterInfo by @tharkum in #39960
  • Implement run steps after a timeout by @Taym95 in #39994
  • script: Add CanGc to Seekable method in HtmlMediaElement by @willypuzzle in #40033
  • script: Support observing "device-pixel-content-box" with ResizeObserver by @simonwuelker in #40056
  • Implement abortsignal timeout by @Taym95 in #40032
  • android: Add UI setting for experimental features by @jdm in #40054
  • config: Enable AbortController/AbortSignal by default. by @jdm in #40079
  • script: Validate worker_type in WorkerGlobalScope::ImportScripts by @WaterWhisperer in #40078
  • layout: Handle <select> as a widget by @Loirooriol in #39970
  • Linux: Detect JIT support by @jschwe in #40071
  • script: Update placeholder-shown state during IME composition events by @notJoon in #40082
  • storage: Rename remaining references storage to webstorage by @arihant2math in #40090
  • script: Move IndexedDB DOM interfaces to script/dom/indexeddb/ by @WaterWhisperer in #40091
  • wdspec tests: Check correct node type instead of asserting error for script execution by @yezhizhen in #39988
  • Box tree construction: only unset pseudo elements if the box is rebuilt by @longvatrong111 in #39930
  • script: Prepare to run script and callback before invoking CE constructor by @simonwuelker in #39013
  • net: Add warning log for failed HTTP requests. by @jdm in #40093
  • Update blurmac code by @arihant2math in #40096
  • servoshell (Desktop): Handle window resize events despite no focused webview by @aaron-wgd in #40086
  • script: implement structured cloning for ImageData by @Gae24 in #40084
  • html: Enhance media network and decoding error handling by @tharkum in #39899
  • compositing: Move WebRender initialization to IOCompositor creation by @mrobinson in #40101
  • compositing: Fully implement pinch zoom by @mrobinson in #40083
  • Script: len,is_empty and match for DOMString by @Narfinger in #39866
  • xpath: Provide error message when throwing SyntaxError from parsing by @simonwuelker in #40103
  • Fix window title stuck on last opened webview by @Taym95 in #39259
  • script: implement remaining WorkerGlobalScope's event handlers by @Gae24 in #40102
  • Implement UIEvent.which by @Taym95 in #40109
  • blurmac: Update objc2 to 0.4.1 by @arihant2math in #40113
  • layout: Use content area rect for content box queries. by @jdm in #40115
  • script: Include target in resize observer depth calculation. by @jdm in #40116
  • storage: Simplify layout of storage crate by @arihant2math in #40124
  • libservo: Stop using the custom test harness and run_api_tests by @mrobinson in #40131
  • fix http cache reconstruct response from cache after validation behaviour by @rayguo17 in #40067
  • libservo: Merge input method activation into the EmbedderControl API by @mrobinson in #40014
  • xpath: Verify context node in XPathExpression::evaluate_internal by @simonwuelker in #40105
  • script: Have the renderer process root viewport handle keyboard scrolling by @mrobinson in #40108
  • servoshell: Cleanup headed_window from the old code by @rodio in #40132
  • html: Add the 'name' and 'areas' IDL attributes for by @tharkum in #40133
  • constellation: Optimize tracing of maybe_close_random_pipeline by @jschwe in #39035
  • OHOS/Android: Implement WebDriverCommandMsg::GetViewportSize in egl app_state. by @Narfinger in #40135
  • ohos: Fix JIT detection by @jschwe in #40130
  • add CanGc as argument to methods in PaintRenderingContext2D by @yerke in #40148
  • add CanGc as argument to methods in Credential by @yerke in #40149
  • Revert "blurmac: Update objc2 to 0.4.1 (#40113)" by @arihant2math in #40145
  • script: Use interior mutability for stream controller queues. by @jdm in #40138
  • script: Replace IndexedDB's unsafe uses of RootedVec. by @jdm in #40143
  • add CanGc as argument to methods in BluetoothDevice by @yerke in #40147
  • add CanGc as argument to methods in OscillatorNode and StereoPannerNode by @yerke in #40146
  • script: Restrict scope of mutable borrow in IDBTransaction::ObjectStore. by @jdm in #40139
  • xpath: Replace nom with hand-written parsing rules by @simonwuelker in #39977
  • bluetooth: Enable bluetooth feature when testing bluetooth on WPT and test on CI by @arihant2math in #40144
  • devtools: Support getting XPath selector for node actor by @si...
Read more

v0.0.1 - October 2025

20 Oct 07:40
721214f

Choose a tag to compare

v0.0.1 (October 2025)

This release is equivalent to nightly 2025-10-19, with some additional manual testing of the release artifacts.
This is also our first release with a prebuilt arm macOS release artifact. Please also take note of the Troubleshooting guide on https://servo.org/download/ for common issues on macOS and Linux.