github servo/servo v0.3.0

11 hours ago

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

Due to time-constraints these release notes unfortunately don't have a curated summary of the changes, but as usual there will be a monthly blog-post at https://servo.org/blog/ covering the changes of this release (May). The blog post will be published at a later point in time.

Generated Release notes

What's Changed

  • layout: Disable kerning when font-kerning is none by @simonwuelker in #44634
  • script: Implement backColor command by @TimvdLippe in #44644
  • script: Propagate &mut JSContext to Credential & HTMLCanvasElement by @yezhizhen in #44647
  • Update uv.lock for #44591 by @delan in #44600
  • script: Methods for modifying sanitizer configuration by @kkoyung in #44655
  • script: Introduce argument version of UnderlyingSourceType to remove rooting requirements. by @jdm in #44637
  • Add two error messages to customElements.define by @PuercoPop in #44656
  • layout: Accessibility: Compute labels for name-from-content nodes by @alice in #44439
  • Update rust to 1.95 by @simonwuelker in #44632
  • script: Pass &mut JSContext to more accessors by @TimvdLippe in #44659
  • script: Pass &mut JSContext to set_string_attribute by @TimvdLippe in #44660
  • Port debugger global scope fire interrupt by @elomscansio in #44663
  • fonts: Clean up unnecessary clone. by @jdm in #44661
  • script: Pass &mut JSContext to most attribute modification methods by @TimvdLippe in #44664
  • Pass redirectStart to document and expose it to PerformanceMark by @shubhamg13 in #44624
  • script: Remove unnecessary Box inside of Rc. by @jdm in #44662
  • script: Properly fire pointerup events by @mrobinson in #44666
  • script: Implement foreColor command by @TimvdLippe in #44657
  • script: Pass &mut JSContext to handle_attribute_changes by @TimvdLippe in #44668
  • script: Port HTMLFormControlsCollection & HTMLFormElement to &mut JSContext by @yezhizhen in #44653
  • script: Propagate &mut JSContext through event dispatch. by @jdm in #44665
  • Pass redirectEnd to document and expose it to PerformanceMark by @shubhamg13 in #44673
  • script: Create Duration from microseconds timestamp instead of milliseconds by @shubhamg13 in #44675
  • script: Construct attribute nodes lazily by @webbeef in #44209
  • mach release: Specify exact dependency on workspace crates by @jschwe in #44667
  • script: Port OffscreenCanvas & Navigator to &mut JSContext by @yezhizhen in #44671
  • mozjs: Make ForOfIterator more convenient to use by @simonwuelker in #44356
  • script: Clear hover pseudo-class on the shadow-including ancestors by @SharanRP in #43979
  • Bindings.conf: Remove stale canGc by @yezhizhen in #44678
  • script: Implement subscript and superscript commands by @TimvdLippe in #44677
  • script: Replace assert! to debug_assert! in sanitizer by @nodelpit in #44679
  • script: Propogate &mut JSContext across IntersectionObserver,DOMRectReadOnly, ResizeObservor by @yezhizhen in #44681
  • allocator: Add script to post-process output of tracking allocator by @jdm in #44674
  • base: Consolidate thread pools by @Narfinger in #44307
  • script: Zeroize webcrypto sensitive information on drop by @kkoyung in #44676
  • script: Implement createlink and unlink commands by @TimvdLippe in #44682
  • script: Enable Sanitizer API as experimental feature by @kkoyung in #44701
  • script: Implement PerformanceMark constructor by @shubhamg13 in #44702
  • script: Fix unit test panic for domstring test for release profile by @Narfinger in #44707
  • script: Length checks for SubtleCrypto.supports() for ECDH and X25519 by @kkoyung in #44706
  • Enable feature zeroize_derive for zeroize crate by @shubhamg13 in #44705
  • script: Move DomRefCell, assert_in_* into script_bindings by @Narfinger in #44598
  • ohos ci: Set PYTHONUNBUFFERED=1 for immediate output by @jschwe in #44713
  • Upgrade Stylo to 2026-05-01 by @Loirooriol in #44690
  • script: Pass &mut JSContext to HTMLTextAreaElement::handle_text_content_changed by @Gae24 in #44712
  • script: Port MediaDevices to &mut JSContext; Remove stale canGc for SVGElement by @yezhizhen in #44717
  • script: Remove accountable_refcell and refcell_backtrace feature by @Narfinger in #44718
  • script: fix off by one error in NamedNodeMap::Item() by @webbeef in #44721
  • script: Propogate &mut JSContext to Document::Fonts&FontFaceSet by @yezhizhen in #44733
  • layout: Fix grid container stretch alignment inside flex with indefinite height by @yezhizhen in #44396
  • script: Pass secureConnectionStart to document and expose it to PerformanceMark by @shubhamg13 in #44739
  • Remove unfulfilled unrooted_must_root expect on AttributeStorage::remove by @mvanhorn in #44740
  • devtools: Simplify previewers in debugger.js by @eerii in #44738
  • paint: Correctly apply viewport initial-scale by @shubhamg13 in #43160
  • script: retrieve fetch options and base url from the active script for timer scripts by @Gae24 in #44741
  • webdriver: Wait until browsing context is open by @jschwe in #44206
  • script: Immediately report import maps errors by @Gae24 in #44745
  • script: Implement removeFormat command by @TimvdLippe in #44710
  • script: Fix effectively contained including ancestors of text nodes by @TimvdLippe in #44735
  • script: Fix panic when deleting after range.deleteContents by @TimvdLippe in #44748
  • mozjs: Update to v0.15.14 (SM 140.10.1 security update) by @jschwe in #44755
  • devtools: Use actual values fromFrameState by @atbrakhi in #44744
  • script: Port HTMLStyleElement to &mut JSContext by @yezhizhen in #44686
  • script: Pass &mut CurrentRealm to Promise::append_native_handler by @Gae24 in #44759
  • script: Fix DevTools exceptions not being shown. by @eerii in #44760
  • devtools: Prevent sentinel values from being serialized as Object by @atbrakhi in #44763
  • devtools: Fix function name not apprearing in Preview by @atbrakhi in #44764
  • Revert "servoshell: Remove --userscripts option (#43573)" by @jdm in #44754
  • layout: Disregard 'content' property for elements by @SimonSapin in #44762
  • uv: Upgrade mako to 1.3.12 in uv.lock to fix security alert by @yezhizhen in #44779
  • layout: Add setter/getter methods on AccessibilityNode. by @alice in #44766
  • script: Add support for focus navigation scopes by @mrobinson in #44684
  • devtools: Do not cache environment actor values by @atbrakhi in #44765
  • layout: Generate unique IDs for accessibility nodes. by @alice in #44767
  • script: Rename coalesced_move_event_ids to coalesced_mouse_move_event_ids by @yezhizhen in #44782
  • layout: Add ShapedTextSlice and use it for line break opportunities by @mrobinson in #44609
  • ohos: Record custom fields via hitrace by @jschwe in #44719
  • media: Make all media stream IDs contain a unique ID. by @jdm in #44781
  • layout: Reuse shaping results between box tree layouts by @mrobinson in #44769
  • script: Properly render CDATA sections by @mrobinson in #44791
  • config: Improve API for DiagnosticsLogging configuration. by @mukilan in #44703
  • net: Remove spurious invalidate in http_cache by @Narfinger in #44783
  • layout: Split recompute_children() from update_node() in AccessibilityTree. by @alice in #44768
  • paint: Implent and use GenericSharedMemory::into_arc_vec to get the arc directly by @Narfinger in #44786
  • script: Move reflector construction to script_bindings by @Narfinger in #44636
  • mach: Use mach logging for single SVG tests by @simartin in #44800
  • script: Remove client from service worker container, use storage key by @gterzian in #44787
  • script: Use let/else in GlobalScope::broadcast_message_event. by @MavenRain in #44797
  • script: Implement native endings conversion for Blob and File by @yezhizhen in #44803
  • script: Track the element that has the :active state across input events by @SharanRP in #43953
  • Modernize derive(DenyPublicFields) and make it's contain it's own tests by @sagudev in #44809
  • CI: Use RUSTFLAGS=-D warnings by @sagudev in #44814
  • script: Fix definition of active parser by @TimvdLippe in #44804
  • cargo: Bump MSRV to 1.88 by @sagudev in #44815
  • Update image-rs and resvg by @jdm in #43204
  • layout_api: Fix build error for Production by @yezhizhen in #44822
  • script: Separate concepts of heap buffer sources and rooted heap buffer sources by @jdm in #44464
  • script: Treat GPUAdapter as a set instead of a map. by @jdm in #44823
  • script: add error messages to ElementInternals by @kimjune01 in #44816
  • script: Use correct slotchange event type for inline event handler. by @jdm in #44688
  • webgpu: fixup GPUBuffer unmap by @sagudev in #44827
  • Remove stale temp_cx in consume_body by @SharanRP in #44829
  • fonts: Fix potential UB in is_rtl() by @jschwe in #44832
  • script: Treat HTMLAnchorElement as activatable. by @jdm in #44825
  • net: update cross_origin_resource_policy_check to follow spec by @Gae24 in #44828
  • chore: bump vello_cpu by @Gae24 in #44838
  • script: Combine operations of ECDSA and ECDH by @kkoyung in #44848
  • script: add error msgs to cssstylesheet.rs aes_common.rs by @n0blenote in #44704
  • layout: Add additional padding to scroll container's scrollable overflow by @stevennovaryo in #44263
  • canvas: Fix double-transformed clip path in vello CPU backend by @yezhizhen in #44831
  • script: Pass responseEnd to document and expose it to PerformanceMark by @shubhamg13 in #44850
  • Remove unused dependencies per -Zcargo-lints by @SimonSapin in #44808
  • script: Use &mut JSContext in MessagePort::pack_and_post_message and post_message_impl. by @MavenRain in #44806
  • script: Vendor and update mime-multipart by @jschwe in #44818
  • script: Simplify DocumentFocusHandler::focused_area by @mrobinson in #44857
  • net: drop HttpsState by @Gae24 in #44852
  • stylo: Resolve <color> values in getComputedStyle for registered custom properties by @Loirooriol in #44856
  • script: Add support for processing instructions to Sanitizer interface by @kkoyung in #44734
  • Fix and enable doctests by @SimonSapin in #44851
  • script: Give actual name to INVALID_ENTRY_NAME to PERFORMANCE_TIMING_ATTRIBUTES by @shubhamg13 in #44753
  • script: Move remaining Document-related focus code to dom/document/focus.rs by @mrobinson in #44867
  • script: Implement FileReader.readAsBinaryString; Housekeep FileReader docs by @yezhizhen in #44858
  • script: Ignore synthetic focus events in <input> and <textarea> by @mrobinson in #44870
  • script: Expose Document::performance_timing_attribute for getting timing-related values by @shubhamg13 in #44864
  • Revert "chore: bump vello_cpu (#44838)" by @Gae24 in #44875
  • script: Move obtain_storage_key logic from IDBFactory to GlobalScope by @SharanRP in #44877
  • script: Move is_custom_data_attribute function to domname.rs by @kkoyung in #44876
  • script: Pass &mut JSContext to AttributeStorage::ensure_dom by @Gae24 in #44879
  • layout: Make the FragmentTree immutable by @mrobinson in #44849
  • layout: Replace UA stylesheet usage of legacy :matches by :is by @avis137 in #44837
  • script: Simplify Script::update_style_attribute by @mrobinson in #44881
  • tests: Remove stale FileReader idlharness expectations by @Taym95 in #44885
  • constellation: Make warning about double-setting event loops more specific by @simonwuelker in #44888
  • wpt: Wrap event listener in testharness step. by @jdm in #44899
  • script: Update selection to correct node when moving preserving ranges by @TimvdLippe in #44887
  • wpt: Update every obsolete, renamed expectations by @yezhizhen in #44895
  • ci: Update test expectations fully when importing from upstream by @yezhizhen in #44900
  • script: Ensure source document origin is checked when navigating a different global to a javascript: URL. by @jdm in #43490
  • font: create caching mechanism to speed up font_list generation on OpenHarmony platform by @RichardTjokroutomo in #44158
  • fonts: Fix clippy lint on macos by @jschwe in #44910
  • layout: Respond to some review comments for #44849 by @mrobinson in #44904
  • layout: Cache inline container state in InlineFormattingContextLayout::push_glyph_store_to_unbreakable_segment by @mrobinson in #44905
  • servoshell + net: Expose --host-file option by @jschwe in #44880
  • script: Adopt RFC2397 data URL format; Use application/octet-stream for unspecified Blob type by @yezhizhen in #44897
  • script: Interpret every byte as ASCII for FileReader{Sync}.ReadAsBinaryString by @yezhizhen in #44921
  • servoshell: Fix warnings and remove unused portions of the Gradle configuration by @Gae24 in #44922
  • script: Use "application/octet-stream" for unspecified Blob type for FileReaderSync.ReadAsDataURL by @yezhizhen in #44924
  • script: Make Servo's SharedRwLock per-ScriptThread by @mrobinson in #44883
  • script: Don't traverse the DOM when finding a slot for manual slottables by @simonwuelker in #44926
  • script: Avoid temporary allocations when computing flattened assigned nodes by @simonwuelker in #44933
  • script: Port BroadcastChannel to &mut JSContext by @MavenRain in #44930
  • mach: Remove references to nonexistent busted subcommand by @simonwuelker in #44934
  • script: Prove that no GC can occur during slot assignment by @simonwuelker in #44935
  • De-duplicate winnow by @atouchet in #44941
  • script: Port DOMParser to &mut JSContext by @MavenRain in #44942
  • ohos/android: Fix various clippy issues by @jschwe in #44928
  • script: Static built-in non-replaceable elements list by @kkoyung in #44944
  • layout: Make scrollable overflow calculation incremental by @mrobinson in #44854
  • script: Encode field names and filenames correctly when encoding <form> data by @yezhizhen in #44943
  • layout: Stop cloning ClipPath for every single Fragment in the tree by @mrobinson in #44945
  • servoshell: further cleanup android project by @Gae24 in #44932
  • layout: Improve FragmentStatus when changes happen within an abspos by @Loirooriol in #44925
  • layout: Move containing block calculation to stacking context tree construction by @SimonSapin in #44911
  • layout: Add a basic test for incremental accessibility tree updates. by @alice in #44785
  • script: Use &mut JSContext in structuredclone::write by @MavenRain in #44946
  • fonts: Implement font-variant-ligatures by @simonwuelker in #44903
  • script: Initial implementation of insertParagraph command by @TimvdLippe in #44909
  • fonts: Support font-variant-numeric by @simonwuelker in #44950
  • script: Escape field names and values for default x-www-form-urlencoded <form> POST by @yezhizhen in #44953
  • script: Improve handling of DOMString in <form> escaped values by @yezhizhen in #44954
  • ci release.yml: add servo git sha when publishing to nightly repo. by @jschwe in #44955
  • script: Implement Document.parseHTML() by @kkoyung in #44952
  • script: Escape field names and values for <form> GET by @yezhizhen in #44957
  • Cargo.toml cleanup by @atouchet in #44959
  • tidy: Use shellcheck for error-severity findings in check_shell by @MavenRain in #44896
  • tests: Remove mozilla\ElementInternals-setFormValue.html by @yezhizhen in #44960
  • generic_channel: Optimize crossbeam select efficiency by @jschwe in #44961
  • ohos: Request Vsync on demand instead of every frame by @jschwe in #44927
  • devtools: Bring stepping hooks behaviour closer to Firefox by @eerii in #44951
  • generic_channel: Optimize crossbeam select in resource_thread loop by @jschwe in #44963
  • servo: Hoist Select out of inner loop by @jschwe in #44967
  • refresh_driver: Optimize timeout code by @jschwe in #44970
  • webgpu: Update wgpu to 29 by @sagudev in #44968
  • script: Fix issues with manipulating current selection by @TimvdLippe in #44973
  • tools: improve the output of untracked-allocations.py by @webbeef in #44980
  • script: Do not allocate a new timer channel for every spin of the ScriptThreadReceivers loop by @jschwe in #44972
  • css: Make animation faster, direction-aware and compute initial keyframe correctly; Eliminate Stylo static preference hashing by @yezhizhen in #44365
  • script: Implement Element.setHTML() and ShadowRoot.setHTML() by @kkoyung in #44983
  • SharedWorker: Implement constructor, port wiring, and connect event delivery by @Taym95 in #44761
  • script: Pass &mut JSContext to spawn_pipeline by @TimvdLippe in #44992
  • script: Pass JSContext to Window::reflow. by @jdm in #44993
  • script: Fix race of VisualViewport initial-scale by @yezhizhen in #44979
  • Switch some dependencies to workspace dependencies in servo_media_audio by @atouchet in #44998
  • script: Extract common parts of FileReader and FileReaderSync by @panxt8 in #44991
  • Remove servo-media Dependabot group by @atouchet in #44997
  • net: Allow internal requests to be fetched regardless of CSP by @TimvdLippe in #44974
  • script: Pass &mut JSContext to XPath DOM objects by @TimvdLippe in #45000
  • script: Start adding support for lazy serialization of AttrValue by @mrobinson in #44931
  • script: Pass &mut JSContext to structuredclone::read by @Gae24 in #45014
  • Cargo.toml cleanups and convert some dependencies to workspace dependencies by @atouchet in #45015
  • Convert more component dependencies to workspace dependencies by @atouchet in #45017
  • wpt: Fix link element tests by @TimvdLippe in #45012
  • layout: Prune stale accessibility nodes from the cache after each update. by @alice in #44801
  • script: Remove unecessary ignore_malloc_size_of on AudioNode::node_id by @niyabits in #45026
  • Implement async version for cookie APIs by @longvatrong111 in #44708
  • script: Introduce Element::get_attribute_string_value by @TimvdLippe in #45023
  • Using let/else for ReplacedContents::from_image_url by @SteveSharonSam in #45030
  • Add a DiagnosticLoggingOption to print the accessibility tree by @alice in #45029
  • fonts: implement font-variant-east-asian by @simonwuelker in #44989
  • script: Migrate more callsites to get_attribute_string_value by @TimvdLippe in #45031
  • layout: Fix border-image-outset clipping by @lumiscosity in #45039
  • layout: Only apply form in table UA style rule in HTML documents by @avis137 in #44920
  • layout: use accesskit::NodeId in accessibility_tree.rs. by @alice in #45033
  • layout: Do not clear fragment layout cache immediately when damaged by @mrobinson in #45038
  • layout: make root_node_id a member of AccessibilityTree by @alice in #45034
  • layout: Have AccessibilityUpdate represent all changes in this update. by @alice in #45035
  • shell.nix: Update nixpkgs by @freyacodes in #45051
  • script: Reorder function parameters in servoparser/mod.rs by @kkoyung in #45053
  • script: Inline some event dispatching methods by @Gae24 in #45052
  • script: pass &mut JSContext to Serializable::deserialize by @Gae24 in #45058
  • canvas: Fix vello backend compilation by @yezhizhen in #45036
  • script: complete structuredclone.rs migration to &mut JSContext by @Gae24 in #45061
  • webgpu: Update WebGPU CTS by @sagudev in #45063
  • script: Propagate js::context::JSContext through Event::fire. by @jdm in #45040
  • ci: Add vello backend compilation to Windows build by @yezhizhen in #45037
  • script: Pass &mut JSContext to Blob::new by @Gae24 in #45076
  • script: modernize dom struct proc-macro and add new tests by @jerensl in #45057
  • script: Migrate remaining usages to get_attribute_string_value by @TimvdLippe in #45060
  • script: Change type of hash field of SubtleHmacKeyAlgorithm by @kkoyung in #45075
  • script: Encode with requested encoding for <form enctype="multipart/form-data"> by @yezhizhen in #45028
  • wpt: skip the service workers test suite by @gterzian in #45080
  • script_bindings: Improve From methods and properly implement zeroize by @Narfinger in #45078
  • IndexedDB: Implement IndexedDB abort rollback for object store metadata and key generators by @Taym95 in #43950
  • Fix borrow hazard creating intersection observer entries by @SharanRP in #45001
  • ci: Reduce Windows unit tests parallel compilation processes by 2 by @yezhizhen in #45083
  • libservo: Mark webxr crate as optional dependency for all targets. by @mukilan in #45079
  • Convert more dependencies to workspace dependencies by @atouchet in #45089
  • Move a couple of packages to workspace dependencies by @atouchet in #45094
  • script_bindings: Pass &mut JSContext to dictionary constructors by @Gae24 in #45098
  • script: Replace get_attribute with with_attribute by @TimvdLippe in #45081
  • webgpu: Reduce diff from upstream webidl by @sagudev in #45097
  • ci(Windows): Only limit parallel compilation processes for Unit tests for self-hosted runner by @yezhizhen in #45100
  • Remove all instances of rustfmt::skip by @mrobinson in #45096
  • devcontainer: Install some common cli tools by @jschwe in #44966
  • script: Add ontransitionstart EventHandler by @lumiscosity in #45106
  • script: Pass &mut JSContext to XPath evaluation by @TimvdLippe in #45009
  • Convert remaining servoshell dependencies to workspace dependencies by @atouchet in #45108
  • script_bindings: switch to FromJSValConvertible::safe_from_jsval in codegen by @Gae24 in #45110
  • script: Add missing early return in shared-declarative-refresh-steps by @jschwe in #45113
  • webgpu: Reorder/add/remove limits to match the spec by @sagudev in #45114
  • devtools: Implement blackboxing on breakpoints by @freyacodes in #44359
  • script: Encode <form enctype="text/plain"> correctly by @yezhizhen in #45111
  • Add tidy check for disallowed co-authors by @SimonSapin in #44723
  • webgpu: Add GPUMipmapFilterMode by @sagudev in #45132
  • Implement Window.screenLeft and Window.screenTop by @TG199 in #45128
  • script: Block meta refresh considering sandbox flag by @jschwe in #45116
  • devtools: Test that blackboxing also affects stepping by @freyacodes in #45134
  • devtools: Avoid recursive previews when getting ownPropertyLength by @eerii in #45054
  • fonts: Implement font-feature-settings by @simonwuelker in #45059
  • webgpu: Accept GPUTexture and GPUBuffer for GPUBindingResource by @sagudev in #45140
  • shell.nix: Rename xorg packages to fix warnings by @freyacodes in #45135
  • devtools: Fix deadlock-like silent failure in DevTools by @atbrakhi in #45050
  • script: More implementations of safe_from_jsval by @Gae24 in #45149
  • ci: Update various actions by @jschwe in #45145
  • script: Update JsonWebKey format of ML-KEM keys by @kkoyung in #45153
  • fonts: Implement font-variant-position by @simonwuelker in #45142
  • Make Blob.stream() supports readable byte streams by @Taym95 in #45133
  • script_bindings: Implement FromJSValConvertible::safe_from_jsval for string types by @Gae24 in #45117
  • webgpu: Allow GPUTexture in all places where GPUTextureView is allowed by @sagudev in #45154
  • script: refactor WebGL context creation by @SharanRP in #45095
  • devtools: Add diagnostics when actor downcasting panics by @freyacodes in #45155
  • script: Support event handler content attributes on SVG elements by @officialasishkumar in #45118
  • Update WebIDL.py by @sagudev in #45104
  • script: Serialization of CryptoKey interface by @kkoyung in #45163
  • script: Limit write lock guard in CSSKeyframesRuleMethods::AppendRule by @mrobinson in #45173
  • font: Properly handle when shaping produces no glyphs by @mrobinson in #45176
  • script: Split NodeIterator methods into separate file by @Narfinger in #45178
  • script_bindings: Implement safe_from_jsval for Record by @Gae24 in #45184
  • script: Use encoding_parse_a_url in Location assign by @TG199 in #44298
  • Script: Add descriptive error messages to WakeLock by @TG199 in #45186
  • script: Remove redundant NavigatorStorageUtils by @shubhamg13 in #45194
  • base: Make PrintTree::new accept impl Display by @mrobinson in #45195
  • script: Eliminate DOMString::to_string calls were alternatives are available by @avis137 in #45065
  • media: support MP4 with moov atom at the end of the file by @calvaris in #45084
  • script: Update HTML parsing methods by @kkoyung in #45196
  • script: Add basic implementation of ServiceWorker lifecycle and messaging by @gterzian in #45082
  • webgpu: Update webidl of some RenderPipeline structs by @sagudev in #45200
  • script: Switch the remaining usages of from_jsval to safe_from_jsval by @Gae24 in #45201
  • script: Migrating script/dom/console.rs to use &mut JSContext by @SteveSharonSam in #45181
  • paint: Instrument present by @jschwe in #45206
  • script: Move ShadowIncluding to new file by @Narfinger in #45180
  • canvas: Add fast-path in parse_color by @jschwe in #45212
  • Document fields on AccessibilityNode and AccessibilityTree. by @alice in #45207
  • paint: Avoid copying image data in single-process mode by @jschwe in #45211
  • Enable webgl_testing_context_creation_error for testing by @AbdAlRahmanGad in #45213
  • paint: Use GenericSharedMemory::into_arc_vec for SerializableImageData -> ImageData by @yezhizhen in #45223
  • layout: Mark layout as not needing containing block calculation when building stacking context tree by @mrobinson in #45210
  • devtools: Fix inspector not loading when navigating on the same page by @eerii in #45056
  • layout: Do not store cached shaping results in non-text nodes by @mrobinson in #45227
  • script: Pass &mut JSContext to CharacterData::content_changed by @TimvdLippe in #45225
  • script: Remove temp_cx in Drop of LoadBlocker by @TimvdLippe in #45087
  • script: Using String::from instead of to_string in script/dom/console.rs by @SteveSharonSam in #45231
  • layout: Improve debugging output of BaseFragment by @mrobinson in #45197
  • script: Move Validateable to JSContext and related by @Narfinger in #45233
  • stylo: Incorporate Respond to live preference updates in NonCustomPropertyId::enabled_for_all_content by @mrobinson in #45226
  • pixels: Do add RGB8 images to the Painter animating image cache by @Narfinger in #45209
  • webgpu: Optimize allocation in WriteBuffer by @jschwe in #45229
  • script: Directly modify IFrameCollection on tree changes by @mrobinson in #45236
  • script_bindings: Move Wrap from generated to generic code by @Narfinger in #45010
  • generic_channel: Avoid unnecessary GenericSharedMemory allocations by @jschwe in #45224
  • script: Pass &mut JSContext to CSSStyleDeclaration::new by @TimvdLippe in #45244
  • script: Remove final usages of CanGc in contenteditable/ by @TimvdLippe in #45245
  • net/script: Reuse allocation in create_request_body_with_content by @jschwe in #45235
  • script: Remove CanGc from some more directories by @TimvdLippe in #45247
  • script: Improve Safety in DataBlock::view by @jschwe in #45232
  • ci: Fix windows concurrency limit by @jschwe in #45249
  • Use Stylo with mask-* properties enabled by @nicoburns in #45136
  • script: Implement "getPublicKey" operations of ML-KEM and ML-DSA by @kkoyung in #45252
  • Upgrade to vello 0.9, vello_cpu 0.0.9, skrifa 0.42 by @nicoburns in #45137
  • devtools: Pass correct walker name to find_child in get_applied by @eerii in #45250
  • doc: Update WebXR link to servo book by @utzcoz in #45263
  • script: Pass &mut JSContext to Console::internal_warn by @kunalmohan in #45259
  • devtools: Only add debuggee if devtools enabled by @jschwe in #45265
  • release: Bump version to 0.3.0 by @jschwe in #45257
  • release: Use stylo 0.18 for 0.3 release by @jschwe in #45384

New Contributors

Full Changelog: v0.2.0...v0.3.0

Don't miss a new servo release

NewReleases is sending notifications on new releases.