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 https://github.com/servo/servo/pull/40618
Add scroll and fling trace. by @kongbai1996 in https://github.com/servo/servo/pull/40629
wpt: Remove legacy expectation by @kkoyung in https://github.com/servo/servo/pull/40642
script: Flatten nested match arms in NormalizedAlgorithm by @kkoyung in https://github.com/servo/servo/pull/40643
Implement protocol handler web API's behind flag by @TimvdLippe in https://github.com/servo/servo/pull/40616
html: Handle new DurationChanged event by by @tharkum in https://github.com/servo/servo/pull/40644
Support calc() values in CSS Grid by @nicoburns in https://github.com/servo/servo/pull/34846
script: Remove unnecessary Trusted wrapper in RemovableDomEventListener by @WaterWhisperer in https://github.com/servo/servo/pull/40649
script: Add support for parsing CSS in parallel by @mrobinson in https://github.com/servo/servo/pull/40639
script: Use hkdf crate for HKDF in WebCrypto by @kkoyung in https://github.com/servo/servo/pull/40650
Tweak automatic release notes by @jschwe in https://github.com/servo/servo/pull/40651
script: Housekeeping WebIDL dictionaries of WebCrypto API by @kkoyung in https://github.com/servo/servo/pull/40652
script: Eliminate duplicate quirks mode origin check in stylesheet loader by @mrobinson in https://github.com/servo/servo/pull/40646
script: Don't rely on Attr nodes when communicating with layout by @simonwuelker in https://github.com/servo/servo/pull/40657
canvas: Clear bitmap without transform by @sagudev in https://github.com/servo/servo/pull/38286
indexeddb: Fix typo in range sql generator by @arihant2math in https://github.com/servo/servo/pull/40658
servodriver: Shut down Servo elegantly when all tests finish by @yezhizhen in https://github.com/servo/servo/pull/40455
script: Add cx_no_gc/cx/realm codegen option and demostrate them by @sagudev in https://github.com/servo/servo/pull/40582
Fix indexeddb intermitency by @arihant2math in https://github.com/servo/servo/pull/40648
CI: use --profile instead of profile shorthands by @sagudev in https://github.com/servo/servo/pull/38644
indexeddb: Clean shutdown of indexeddb threads/threadpool by @arihant2math in https://github.com/servo/servo/pull/40666
libservo: Make WebView::set_history have crate visibility by @mrobinson in https://github.com/servo/servo/pull/40671
New Contributors
@d-kraus made their first contribution in https://github.com/servo/servo/pull/40745
@monissaJ made their first contribution in https://github.com/servo/servo/pull/40473
@freyacodes made their first contribution in https://github.com/servo/servo/pull/40822
@nacho made their first contribution in https://github.com/servo/servo/pull/40934
Full Changelog: https://github.com/servo/servo/compare/v0.0.2...v0.0.3
resources: Ensure that selectors in CSS for the newtab page refer to actual elements by @arihant2math in https://github.com/servo/servo/pull/40670
Implement WindowOrWorkerGlobalScope::reportError by @TimvdLippe in https://github.com/servo/servo/pull/40654
Remove #![allow(dead_code)] from readablestreambyobreader by @Taym95 in https://github.com/servo/servo/pull/40675
net: Relax the SVG content type detection logic. by @mukilan in https://github.com/servo/servo/pull/40636
script: Fix wrongly matched normalized algorithm in NormalizedAlgorithm::get_key_length by @kkoyung in https://github.com/servo/servo/pull/40686
compositing: Allow WebGL contexts to have different Surfman devices by @mukilan in https://github.com/servo/servo/pull/40594
html: Fire the canplaythrough event in the expected order by @tharkum in https://github.com/servo/servo/pull/40685
wpt: Backport upstream WPT PR for new SVG test. by @mukilan in https://github.com/servo/servo/pull/40689
html: Run the play seek if loop attribute was set after playback ended by @tharkum in https://github.com/servo/servo/pull/40688
layout: Adjust inset-modified containing block to have non-negative size by @Loirooriol in https://github.com/servo/servo/pull/40628
Upload junit report of unit-tests in CI by @jschwe in https://github.com/servo/servo/pull/39897
libservo: Add ContextMenuElementInformation to for the context menu API by @mrobinson in https://github.com/servo/servo/pull/40607
script: Trigger reflow properly for pseudo-elements with content: attr() by @mrobinson in https://github.com/servo/servo/pull/40698
Revert servo/servo#40594 "Allow WebGL contexts to have different Surfman devices" by @yezhizhen in https://github.com/servo/servo/pull/40707
Compositor: Add touch compatibility handling for mouse move events by @kongbai1996 in https://github.com/servo/servo/pull/40637
layout: Display User Agent Controls widget for video element. by @rayguo17 in https://github.com/servo/servo/pull/40578
layout: Rebuild the box tree when the quotes attribute changes on a pseudo-element by @mrobinson in https://github.com/servo/servo/pull/40699
libservo: Trigger a rendering update when waiting for paint readiness in WebView unit tests by @mrobinson in https://github.com/servo/servo/pull/40712
profiling: Add abstraction over tracing-rs by @jschwe in https://github.com/servo/servo/pull/40160
Replace codecov/test-results-action by @jschwe in https://github.com/servo/servo/pull/40718
servoshell: Always use ControlFlow::Wait on winit by @mrobinson in https://github.com/servo/servo/pull/40715
python: Remove notify-py from Python dependencies by @mrobinson in https://github.com/servo/servo/pull/40717
Update expectation for media-elements/event_timeupdate_noautoplay.html to PASS by removing .ini by @WaterWhisperer in https://github.com/servo/servo/pull/40714
compositing: Allow WebGL contexts to have different Surfman devices by @mrobinson in https://github.com/servo/servo/pull/40721
compositing: Rework WebRender external image handlers to be per-Painter by @mrobinson in https://github.com/servo/servo/pull/40690
script: Don't allocate when retrieving attribute values for layout by @simonwuelker in https://github.com/servo/servo/pull/40724
Fix RefCell already borrowed panic in HTMLMediaElement::set_audio_renderer by @Taym95 in https://github.com/servo/servo/pull/40729
Use safe JSContext/AutoRealm/CurrentRealm in codegen by @sagudev in https://github.com/servo/servo/pull/40716
Compositor: Resize PinchZoom::unscaled_viewport when viewport size changes by @kongbai1996 in https://github.com/servo/servo/pull/40396
webdriver: implement protocol handler automation mode by @TimvdLippe in https://github.com/servo/servo/pull/40733
script: Use a WeakRef for references to WebGLRenderingContext by @mrobinson in https://github.com/servo/servo/pull/40725
webgl: Ensure all Surfman surfaces are released properly by @mrobinson in https://github.com/servo/servo/pull/40736
CI: only upload test results to codecov if unit-test are actually run by @sagudev in https://github.com/servo/servo/pull/40739
compositing: Make RefreshDriver per-RenderingContext by @mrobinson in https://github.com/servo/servo/pull/40738
compositor: Share the WebGpuExternalImageMap among all Painters by @mrobinson in https://github.com/servo/servo/pull/40737
script: Add message to Dom exception Error::NotSupported by @d-kraus in https://github.com/servo/servo/pull/40745
ohos CI: Add webdriver based scenario tests by @monissaJ in https://github.com/servo/servo/pull/40473
script: Optimize Node::insert by @webbeef in https://github.com/servo/servo/pull/40742
script: Finish converting all error message enum variants to Option by @arihant2math in https://github.com/servo/servo/pull/40750
mach: Normalize the --profile argument to build commands by @mukilan in https://github.com/servo/servo/pull/40753
CI: Do not fail_fast on push to main by @sagudev in https://github.com/servo/servo/pull/40755
profiling: Fix missing span enter by @jschwe in https://github.com/servo/servo/pull/40758
compositing: Do not set scroll offsets of zero when restoring scroll offsets in new display lists by @kongbai1996 in https://github.com/servo/servo/pull/40757
devtools: Support reloading tab by @eerii in https://github.com/servo/servo/pull/40760
html: The queued volumechange event should be cancellable by @tharkum in https://github.com/servo/servo/pull/40763
script: Implement SHA-3 in WebCrypto API by @kkoyung in https://github.com/servo/servo/pull/40765
Prefer log over (e)println! by @jschwe in https://github.com/servo/servo/pull/40764
paint: Do trigger animations when a non-animation paint happens by @mrobinson in https://github.com/servo/servo/pull/40433
script: Don't crash when encountering unexpected node types in Range::createContextualFragment by @simonwuelker in https://github.com/servo/servo/pull/40762
script: Add messages to exceptions thrown in Element::attachShadow by @simonwuelker in https://github.com/servo/servo/pull/40768
layout: Cleanup for replaced elements with widgets by @Loirooriol in https://github.com/servo/servo/pull/40769
dom: cache preference access in Document by @webbeef in https://github.com/servo/servo/pull/40775
Add feature to disable JIT support in mozjs at compile-time by @jschwe in https://github.com/servo/servo/pull/37972
Remove dom_uievent_which from experimental features by @mrego in https://github.com/servo/servo/pull/40783
servoshell: Share WebView management between desktop and EGL platforms by @atbrakhi in https://github.com/servo/servo/pull/40766
compositing: Support per-Painter operations and message handling by @mukilan in https://github.com/servo/servo/pull/40788
servoshell: Move Minibrowser to headed window by @mrobinson in https://github.com/servo/servo/pull/40792
libservo: Remove Servo::animating() by @mrobinson in https://github.com/servo/servo/pull/40799
libservo: Notify embedder of protocol handler updates by @TimvdLippe in https://github.com/servo/servo/pull/40653
libservo: Have WebView take a RenderingContext rather than Servo by @mrobinson in https://github.com/servo/servo/pull/40794
layout: Preserve cached intrinsic sizes of undamaged descendants by @Loirooriol in https://github.com/servo/servo/pull/40795
layout: Preserve cached layout results of undamaged descendants by @Loirooriol in https://github.com/servo/servo/pull/40797
compositing_traits: Drop unnecessary variable mutability by @Loirooriol in https://github.com/servo/servo/pull/40804
chore: Use parking_lot Mutex and RwLock in net/ code by @webbeef in https://github.com/servo/servo/pull/40805
webdriver: Generalize implicit_wait by @yezhizhen in https://github.com/servo/servo/pull/40784
script: Rename ExportedKey::Raw to ExportedKey::Bytes by @kkoyung in https://github.com/servo/servo/pull/40809
openxr: Fix DirectX 11 build warning and reduce visiblity by @yezhizhen in https://github.com/servo/servo/pull/40806
Run SVG tests in CI. by @jdm in https://github.com/servo/servo/pull/40692
script: Improve spec-compliance of Performance resource timing entries by @jdm in https://github.com/servo/servo/pull/40811
servoshell: hide tab bar in full screen mode by @yerke in https://github.com/servo/servo/pull/40807
devtools: Pause actor boilerplate by @eerii in https://github.com/servo/servo/pull/40786
devtools: Add Environment actor boilerplate and Object actor encode by @eerii in https://github.com/servo/servo/pull/40787
servoshell: Rename Minibrowser to Gui by @mrobinson in https://github.com/servo/servo/pull/40816
servoshell: Remove code duplication in EventsLoop and rename to ServoEventLoop by @mrobinson in https://github.com/servo/servo/pull/40815
script: Support SVG elements with fragment identifiers by @WaterWhisperer in https://github.com/servo/servo/pull/40684
servoshell: Remove App::suspended by @mrobinson in https://github.com/servo/servo/pull/40818
testing: Remove ahem.css user stylesheet injection. by @jdm in https://github.com/servo/servo/pull/40817
Upgrade Taffy to v0.9.2 by @nicoburns in https://github.com/servo/servo/pull/40821
fonts: Compute applied variations depending on originating @font-face rule by @simonwuelker in https://github.com/servo/servo/pull/40647
Don't spawn a channel for ProfilerChan when profiling is off by @lumiscosity in https://github.com/servo/servo/pull/40823
indexeddb: Support deletion of key ranges by @arihant2math in https://github.com/servo/servo/pull/39582
script: Replace strings for performance entry types with dedicated enum. by @jdm in https://github.com/servo/servo/pull/40812
servoshell: Make event loop implementations more similar to each other by @mrobinson in https://github.com/servo/servo/pull/40824
script: Implement CShake in WebCrypto API by @kkoyung in https://github.com/servo/servo/pull/40832
fonts: Add WebFontDocumentContext for CSS Fonts 4 font fetching by @jdm in https://github.com/servo/servo/pull/40301
servodriver: Fix incorrect method name. by @jdm in https://github.com/servo/servo/pull/40835
Support font-optical-sizing by @simonwuelker in https://github.com/servo/servo/pull/40829
Update nixpkgs to current unstable by @freyacodes in https://github.com/servo/servo/pull/40822
devtools: Frame actor boilerplate by @eerii in https://github.com/servo/servo/pull/40791
ohos CI: Try and improve the scenario test stability by @jschwe in https://github.com/servo/servo/pull/40841
script: Move CSP DOM interfaces to script/dom/security by @dyegoaurelio in https://github.com/servo/servo/pull/40843
Add CommandEvent by @lukewarlow in https://github.com/servo/servo/pull/40413
OHOS: Set the correct input type for url field by @Narfinger in https://github.com/servo/servo/pull/40862
profile: Added Pss measure to memory report. by @Narfinger in https://github.com/servo/servo/pull/40599
html: Update MediaSession setPositionState method by @tharkum in https://github.com/servo/servo/pull/40793
script: Align Streams implementation with spec step calls by @WaterWhisperer in https://github.com/servo/servo/pull/40856
Add layout_variable_fonts_enabled to experimental preferences by @simonwuelker in https://github.com/servo/servo/pull/40861
Replace some #[allow] with #[expect] by @d-kraus in https://github.com/servo/servo/pull/40865
script: Don't use named fields for StylesheetContextSource::Import by @Loirooriol in https://github.com/servo/servo/pull/40866
Implement brotli support for CompressionStream and DecompressionStream by @Taym95 in https://github.com/servo/servo/pull/40842
ci: Use new queue API for self-hosted runners by @delan in https://github.com/servo/servo/pull/40852
Remove unnecessary clones in various places by @yezhizhen in https://github.com/servo/servo/pull/40872
Fix compilation warning for background_hang_monitor by @yezhizhen in https://github.com/servo/servo/pull/40874
script: add CanGc as argument to methods in HTMLOptionElement by @yerke in https://github.com/servo/servo/pull/40873
fonts: Apply variations for font-weight, font-stretch by @simonwuelker in https://github.com/servo/servo/pull/40867
html: Use WeakRef for the MediaSession media element by @tharkum in https://github.com/servo/servo/pull/40875
compositor: Update doc of ExternalScrollId in ScrollResult by @yezhizhen in https://github.com/servo/servo/pull/40877
ci: Remove self-hosted runner timeout jobs by @delan in https://github.com/servo/servo/pull/40876
nix: Add FHS wrappers for venv binaries (ruff, pyrefly) on NixOS by @dyegoaurelio in https://github.com/servo/servo/pull/40860
html: Fix handling of the media playback EnoughData event by @tharkum in https://github.com/servo/servo/pull/40881
libservo: Remove ServoDelegate::notify_animating_changed by @mrobinson in https://github.com/servo/servo/pull/40886
display_list: Fix doc for ScrollType by @yezhizhen in https://github.com/servo/servo/pull/40895
Fixes ByteLengthQueuingStrategy.size WPTs that were previously marked as TIMEOUT/CRASH by @Taym95 in https://github.com/servo/servo/pull/40890
OHOS CI: Update to a new version of hitrace-bench by @Narfinger in https://github.com/servo/servo/pull/40887
CI: Add retries for unit-tests with code-coverage by @jschwe in https://github.com/servo/servo/pull/40899
bhm: Fix a build warning about unexpectedly used dead_code by @mrobinson in https://github.com/servo/servo/pull/40878
build(deps): Bump mozangle to 0.5.4 by @jschwe in https://github.com/servo/servo/pull/40903
Fix inconsistent strum dependencies and imports by @janvarga in https://github.com/servo/servo/pull/40907
Don't override opsz from font-variation-settings when font-optical-sizing is auto by @simonwuelker in https://github.com/servo/servo/pull/40884
fonts: Don't panic when font information contains invalid UTF-8 by @simonwuelker in https://github.com/servo/servo/pull/40913
Bump mozjs to 140.5-5 by @jschwe in https://github.com/servo/servo/pull/40855
html: Add new media tracks when receiving the initial media metadata event by @tharkum in https://github.com/servo/servo/pull/40917
fix RefCell already borrowed panic in readablestream by @Taym95 in https://github.com/servo/servo/pull/40911
webdriver: Enable implicit wait on error by @yezhizhen in https://github.com/servo/servo/pull/40836
servoshell: Add architectural support for opening multiple windows by @mrobinson in https://github.com/servo/servo/pull/40883
stylo: Add stacking context damage when outline-width becomes non-zero by @Loirooriol in https://github.com/servo/servo/pull/40916
script: Break the ScriptThread dependency on the initial Pipeline by @mrobinson in https://github.com/servo/servo/pull/40918
servoshell: Remove unnecessary unwrap by @jschwe in https://github.com/servo/servo/pull/40921
script: Stop assuming that previous dirty root is still connected by @Loirooriol in https://github.com/servo/servo/pull/40922
script_bindings: Disallow manual Drop implementations for DOM interfaces. by @jdm in https://github.com/servo/servo/pull/40919
html: Update the media player state without delays by @tharkum in https://github.com/servo/servo/pull/40898
dom: Focus scroll to the element only if it is not visible by @stevennovaryo in https://github.com/servo/servo/pull/40447
script: Add new KeyFormat and KeyUsage for modern algorithms by @kkoyung in https://github.com/servo/servo/pull/40857
servoshell: Add proper labels to UI elements by @lukewarlow in https://github.com/servo/servo/pull/40925
script: Implement import key operation of Argon2 by @kkoyung in https://github.com/servo/servo/pull/40932
servodriver: Clear cookies between tests. by @jdm in https://github.com/servo/servo/pull/40709
dom: avoid short lived rooting in Node::is_ancestor_of by @webbeef in https://github.com/servo/servo/pull/40776
script: Finishing implementation of Argon2 in WebCrypto by @kkoyung in https://github.com/servo/servo/pull/40936
libservo: Starting removing the multi-document interface API by @mrobinson in https://github.com/servo/servo/pull/40923
storage: Introduce storage coordination thread and infrastructure for parallel next-generation IndexedDB implementation by @janvarga in https://github.com/servo/servo/pull/40661
servoshell: Schedule keyboard shortcut exits so that they can be done cleanly by @mrobinson in https://github.com/servo/servo/pull/40933
Fix various typos throughout the code base by @nacho in https://github.com/servo/servo/pull/40934
script: Implement import/export key operation of ChaCha20-Poly1305 by @kkoyung in https://github.com/servo/servo/pull/40948
servoshell: Always exit via RunningAppState::schedule_exit by @mrobinson in https://github.com/servo/servo/pull/40953
libservo: Clean up Servo exports and export more at the root by @mrobinson in https://github.com/servo/servo/pull/40951
constellation: Break the EventLoop dependency on the initial Pipeline by @mrobinson in https://github.com/servo/servo/pull/40944
script: Reflect infallible Streams operation in spec by @WaterWhisperer in https://github.com/servo/servo/pull/40949
net: Expose make_server to other crates via test-util feature by @janvarga in https://github.com/servo/servo/pull/40943
script: inline roots.swap_remove() by @webbeef in https://github.com/servo/servo/pull/40777
Fix duplicate carets in by @freyacodes in https://github.com/servo/servo/pull/40837
servoshell: Fix stdout / stderr output in windows production builds by @jschwe in https://github.com/servo/servo/pull/40961
script: Reverse retargeting algorithm for ShadowRoot.element[s]FromPoint. by @jdm in https://github.com/servo/servo/pull/40975
servoshell: Unset webdriver_port when scheduling shutdown by @yezhizhen in https://github.com/servo/servo/pull/40974
script: Fire the video resize event in the expected order by @tharkum in https://github.com/servo/servo/pull/40940
script: Implement generate key operation of ChaCha20-Poly1305 by @kkoyung in https://github.com/servo/servo/pull/40978
Move disable_share_style_cache to prefs by @atbrakhi in https://github.com/servo/servo/pull/40959
OHOS CI: Switch speedometer from hitrace-bench to servo-driver script by @Narfinger in https://github.com/servo/servo/pull/40798
config: Rename DebugOpts to DiagnosticsLogging and get rid of dump terminology by @atbrakhi in https://github.com/servo/servo/pull/40960
servoshell: Explicitly add the Win32_System_Console feature to windows-sys by @yezhizhen in https://github.com/servo/servo/pull/40980
net: Allow servo to use a http proxy without authentication by @Narfinger in https://github.com/servo/servo/pull/40941
layout: Handle stacking context tree outlines during display list building by @mrobinson in https://github.com/servo/servo/pull/40984
ci: Add timeout to ohos-speedometer by @jschwe in https://github.com/servo/servo/pull/40991
Fix crash when creating an AudioNode from a closed AudioContext by @Taym95 in https://github.com/servo/servo/pull/40954
script: Make a Layout-safe version of Element::each_custom_state by @mrobinson in https://github.com/servo/servo/pull/40743
Remove unused ipc-channel dependency in layout and background_hang_monitor by @Narfinger in https://github.com/servo/servo/pull/40990
servoshell: Prepare November release (0.0.3) by @jschwe in https://github.com/servo/servo/pull/40962