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
NormalizedAlgorithmby @kkoyung in #40643 - Implement protocol handler web API's behind flag by @TimvdLippe in #40616
- html: Handle new
DurationChangedevent by by @tharkum in #40644 - Support
calc()values in CSS Grid by @nicoburns in #34846 - script: Remove unnecessary
Trustedwrapper inRemovableDomEventListenerby @WaterWhisperer in #40649 - script: Add support for parsing CSS in parallel by @mrobinson in #40639
- script: Use
hkdfcrate 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/realmcodegen option and demostrate them by @sagudev in #40582 - Fix indexeddb intermitency by @arihant2math in #40648
- CI: use
--profileinstead of profile shorthands by @sagudev in #38644 - indexeddb: Clean shutdown of indexeddb threads/threadpool by @arihant2math in #40666
- libservo: Make
WebView::set_historyhavecratevisibility by @mrobinson in #40671 - resources: Ensure that selectors in CSS for the newtab page refer to actual elements by @arihant2math in #40670
- Implement
WindowOrWorkerGlobalScope::reportErrorby @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_lengthby @kkoyung in #40686 - compositing: Allow WebGL contexts to have different Surfman devices by @mukilan in #40594
- html: Fire the
canplaythroughevent in the expected order by @tharkum in #40685 - wpt: Backport upstream WPT PR for new SVG test. by @mukilan in #40689
- html: Run the
playseek ifloopattribute 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
ContextMenuElementInformationto 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
quotesattribute 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::Waiton winit by @mrobinson in #40715 - python: Remove
notify-pyfrom Python dependencies by @mrobinson in #40717 - Update expectation for
media-elements/event_timeupdate_noautoplay.htmlto 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_viewportwhen viewport size changes by @kongbai1996 in #40396 - webdriver: implement protocol handler automation mode by @TimvdLippe in #40733
- script: Use a
WeakReffor references toWebGLRenderingContextby @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
RefreshDriverper-RenderingContextby @mrobinson in #40738 - compositor: Share the
WebGpuExternalImageMapamong allPainters 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
--profileargument to build commands by @mukilan in #40753 - CI: Do not
fail_faston 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
volumechangeevent 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::createContextualFragmentby @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_whichfrom 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
Minibrowserto 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
WebViewtake aRenderingContextrather thanServoby @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_waitby @yezhizhen in #40784 - script: Rename
ExportedKey::RawtoExportedKey::Bytesby @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
MinibrowsertoGuiby @mrobinson in #40816 - servoshell: Remove code duplication in
EventsLoopand rename toServoEventLoopby @mrobinson in #40815 - script: Support SVG elements with fragment identifiers by @WaterWhisperer in #40684
- servoshell: Remove
App::suspendedby @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-facerule 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-sizingby @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/securityby @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
setPositionStatemethod by @tharkum in #40793 - script: Align Streams implementation with spec step calls by @WaterWhisperer in #40856
- Add
layout_variable_fonts_enabledto experimental preferences by @simonwuelker in #40861 - Replace some #[allow] with #[expect] by @d-kraus in #40865
- script: Don't use named fields for
StylesheetContextSource::Importby @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_monitorby @yezhizhen in #40874 - script: add CanGc as argument to methods in HTMLOptionElement by @yerke in #40873
- fonts: Apply variations for
font-weight,font-stretchby @simonwuelker in #40867 - html: Use WeakRef for the
MediaSessionmedia element by @tharkum in #40875 - compositor: Update doc of
ExternalScrollIdinScrollResultby @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
EnoughDataevent by @tharkum in #40881 - libservo: Remove
ServoDelegate::notify_animating_changedby @mrobinson in #40886 - display_list: Fix doc for
ScrollTypeby @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_codeby @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
opszfromfont-variation-settingswhenfont-optical-sizingisautoby @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
metadataevent 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
ScriptThreaddependency on the initialPipelineby @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_exitby @mrobinson in #40953 - libservo: Clean up Servo exports and export more at the root by @mrobinson in #40951
- constellation: Break the
EventLoopdependency on the initialPipelineby @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_portwhen scheduling shutdown by @yezhizhen in #40974 - script: Fire the video
resizeevent in the expected order by @tharkum in #40940 - script: Implement generate key operation of ChaCha20-Poly1305 by @kkoyung in #40978
- Move
disable_share_style_cachetoprefsby @atbrakhi in #40959 - OHOS CI: Switch speedometer from hitrace-bench to servo-driver script by @Narfinger in #40798
- config: Rename
DebugOptstoDiagnosticsLoggingand get rid ofdumpterminology by @atbrakhi in #40960 - servoshell: Explicitly add the
Win32_System_Consolefeature towindows-sysby @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_stateby @mrobinson in #40743 - Remove unused
ipc-channeldependency inlayoutandbackground_hang_monitorby @Narfinger in #40990 - servoshell: Prepare November release (0.0.3) by @jschwe in #40962
New Contributors
- @d-kraus made their first contribution in #40745
- @monissaJ made their first contribution in #40473
- @freyacodes made their first contribution in #40822
- @nacho made their first contribution in #40934
Full Changelog: v0.0.2...v0.0.3