Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
aef3541
Initial commit list.
jdm Nov 3, 2025
f672d6b
Triage dependabot commits.
jdm Nov 3, 2025
76cfd45
Triage a bunch of commits.
jdm Nov 3, 2025
5a21184
Fix handles
delan Nov 3, 2025
68d12a6
Outline so far
delan Nov 3, 2025
43af17c
Triage 15 commits
delan Nov 3, 2025
84e2d58
Triage 19 commits
delan Nov 3, 2025
85422f7
Write about a few commits
delan Nov 4, 2025
815aa00
Write about API changes
delan Nov 4, 2025
7a662be
Triage more commits.
jdm Nov 5, 2025
a55b4fa
Update outline
delan Nov 6, 2025
a3f2892
Write about AbortController, AbortSignal, and XPath
delan Nov 6, 2025
c63d8f5
Fix mistake on fetchLater
delan Nov 6, 2025
6207596
Write about more API changes
delan Nov 6, 2025
69a7e9c
Write about even more API changes
delan Nov 6, 2025
e23ad1d
Triage 18 more commits
delan Nov 10, 2025
9079ef4
Write about a bunch of commits
delan Nov 10, 2025
aa28d84
Write about crashes
delan Nov 10, 2025
5c3bfc8
Write about layout
delan Nov 10, 2025
a44d0bf
Prune outline
delan Nov 12, 2025
9d56e7c
Write about donations
delan Nov 12, 2025
974dc10
Write about Android and input changes
delan Nov 12, 2025
39eddc9
Write about a perf change
delan Nov 13, 2025
5df3e3b
Add some figures
delan Nov 13, 2025
553f94d
Add more figures
delan Nov 14, 2025
e47ee80
Fix missing margin
delan Nov 14, 2025
8dedbb2
Fix page content widening
delan Nov 14, 2025
e793245
Triage a few more commits
delan Nov 14, 2025
4914d13
Write about CI improvements
delan Nov 14, 2025
c568c29
Title, summary, and date
delan Nov 14, 2025
b0e3110
Remove notes
delan Nov 14, 2025
0d5abe8
Fix missing word
delan Nov 14, 2025
f239104
Linkify everything
delan Nov 14, 2025
6fc8451
Use “x86-64” instead of “amd64”
delan Nov 14, 2025
3304144
Pull request builds include lint jobs
delan Nov 14, 2025
b78c874
Rename slug
delan Nov 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions _posts/2025-11-02-this-month-in-servo.md
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`

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>
160 changes: 160 additions & 0 deletions outline.txt
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)
Loading