Skip to content

v0.0.3

Latest

Choose a tag to compare

@jschwe jschwe released this 16 Dec 08:44
7cd39f4

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 in #40768
  • layout: Cleanup for replaced elements with widgets by @Loirooriol in #40769
  • dom: cache preference access in Document by @webbeef in #40775
  • Add feature to disable JIT support in mozjs at compile-time by @jschwe in #37972
  • Remove dom_uievent_which from experimental features by @mrego in #40783
  • servoshell: Share WebView management between desktop and EGL platforms by @atbrakhi in #40766
  • compositing: Support per-Painter operations and message handling by @mukilan in #40788
  • servoshell: Move Minibrowser to headed window by @mrobinson in #40792
  • libservo: Remove Servo::animating() by @mrobinson in #40799
  • libservo: Notify embedder of protocol handler updates by @TimvdLippe in #40653
  • libservo: Have WebView take a RenderingContext rather than Servo by @mrobinson in #40794
  • layout: Preserve cached intrinsic sizes of undamaged descendants by @Loirooriol in #40795
  • layout: Preserve cached layout results of undamaged descendants by @Loirooriol in #40797
  • compositing_traits: Drop unnecessary variable mutability by @Loirooriol in #40804
  • chore: Use parking_lot Mutex and RwLock in net/ code by @webbeef in #40805
  • webdriver: Generalize implicit_wait by @yezhizhen in #40784
  • script: Rename ExportedKey::Raw to ExportedKey::Bytes by @kkoyung in #40809
  • openxr: Fix DirectX 11 build warning and reduce visiblity by @yezhizhen in #40806
  • Run SVG tests in CI. by @jdm in #40692
  • script: Improve spec-compliance of Performance resource timing entries by @jdm in #40811
  • servoshell: hide tab bar in full screen mode by @yerke in #40807
  • devtools: Pause actor boilerplate by @eerii in #40786
  • devtools: Add Environment actor boilerplate and Object actor encode by @eerii in #40787
  • servoshell: Rename Minibrowser to Gui by @mrobinson in #40816
  • servoshell: Remove code duplication in EventsLoop and rename to ServoEventLoop by @mrobinson in #40815
  • script: Support SVG elements with fragment identifiers by @WaterWhisperer in #40684
  • servoshell: Remove App::suspended by @mrobinson in #40818
  • testing: Remove ahem.css user stylesheet injection. by @jdm in #40817
  • Upgrade Taffy to v0.9.2 by @nicoburns in #40821
  • fonts: Compute applied variations depending on originating @font-face rule by @simonwuelker in #40647
  • Don't spawn a channel for ProfilerChan when profiling is off by @lumiscosity in #40823
  • indexeddb: Support deletion of key ranges by @arihant2math in #39582
  • script: Replace strings for performance entry types with dedicated enum. by @jdm in #40812
  • servoshell: Make event loop implementations more similar to each other by @mrobinson in #40824
  • script: Implement CShake in WebCrypto API by @kkoyung in #40832
  • fonts: Add WebFontDocumentContext for CSS Fonts 4 font fetching by @jdm in #40301
  • servodriver: Fix incorrect method name. by @jdm in #40835
  • Support font-optical-sizing by @simonwuelker in #40829
  • Update nixpkgs to current unstable by @freyacodes in #40822
  • devtools: Frame actor boilerplate by @eerii in #40791
  • ohos CI: Try and improve the scenario test stability by @jschwe in #40841
  • script: Move CSP DOM interfaces to script/dom/security by @dyegoaurelio in #40843
  • Add CommandEvent by @lukewarlow in #40413
  • OHOS: Set the correct input type for url field by @Narfinger in #40862
  • profile: Added Pss measure to memory report. by @Narfinger in #40599
  • html: Update MediaSession setPositionState method by @tharkum in #40793
  • script: Align Streams implementation with spec step calls by @WaterWhisperer in #40856
  • Add layout_variable_fonts_enabled to experimental preferences by @simonwuelker in #40861
  • Replace some #[allow] with #[expect] by @d-kraus in #40865
  • script: Don't use named fields for StylesheetContextSource::Import by @Loirooriol in #40866
  • Implement brotli support for CompressionStream and DecompressionStream by @Taym95 in #40842
  • ci: Use new queue API for self-hosted runners by @delan in #40852
  • Remove unnecessary clones in various places by @yezhizhen in #40872
  • Fix compilation warning for background_hang_monitor by @yezhizhen in #40874
  • script: add CanGc as argument to methods in HTMLOptionElement by @yerke in #40873
  • fonts: Apply variations for font-weight, font-stretch by @simonwuelker in #40867
  • html: Use WeakRef for the MediaSession media element by @tharkum in #40875
  • compositor: Update doc of ExternalScrollId in ScrollResult by @yezhizhen in #40877
  • ci: Remove self-hosted runner timeout jobs by @delan in #40876
  • nix: Add FHS wrappers for venv binaries (ruff, pyrefly) on NixOS by @dyegoaurelio in #40860
  • html: Fix handling of the media playback EnoughData event by @tharkum in #40881
  • libservo: Remove ServoDelegate::notify_animating_changed by @mrobinson in #40886
  • display_list: Fix doc for ScrollType by @yezhizhen in #40895
  • Fixes ByteLengthQueuingStrategy.size WPTs that were previously marked as TIMEOUT/CRASH by @Taym95 in #40890
  • OHOS CI: Update to a new version of hitrace-bench by @Narfinger in #40887
  • CI: Add retries for unit-tests with code-coverage by @jschwe in #40899
  • bhm: Fix a build warning about unexpectedly used dead_code by @mrobinson in #40878
  • build(deps): Bump mozangle to 0.5.4 by @jschwe in #40903
  • Fix inconsistent strum dependencies and imports by @janvarga in #40907
  • Don't override opsz from font-variation-settings when font-optical-sizing is auto by @simonwuelker in #40884
  • fonts: Don't panic when font information contains invalid UTF-8 by @simonwuelker in #40913
  • Bump mozjs to 140.5-5 by @jschwe in #40855
  • html: Add new media tracks when receiving the initial media metadata event by @tharkum in #40917
  • fix RefCell already borrowed panic in readablestream by @Taym95 in #40911
  • webdriver: Enable implicit wait on error by @yezhizhen in #40836
  • servoshell: Add architectural support for opening multiple windows by @mrobinson in #40883
  • stylo: Add stacking context damage when outline-width becomes non-zero by @Loirooriol in #40916
  • script: Break the ScriptThread dependency on the initial Pipeline by @mrobinson in #40918
  • servoshell: Remove unnecessary unwrap by @jschwe in #40921
  • script: Stop assuming that previous dirty root is still connected by @Loirooriol in #40922
  • script_bindings: Disallow manual Drop implementations for DOM interfaces. by @jdm in #40919
  • html: Update the media player state without delays by @tharkum in #40898
  • dom: Focus scroll to the element only if it is not visible by @stevennovaryo in #40447
  • script: Add new KeyFormat and KeyUsage for modern algorithms by @kkoyung in #40857
  • servoshell: Add proper labels to UI elements by @lukewarlow in #40925
  • script: Implement import key operation of Argon2 by @kkoyung in #40932
  • servodriver: Clear cookies between tests. by @jdm in #40709
  • dom: avoid short lived rooting in Node::is_ancestor_of by @webbeef in #40776
  • script: Finishing implementation of Argon2 in WebCrypto by @kkoyung in #40936
  • libservo: Starting removing the multi-document interface API by @mrobinson in #40923
  • storage: Introduce storage coordination thread and infrastructure for parallel next-generation IndexedDB implementation by @janvarga in #40661
  • servoshell: Schedule keyboard shortcut exits so that they can be done cleanly by @mrobinson in #40933
  • Fix various typos throughout the code base by @nacho in #40934
  • script: Implement import/export key operation of ChaCha20-Poly1305 by @kkoyung in #40948
  • servoshell: Always exit via RunningAppState::schedule_exit by @mrobinson in #40953
  • libservo: Clean up Servo exports and export more at the root by @mrobinson in #40951
  • constellation: Break the EventLoop dependency on the initial Pipeline by @mrobinson in #40944
  • script: Reflect infallible Streams operation in spec by @WaterWhisperer in #40949
  • net: Expose make_server to other crates via test-util feature by @janvarga in #40943
  • script: inline roots.swap_remove() by @webbeef in #40777
  • Fix duplicate carets in <textarea> by @freyacodes in #40837
  • servoshell: Fix stdout / stderr output in windows production builds by @jschwe in #40961
  • script: Reverse retargeting algorithm for ShadowRoot.element[s]FromPoint. by @jdm in #40975
  • servoshell: Unset webdriver_port when scheduling shutdown by @yezhizhen in #40974
  • script: Fire the video resize event in the expected order by @tharkum in #40940
  • script: Implement generate key operation of ChaCha20-Poly1305 by @kkoyung in #40978
  • Move disable_share_style_cache to prefs by @atbrakhi in #40959
  • OHOS CI: Switch speedometer from hitrace-bench to servo-driver script by @Narfinger in #40798
  • config: Rename DebugOpts to DiagnosticsLogging and get rid of dump terminology by @atbrakhi in #40960
  • servoshell: Explicitly add the Win32_System_Console feature to windows-sys by @yezhizhen in #40980
  • net: Allow servo to use a http proxy without authentication by @Narfinger in #40941
  • layout: Handle stacking context tree outlines during display list building by @mrobinson in #40984
  • ci: Add timeout to ohos-speedometer by @jschwe in #40991
  • Fix crash when creating an AudioNode from a closed AudioContext by @Taym95 in #40954
  • script: Make a Layout-safe version of Element::each_custom_state by @mrobinson in #40743
  • Remove unused ipc-channel dependency in layout and background_hang_monitor by @Narfinger in #40990
  • servoshell: Prepare November release (0.0.3) by @jschwe in #40962

New Contributors

Full Changelog: v0.0.2...v0.0.3