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 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 <media> 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 * 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 <media> `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 <media> `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 [#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 `Painter`s 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<String> 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 <media> `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 <use> 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 <textarea> 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/40962New 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