You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _posts/2025-11-02-this-month-in-servo.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,6 +29,21 @@ Servo now supports `new KeyboardEvent({keyCode})` and `({charCode})` (@atbrakhi,
29
29
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).
30
30
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!
31
31
32
+
You can now **take screenshots** of webviews with <code>[WebView](https://doc.servo.org/servo/struct.WebView.html)::[take_screenshot](https://doc.servo.org/servo/struct.WebView.html#method.take_screenshot)</code> (@mrobinson, @delan, #39583).
33
+
34
+
Historically Servo has struggled with situations causing **100% CPU usage** or **unnecessary work on every tick** of the event loop, whenever a page is considered “active” or “animating” ([#25305](https://github.com/servo/servo/issues/25305), [#3406](https://github.com/servo/servo/issues/3406)).
35
+
We had since throttled animations (@mrobinson, #37169) and reflows (@mrobinson, @Loirooriol, #38431), but only to fixed rates of 120 Hz and 60 Hz respectively.
36
+
37
+
But starting this month, you can run Servo with **vsync**, thanks to the **<code>[RefreshDriver](https://doc.servo.org/servo/trait.RefreshDriver.html)</code> trait** (@coding-joedow, @mrobinson, #39072), which allows embedders to tell Servo *when* to start rendering each frame.
38
+
The [default driver](https://doc.servo.org/compositing/refresh_driver/struct.TimerRefreshDriver.html) continues to run at 120 Hz, but you can define and install your own with <code>[ServoBuilder](https://doc.servo.org/servo/struct.ServoBuilder.html)::[refresh_driver](https://doc.servo.org/servo/struct.ServoBuilder.html#method.refresh_driver)</code>.
39
+
40
+
### Breaking changes
41
+
42
+
Servo’s embedding API has had a few **breaking changes**:
43
+
44
+
- <code>[Opts](https://doc.servo.org/servo_config/opts/struct.Opts.html)::wait_for_stable_image</code> was **removed**; to wait for a stable image, call <code>[WebView](https://doc.servo.org/servo/struct.WebView.html)::[**take_screenshot**](https://doc.servo.org/servo/struct.WebView.html#method.take_screenshot)</code> instead (@mrobinson, @delan, #39583).
45
+
- <code>[MouseButtonAction](https://doc.servo.org/servo/enum.MouseButtonAction.html)::Click</code> was **removed**; use <code>[**Down**](https://doc.servo.org/servo/enum.MouseButtonAction.html#variant.Down)</code> followed by <code>[**Up**](https://doc.servo.org/servo/enum.MouseButtonAction.html#variant.Up)</code>. [Click events](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event) need to be *derived* from mouse button downs and ups to ensure that they are fired correctly (@mrobinson, #39705).
46
+
32
47
We’ve improved **page zoom** in our webview API (@atbrakhi, @mrobinson, @shubhamg13, #39738), which includes some **breaking changes**:
33
48
34
49
- <code>[WebView](https://doc.servo.org/servo/struct.WebView.html)::set_zoom</code> was renamed to <code>[set_page_zoom](https://doc.servo.org/servo/struct.WebView.html#method.set_page_zoom)</code>, and it now takes an **absolute** zoom value. This makes it idempotent, but it means if you want relative zoom, you’ll have to multiply the zoom values yourself.
Copy file name to clipboardExpand all lines: outline.txt
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -79,11 +79,11 @@
79
79
- https://github.com/servo/servo/pull/40260 (@jdm, #40260) script: Do not store an initial content size in new ResizeObservers. (#40260)
80
80
dom
81
81
- embedding
82
-
- https://github.com/servo/servo/pull/39583 (@mrobinson, @delan, #39583) libservo: Add a `WebView::take_screenshot()` API and use it for reftests (#39583)
82
+
- DONE https://github.com/servo/servo/pull/39583 (@mrobinson, @delan, #39583) libservo: Add a `WebView::take_screenshot()` API and use it for reftests (#39583)
83
83
embedding
84
-
- https://github.com/servo/servo/pull/39705 (@mrobinson, #39705) libservo: Remove `MouseButtonAction::Click` from the API (#39705)
84
+
- DONE https://github.com/servo/servo/pull/39705 (@mrobinson, #39705) libservo: Remove `MouseButtonAction::Click` from the API (#39705)
85
85
embedding
86
-
- https://github.com/servo/servo/pull/39072 (@coding-joedow, @mrobinson, #39072) libservo: Allow embedders to drive frame updates via `RefreshDriver` trait (#39072)
86
+
- DONE https://github.com/servo/servo/pull/39072 (@coding-joedow, @mrobinson, #39072) libservo: Allow embedders to drive frame updates via `RefreshDriver` trait (#39072)
87
87
embedding
88
88
- https://github.com/servo/servo/pull/40014 (@mrobinson, #40014) libservo: Merge input method activation into the EmbedderControl API (#40014)
Copy file name to clipboardExpand all lines: tools/commits.txt
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -119,7 +119,7 @@
119
119
# Testing: There's only limited testing for this change due to https://github.com/servo/servo/issues/39551. But I think
120
120
# that's okay, since the change is fairly trivial. Part of https://github.com/servo/servo/issues/34527
121
121
+https://github.com/servo/servo/pull/39583 (@mrobinson, @delan, #39583) libservo: Add a `WebView::take_screenshot()` API and use it for reftests (#39583)
122
-
embedding
122
+
;embedding
123
123
# This change adds a new API to the `WebView` for capturing screenshots. This makes it possible to:
124
124
# - use the reftest waiting infrastructure via the API
125
125
# easily.
@@ -876,7 +876,7 @@
876
876
# Follow more closely spec, adding some missing steps.
877
877
# Testing: should be covered by existing wpt tests
878
878
+https://github.com/servo/servo/pull/39705 (@mrobinson, #39705) libservo: Remove `MouseButtonAction::Click` from the API (#39705)
879
-
embedding
879
+
;embedding
880
880
# The embedder should never be responsible for triggering click events, so this change removes that possibility from the
881
881
# API. In addition, triggering of click events is simplified by moving the logic to the `DocumentEventHandler`. This has
882
882
# the benefit of making behavior consistent between in-process and out-of-process ``s. Now click events are never
0 commit comments