generated from cncf/hugo-netlify-starter
-
Notifications
You must be signed in to change notification settings - Fork 23
This Month in Servo: October 2025 #264
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Changes from 8 commits
Commits
Show all changes
36 commits
Select commit
Hold shift + click to select a range
aef3541
Initial commit list.
jdm f672d6b
Triage dependabot commits.
jdm 76cfd45
Triage a bunch of commits.
jdm 5a21184
Fix handles
delan 68d12a6
Outline so far
delan 43af17c
Triage 15 commits
delan 84e2d58
Triage 19 commits
delan 85422f7
Write about a few commits
delan 815aa00
Write about API changes
delan 7a662be
Triage more commits.
jdm a55b4fa
Update outline
delan a3f2892
Write about AbortController, AbortSignal, and XPath
delan c63d8f5
Fix mistake on fetchLater
delan 6207596
Write about more API changes
delan 69a7e9c
Write about even more API changes
delan e23ad1d
Triage 18 more commits
delan 9079ef4
Write about a bunch of commits
delan aa28d84
Write about crashes
delan 5c3bfc8
Write about layout
delan a44d0bf
Prune outline
delan 9d56e7c
Write about donations
delan 974dc10
Write about Android and input changes
delan 39eddc9
Write about a perf change
delan 5df3e3b
Add some figures
delan 553f94d
Add more figures
delan e47ee80
Fix missing margin
delan 8dedbb2
Fix page content widening
delan e793245
Triage a few more commits
delan 4914d13
Write about CI improvements
delan c568c29
Title, summary, and date
delan b0e3110
Remove notes
delan 0d5abe8
Fix missing word
delan f239104
Linkify everything
delan 6fc8451
Use “x86-64” instead of “amd64”
delan 3304144
Pull request builds include lint jobs
delan b78c874
Rename slug
delan File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,57 @@ | ||
| --- | ||
| layout: post | ||
| tags: blog | ||
| title: "This month in Servo: ??????????" | ||
| date: 2025-11-02 | ||
| summary: Who even knows? | ||
| categories: | ||
| --- | ||
|
|
||
| Servo now supports several new web platform features: | ||
|
|
||
| - **CompressionStream** and **DecompressionStream** (@kkoyung, #39658) | ||
| - **fetchLater** (@TimvdLippe, #39547), with `dom_abort_controller_enabled` | ||
delan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| Our HTML-compatible **XPath** implementation now lives in its [own](https://github.com/servo/servo/tree/cd4c032908211fa2c26df550f6766080d1d28969/components/xpath) [crate](https://doc.servo.org/xpath/), and it’s no longer limited to the Servo DOM (@simonwuelker, #39546). | ||
| We don’t have any specific plans to release this as a standalone library just yet, but please let us know if you have a use case that would benefit from this! | ||
|
|
||
| Servo now supports `new KeyboardEvent({keyCode})` and `({charCode})` (@atbrakhi, #39590), which is enough to get [**Speedometer 3.0**](https://browserbench.org/Speedometer3.0/) working on macOS. | ||
|
|
||
| ## Donations | ||
|
|
||
| Thanks again for your generous support! | ||
| We are now receiving **??? USD/month** (+?.?% over September) in recurring donations. | ||
|
|
||
| This helps us cover the cost of our **[speedy](https://ci0.servo.org) [CI](https://ci1.servo.org) [and](https://ci2.servo.org) [benchmarking](https://ci3.servo.org) [servers](https://ci4.servo.org)**, one of our latest **[Outreachy interns](https://www.outreachy.org/alums/2025-06/#:~:text=Servo)**, and funding **[maintainer work]({{ '/blog/2025/09/17/your-donations-at-work-funding-jdm/' | url }})** that helps more people contribute to Servo. | ||
| Keep an eye out for [further CI improvements](https://github.com/servo/servo/issues/38141) in the coming months, including [faster pull request checks](https://github.com/servo/servo/pull/39900) and [ten-minute WPT builds](https://github.com/servo/ci-runners/issues/21). | ||
|
|
||
| Servo is also on [thanks.dev](https://thanks.dev), and already **?** (±? from September) that depend on Servo are sponsoring us there. | ||
| If you use Servo libraries like [url](https://crates.io/crates/url/reverse_dependencies), [html5ever](https://crates.io/crates/html5ever/reverse_dependencies), [selectors](https://crates.io/crates/selectors/reverse_dependencies), or [cssparser](https://crates.io/crates/cssparser/reverse_dependencies), signing up for [thanks.dev](https://thanks.dev) could be a good way for you (or your employer) to give back to the community. | ||
|
|
||
| <figure class="_fig" style="width: 100%; margin: 1em 0;"><div class="_flex" style="height: calc(1lh + 3em); flex-flow: column nowrap; text-align: left;"> | ||
| <div style="position: relative; text-align: right;"> | ||
| <div style="position: absolute; margin-left: calc(100% * 5654 / 10000); padding-left: 0.5em;"><strong>5654</strong> USD/month</div> | ||
| <div style="position: absolute; margin-left: calc(100% * 5654 / 10000); height: calc(1lh + 1.5em); border-left: 1px solid;"></div> | ||
| <div style="position: absolute; margin-left: calc(100% - 0.5em); height: calc(1lh + 1.5em); border-left: 1px solid;"></div> | ||
| <div style="padding-right: 1em;"><strong>10000</strong><!-- USD/month --></div> | ||
| </div> | ||
| <progress value="5654" max="10000" style="transform: scale(3); transform-origin: top left; width: calc(100% / 3);"></progress> | ||
| </div></figure> | ||
|
|
||
| Use of donations is decided transparently via the Technical Steering Committee’s public **[funding request process](https://github.com/servo/project/blob/main/FUNDING_REQUEST.md)**, and active proposals are tracked in [servo/project#187](https://github.com/servo/project/issues/187). | ||
| For more details, head to our [Sponsorship page]({{ '/sponsorship/' | url }}). | ||
|
|
||
| <style> | ||
| ._correction { | ||
| max-width: 33em; | ||
| margin: 1em auto; | ||
| border-bottom: 1px solid; | ||
| padding-bottom: 1em; | ||
| } | ||
| ._note { | ||
| margin: 1em 1em; | ||
| border-left: 1px solid; | ||
| padding-left: 1em; | ||
| opacity: 0.75; | ||
| } | ||
| </style> | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,160 @@ | ||
| - api | ||
| - https://github.com/servo/servo/pull/39738 (@atbrakhi, @mrobinson, @shubhamg13, #39738) libservo: Modify the `WebView::set_zoom` to take final zoom value (#39738) | ||
| api; WebView::set_zoom() is now set_page_zoom(); it’s now absolute not relative; reset_zoom() was removed; page_zoom() was added | ||
| - https://github.com/servo/servo/pull/39720 (@mrobinson, #39720) libservo: Unify notifications to the embedder that input events are handled (#39720) | ||
| api; WebViewDelegate::notify_keyboard_event() is now notify_input_event_handled(); now covers all input events; now includes information about whether the event was consumed and/or had preventDefault | ||
| - crash | ||
| - https://github.com/servo/servo/pull/39771 (@mrobinson, #39771) servoshell: Reimplement "onClick" action on Android (#39771) | ||
| crash; fixed crash when clicking on web content on android | ||
| - crate | ||
| - DONE https://github.com/servo/servo/pull/39546 (@simonwuelker, #39546) Move XPath implementation into its own crate (#39546) | ||
| crate; xpath implementation with a bring-your-own-dom API | ||
| - dev | ||
| - https://github.com/servo/servo/pull/39625 (@delan, #39625) NixOS: bump nixpkgs and fix etc/devtools_parser.py (#39625) | ||
| dev; on nixos and nix, upgrade from LLVM 14 to 20, and fix some build issues | ||
| - https://github.com/servo/servo/pull/39789 (@jschwe, @sagudev, #39789) Add unittest code coverage to CI (#39789) | ||
| dev; unit tests now have code coverage in CI | ||
| - https://github.com/servo/servo/pull/39272 (@delan, #39272) ci: Run bencher jobs on self-hosted runners (#39272) | ||
| dev; CI jobs for runtime benchmarks now run on self-hosted runners | ||
| - dom | ||
| - https://github.com/servo/servo/pull/39506 (@tharkum, #39506) html: Allow legacy referrer policies only for <meta> referrer (#39506) | ||
| dom | ||
| - https://github.com/servo/servo/pull/39544 (@RichardTjokroutomo, @jdm, @yezhizhen, #39544) script: Add line number argument to module script compilation functions (#39544) | ||
| dom | ||
| - https://github.com/servo/servo/pull/39564 (@kkoyung, #39564) script: Return cached object from `CryptoKey.usages` getter (#39564) | ||
| dom | ||
| - DONE https://github.com/servo/servo/pull/39590 (@atbrakhi, #39590) script: Support `keyCode`, `charCode` in KeyboardEvent constructor (#39590) | ||
| dom | ||
| - DONE https://github.com/servo/servo/pull/39547 (@TimvdLippe, #39547) Implement `fetchLater` (#39547) | ||
| dom; pref-gated | ||
| - https://github.com/servo/servo/pull/39607 (@mrobinson, #39607) script: Do not show simple dialogs for Windows that cannot show them and normalize newlines (#39607) | ||
| dom | ||
| - https://github.com/servo/servo/pull/39610 (@mrobinson, @Loirooriol, #39610) script: Use CSP sandboxing flags for `<iframe>` and pass them to child `Document`s (#39610) | ||
| dom | ||
| - https://github.com/servo/servo/pull/39570 (@Gae24, #39570) script: further restrict accepted worker script (#39570) | ||
| dom | ||
| - https://github.com/servo/servo/pull/39686 (@mrobinson, @Loirooriol, #39686) script: Allow loading of `<iframe srcdoc>` with a `sandbox` attribute (#39686) | ||
| dom | ||
| - https://github.com/servo/servo/pull/39661 (@WaterWhisperer, #39661) htmlbuttonelement: check if document is fully active in activation behavior (#39661) | ||
| dom | ||
| - https://github.com/servo/servo/pull/39635 (@tharkum, #39635) html: Do not update the image data inside legacy <image> constructor (#39635) | ||
| dom | ||
| - https://github.com/servo/servo/pull/39606 (@tharkum, #39606) html: Add missing 'width' and 'height' reflected IDL dimension attributes (#39606) | ||
| dom | ||
| - https://github.com/servo/servo/pull/39717 (@tharkum, #39717) html: Support selecting <media> element source from children (#39717) | ||
| dom | ||
| - https://github.com/servo/servo/pull/39749 (@simonwuelker, #39749) xpath: Let the parents of attribute nodes be their owner elements (#39749) | ||
| dom; implement `@attr/parent` | ||
| - DONE https://github.com/servo/servo/pull/39658 (@kkoyung, #39658) script: Implement Compression API (#39658) | ||
| dom | ||
| - embedding | ||
| - https://github.com/servo/servo/pull/39583 (@mrobinson, @delan, #39583) libservo: Add a `WebView::take_screenshot()` API and use it for reftests (#39583) | ||
| embedding | ||
| - https://github.com/servo/servo/pull/39705 (@mrobinson, #39705) libservo: Remove `MouseButtonAction::Click` from the API (#39705) | ||
| embedding | ||
| - input | ||
| - https://github.com/servo/servo/pull/39776 (@mrobinson, #39776) webdriver: Send events to the embedder as `InputEvent` with a response channel (#39776) | ||
| input; similar change, but in webdriver, which is an internal part of servoshell | ||
| - https://github.com/servo/servo/pull/39810 (@mrobinson, #39810) libservo: Notify the embedder when an input event can't be sent to a Pipeline (#39810) | ||
| input; more reliable notification of input events in some edge cases | ||
| - layout | ||
| - https://github.com/servo/servo/pull/36322 (@Loirooriol, #36322) layout: Let min/max constraints avoid collapsing bottom margins (#36322) | ||
| layout | ||
| - https://github.com/servo/servo/pull/39571 (@Loirooriol, #39571) layout: Avoid negative corner radii values for border-radius (#39571) | ||
| layout | ||
| - https://github.com/servo/servo/pull/39519 (@minghuaw, #39519) fonts: Initial draft of synthetic bold face for FreeType (#39519) | ||
| layout | ||
| - https://github.com/servo/servo/pull/39591 (@mrobinson, @Loirooriol, #39591) layout: Clone static position rectangles when caching in `IndependentFormattingContext` (#39591) | ||
| layout; incremental | ||
| - https://github.com/servo/servo/pull/39681 (@minghuaw, @mrobinson, #39681) fonts: Use OS/2 table to determine if font face is already bold when synthesizing bold face for FreeType platform (#39681) | ||
| layout | ||
| - https://github.com/servo/servo/pull/39633 (@minghuaw, #39633) fonts: Add synthetic bold face support for Windows (#39633) | ||
| layout | ||
| - https://github.com/servo/servo/pull/39691 (@minghuaw, #39691) fonts: Add synthetic bold face support for macos (#39691) | ||
| layout | ||
| - https://github.com/servo/servo/pull/39713 (@minghuaw, #39713) fonts: Do not apply synthetic bold if font is already bold for webfont on FreeType platform (#39713) | ||
| layout | ||
| - https://github.com/servo/servo/pull/39608 (@arayaryoma, #39608) fonts: Do not fall back to non-Japanese fonts for Han in Japanese language documents (#39608) | ||
| layout; better automatic font selection for japanese text on macOS and unix | ||
| - https://github.com/servo/servo/pull/39803 (@yezhizhen, #39803) fonts: Fix compilation warning due to added fallback mechanism (#39803) | ||
| layout; font fallback for japanese text | ||
| - perf | ||
| - https://github.com/servo/servo/pull/38991 (@mrobinson, @mukilan, #38991) script: Skip running layout when only updating images or canvas (#38991) | ||
| perf | ||
| - https://github.com/servo/servo/pull/39629 (@jdm, #39629) net: Share SVG font database between all image caches in the same process (#39629) | ||
| perf | ||
| - https://github.com/servo/servo/pull/39684 (@mrobinson, @delan, #39684) compositor: Fix a performance regression from #39583 (#39684) | ||
| perf | ||
| - https://github.com/servo/servo/pull/39709 (@mrobinson, @delan, #39709) libservo: Make `FormControl` responses completely asynchronous (#39709) | ||
| perf | ||
| - https://github.com/servo/servo/pull/39653 (@arihant2math, #39653) storage: Port webstorage to sqlite3 (#39653) | ||
| perf | ||
| - https://github.com/servo/servo/pull/39509 (@Narfinger, #39509) Script: Lazily transform the DOMString into Rust String instead of immediately. (#39509) | ||
| perf | ||
| - https://github.com/servo/servo/pull/39370 (@mukilan, #39370) script: optimize `Element::create` for uncustomized built-in elements (#39370) | ||
| perf | ||
| - https://github.com/servo/servo/pull/38996 (@mrobinson, @mukilan, #38996) script: Do not root nodes with animating images (#38996) | ||
| perf | ||
| - https://github.com/servo/servo/pull/39774 (@simonwuelker, #39774) xpath: Avoid allocating hashmap when comparing NodeSet and String (#39774) | ||
| perf; faster comparison of node-sets with strings | ||
| - https://github.com/servo/servo/pull/39800 (@simonwuelker, #39800) XPath: Flatten the AST to make it more flexible (#39800) | ||
| perf; preparation for optimising xpath queries | ||
| - https://github.com/servo/servo/pull/39845 (@simonwuelker, #39845) script: Remove RefCell around document.animations (#39845) | ||
| perf; remove indirection over CSS animations | ||
| - servoshell | ||
| - https://github.com/servo/servo/pull/39501 (@mrobinson, #39501) servoshell: Do not override HiDPI ratio when taking screenshots (#39501) | ||
| servoshell; screenshots use current DPI of system | ||
| - https://github.com/servo/servo/pull/39314 (@Narfinger, @mukilan, #39314) servoshell: Improve CLI help formatting (#39314) | ||
| servoshell; much more readable --help output | ||
| - testing | ||
| - https://github.com/servo/servo/pull/39387 (@jschwe, #39387) Add code-coverage option for `./mach test-unit` using llvm-cov (#39387) | ||
| testing | ||
| - upgrade | ||
| - https://github.com/servo/servo/pull/39612 (@Loirooriol, #39612) Upgrade Stylo to 2025-10-01 (#39612) | ||
| upgrade | ||
| - https://github.com/servo/servo/pull/39687 (@mrobinson, #39687) deps: Upgrade to WebRender 0.68 (#39687) | ||
| upgrade | ||
| - webcrypto | ||
| - https://github.com/servo/servo/pull/39477 (@kkoyung, #39477) script: Migrate `digest` operation to use new normalization (#39477) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39646 (@kkoyung, #39646) script: Migrate `sign`/`verify` operation to use new normalization (#39646) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39733 (@kkoyung, #39733) script: Migrate `generateKey` operation to use new normalization (#39733) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39530 (@kkoyung, #39530) script: Migrate `encrypt`/`decrypt` operation to use new normalization (#39530) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39760 (@kkoyung, #39760) script: Migrate `importKey` operation to use new normalization (#39760) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39780 (@kkoyung, #39780) script: Migrate `wrapKey`/`unwrapKey` operation to use new normalization (#39780) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39814 (@kkoyung, #39814) script: Change type of [[algorithm]] internal slot of CryptoKey (#39814) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39805 (@kkoyung, #39805) script: Migrate `deriveBits`/`get key length` operation to use new normalization (#39805) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39829 (@kkoyung, #39829) script: Allow zero length in deriveBits operation of HKDF and PBKDF2 (#39829) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39827 (@kkoyung, #39827) script: Register "get key length" operation for AES-KW (#39827) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39863 (@kkoyung, #39863) script: Access internal slot of CryptoKey from HMAC Operations (#39863) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39806 (@arihant2math, @kkoyung, #39806) webcrypto: Add JWK export for HMAC keys (#39806) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39894 (@kkoyung, #39894) script: Simplify dictionary conversion in `SubtleCrypto` (#39894) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39918 (@kkoyung, #39918) script: Correct block size in bits of SHA algorithms (#39918) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/39369 (@kkoyung, #39369) script: Add Ed25519 support to SubtleCrypto (#39369) | ||
| webcrypto | ||
| - https://github.com/servo/servo/pull/40253 (@kkoyung, #40253) script: Implement import key operation for ECDH (#40253) | ||
| webcrypto | ||
| - webdriver | ||
| - https://github.com/servo/servo/pull/39682 (@mrobinson, @delan, @yezhizhen, #39682) webdriver: Apply script timeout to related IPC messaging as well (#39682) | ||
| webdriver | ||
| - https://github.com/servo/servo/pull/39620 (@yezhizhen, @mrobinson, #39620) webdriver: Implement implicit wait for "Element retrieval" (#39620) | ||
| webdriver | ||
| - https://github.com/servo/servo/pull/39647 (@mrobinson, #39647) script: Combine `WebDriverJSError` with `JavaScriptEvaluationError` and add the stack (#39647) | ||
| webdriver; script execution errors now include error message, location, and stack trace | ||
| - https://github.com/servo/servo/pull/39783 (@yezhizhen, #39783) webdriver: Improve argument extraction of (async) script execution (#39783) | ||
| webdriver; fixed bug preventing some older(?) webdriver libraries from passing web elements to Execute Script | ||
| - https://github.com/servo/servo/pull/39804 (@yezhizhen, #39804) webdriver: Fix JS serialization for object with special key (#39804) | ||
| webdriver; fixed a bug causing errors when passing [web elements](https://w3c.github.io/webdriver/#dfn-web-elements) (and other JS objects with unusual keys) to [Execute Script](https://w3c.github.io/webdriver/#execute-script) |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.