Skip to content

Commit 0c99c89

Browse files
committed
Write about embedding
1 parent bb69e90 commit 0c99c89

File tree

1 file changed

+65
-43
lines changed

1 file changed

+65
-43
lines changed

_posts/2025-03-07-this-month-in-servo.md

Lines changed: 65 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -76,82 +76,82 @@ categories:
7676
element
7777
- `https://github.com/servo/servo/pull/35531 (@simonwuelker, #35531) Implement the <progress> element (#35531)
7878
element
79-
- embedding
80-
- https://github.com/servo/servo/pull/35229 (@mrobinson, #35229) Finish the integration of `webxr` into the Cargo workspace (#35229)
79+
- `embedding
80+
- `https://github.com/servo/servo/pull/35229 (@mrobinson, #35229) Finish the integration of `webxr` into the Cargo workspace (#35229)
8181
embedding; embedders no longer need to know about webxr types
82-
- https://github.com/servo/servo/pull/35256 (@jdm, #35256) libservo: Make background hang monitor integration optional. (#35256)
82+
- `https://github.com/servo/servo/pull/35256 (@jdm, #35256) libservo: Make background hang monitor integration optional. (#35256)
8383
embedding
84-
- https://github.com/servo/servo/pull/35253 (@[email protected], #35253) chore(servo): simplify servo example (#35253)
84+
- `https://github.com/servo/servo/pull/35253 (@[email protected], #35253) chore(servo): simplify servo example (#35253)
8585
embedding
86-
- https://github.com/servo/servo/pull/35263 (@dklassic, #35263) chore: Rename `CompositeTarget` enum (#35263)
86+
- -https://github.com/servo/servo/pull/35263 (@dklassic, #35263) chore: Rename `CompositeTarget` enum (#35263)
8787
embedding
88-
- https://github.com/servo/servo/pull/35260 (@mrobinson, #35260) libservo: Combine `LoadStart, `HeadParsed`, and `LoadComplete` messages (#35260)
88+
- `https://github.com/servo/servo/pull/35260 (@mrobinson, #35260) libservo: Combine `LoadStart, `HeadParsed`, and `LoadComplete` messages (#35260)
8989
embedding
90-
- https://github.com/servo/servo/pull/35283 (@mrobinson, #35283) libservo: Remove `Servo::repaint_synchronously` (#35283)
90+
- `https://github.com/servo/servo/pull/35283 (@mrobinson, #35283) libservo: Remove `Servo::repaint_synchronously` (#35283)
9191
embedding
92-
- https://github.com/servo/servo/pull/35277 (@mrobinson, #35277) libservo: Remove `EmbedderEvent::WindowResize` (#35277)
92+
- `https://github.com/servo/servo/pull/35277 (@mrobinson, #35277) libservo: Remove `EmbedderEvent::WindowResize` (#35277)
9393
embedding
94-
- https://github.com/servo/servo/pull/35251 (@wusyong, #35251) Simplify `RenderingContext` trait methods (#35251)
94+
- `https://github.com/servo/servo/pull/35251 (@wusyong, #35251) Simplify `RenderingContext` trait methods (#35251)
9595
embedding
96-
- https://github.com/servo/servo/pull/35196 (@delan, @mrobinson, @mukilan, #35196) libservo: Add WebViewDelegate and ServoDelegate and port `winit_minimal` (#35196)
96+
- `https://github.com/servo/servo/pull/35196 (@delan, @mrobinson, @mukilan, #35196) libservo: Add WebViewDelegate and ServoDelegate and port `winit_minimal` (#35196)
9797
embedding
98-
- https://github.com/servo/servo/pull/35315 (@mukilan, @mrobinson, #35315) Migrate Android and OHOS ports to the delegate API (#35315)
98+
- `https://github.com/servo/servo/pull/35315 (@mukilan, @mrobinson, #35315) Migrate Android and OHOS ports to the delegate API (#35315)
9999
embedding
100-
- https://github.com/servo/servo/pull/35284 (@mrobinson, @delan, @mukilan, #35284) servoshell: Port desktop servoshell to use delegate API (#35284)
100+
- `https://github.com/servo/servo/pull/35284 (@mrobinson, @delan, @mukilan, #35284) servoshell: Port desktop servoshell to use delegate API (#35284)
101101
embedding
102-
- https://github.com/servo/servo/pull/35297 (@mrobinson, #35297) libservo: Add a `ClipboardDelegate` and a default implementation (#35297)
102+
- `https://github.com/servo/servo/pull/35297 (@mrobinson, #35297) libservo: Add a `ClipboardDelegate` and a default implementation (#35297)
103103
embedding
104-
- https://github.com/servo/servo/pull/35350 (@webbeef, #35350) wini_minimal: trigger initial rendering and scroll properly (#35350)
104+
- `https://github.com/servo/servo/pull/35350 (@webbeef, #35350) wini_minimal: trigger initial rendering and scroll properly (#35350)
105105
embedding
106-
- https://github.com/servo/servo/pull/35366 (@mrobinson, #35366) libservo: Remove message-based API (#35366)
106+
- `https://github.com/servo/servo/pull/35366 (@mrobinson, #35366) libservo: Remove message-based API (#35366)
107107
embedding
108-
- https://github.com/servo/servo/pull/35400 (@mrobinson, #35400) libservo: Add a delegate method for HTTP authentication (#35400)
108+
- `https://github.com/servo/servo/pull/35400 (@mrobinson, #35400) libservo: Add a delegate method for HTTP authentication (#35400)
109109
embedding
110-
- https://github.com/servo/servo/pull/35396 (@mrobinson, @mukilan, #35396) libservo: Flesh out permissions API (#35396)
110+
- `https://github.com/servo/servo/pull/35396 (@mrobinson, @mukilan, #35396) libservo: Flesh out permissions API (#35396)
111111
embedding
112-
- https://github.com/servo/servo/pull/35445 (@mukilan, #35445) libservo: change 'request_fullscreen_state_change' API to a notification (#35445)
112+
- -https://github.com/servo/servo/pull/35445 (@mukilan, #35445) libservo: change 'request_fullscreen_state_change' API to a notification (#35445)
113113
embedding
114-
- https://github.com/servo/servo/pull/35430 (@mrobinson, @mukilan, #35430) libservo: Expose a single `InputEvent` type and pass it to script (#35430)
114+
- `https://github.com/servo/servo/pull/35430 (@mrobinson, @mukilan, #35430) libservo: Expose a single `InputEvent` type and pass it to script (#35430)
115115
embedding
116-
- https://github.com/servo/servo/pull/35369 (@mrobinson, #35369) libservo: Don't bounce ready-to-present frame notifications to the Constellation (#35369)
117-
embedding
118-
- https://github.com/servo/servo/pull/35479 (@jdm, #35479) Make WebBluetooth an optional feature. (#35479)
116+
- `https://github.com/servo/servo/pull/35369 (@mrobinson, #35369) libservo: Don't bounce ready-to-present frame notifications to the Constellation (#35369)
117+
perf
118+
- `https://github.com/servo/servo/pull/35479 (@jdm, #35479) Make WebBluetooth an optional feature. (#35479)
119119
embedding
120-
- https://github.com/servo/servo/pull/35465 (@mrobinson, @mukilan, #35465) libservo: Expose an `OffscreenRenderingContext` and use it for servoshell (#35465)
120+
- `https://github.com/servo/servo/pull/35465 (@mrobinson, @mukilan, #35465) libservo: Expose an `OffscreenRenderingContext` and use it for servoshell (#35465)
121121
embedding
122-
- https://github.com/servo/servo/pull/35501 (@mrobinson, #35501) libservo: Expose `SoftwareRenderingContext` and `WindowRenderingContext` (#35501)
122+
- `https://github.com/servo/servo/pull/35501 (@mrobinson, #35501) libservo: Expose `SoftwareRenderingContext` and `WindowRenderingContext` (#35501)
123123
embedding
124-
- https://github.com/servo/servo/pull/35536 (@mrobinson, @wusyong, #35536) compositing: Split non-WebView-specific data into `ServoRenderer` (#35536)
124+
- `https://github.com/servo/servo/pull/35536 (@mrobinson, @wusyong, #35536) compositing: Split non-WebView-specific data into `ServoRenderer` (#35536)
125125
embedding
126-
- https://github.com/servo/servo/pull/35544 (@mrobinson, #35544) Remove `Servo::allow_navigation_request` (#35544)
126+
- `https://github.com/servo/servo/pull/35544 (@mrobinson, #35544) Remove `Servo::allow_navigation_request` (#35544)
127127
embedding
128-
- https://github.com/servo/servo/pull/35522 (@mrobinson, @wusyong, @mukilan, #35522) libservo: Rework and clarify the rendering model of the `WebView` (#35522)
128+
- `https://github.com/servo/servo/pull/35522 (@mrobinson, @wusyong, @mukilan, #35522) libservo: Rework and clarify the rendering model of the `WebView` (#35522)
129129
embedding
130-
- https://github.com/servo/servo/pull/35538 (@mrobinson, @wusyong, #35538) compositing: Move image output and shutdown management out of the compositor (#35538)
130+
- `https://github.com/servo/servo/pull/35538 (@mrobinson, @wusyong, #35538) compositing: Move image output and shutdown management out of the compositor (#35538)
131131
embedding
132-
- https://github.com/servo/servo/pull/35553 (@mrobinson, #35553) libservo: Move GL acclerated media setup out of `RenderingContext` and simplify it (#35553)
132+
- `https://github.com/servo/servo/pull/35553 (@mrobinson, #35553) libservo: Move GL acclerated media setup out of `RenderingContext` and simplify it (#35553)
133133
embedding
134134
- https://github.com/servo/servo/pull/35547 (@delan, #35547) libservo: Clean up destroyed webview handles (#35547)
135135
embedding
136-
- https://github.com/servo/servo/pull/35590 (@webbeef, #35590) build winit_minimal with bluetooth disabled (#35590)
136+
- `https://github.com/servo/servo/pull/35590 (@webbeef, #35590) build winit_minimal with bluetooth disabled (#35590)
137137
embedding
138-
- https://github.com/servo/servo/pull/35564 (@mrobinson, #35564) libservo: Convert `intercept_web_resource_load` into `load_web_resource` (#35564)
138+
- `https://github.com/servo/servo/pull/35564 (@mrobinson, #35564) libservo: Convert `intercept_web_resource_load` into `load_web_resource` (#35564)
139139
embedding
140-
- https://github.com/servo/servo/pull/35624 (@delan, #35624) libservo: Refactor ipc-channel default response logic (#35624)
140+
- -https://github.com/servo/servo/pull/35624 (@delan, #35624) libservo: Refactor ipc-channel default response logic (#35624)
141141
embedding
142142
- https://github.com/servo/servo/pull/35602 (@mrobinson, #35602) libservo: Move WebDriver messages to the `embedder` crate (#35602)
143+
webdriver
144+
- `https://github.com/servo/servo/pull/35621 (@mrobinson, #35621) libservo: Move size handling to `RenderContext` from `WindowMethods` (#35621)
143145
embedding
144-
- https://github.com/servo/servo/pull/35621 (@mrobinson, #35621) libservo: Move size handling to `RenderContext` from `WindowMethods` (#35621)
145-
embedding
146-
- https://github.com/servo/servo/pull/35686 (@webbeef, #35686) winit_minimal: fix build breakage (#35686)
146+
- `https://github.com/servo/servo/pull/35686 (@webbeef, #35686) winit_minimal: fix build breakage (#35686)
147147
embedding
148-
- https://github.com/servo/servo/pull/35579 (@delan, #35579) libservo: Clean up interfaces for alert()/confirm()/prompt() (#35579)
148+
- `https://github.com/servo/servo/pull/35579 (@delan, #35579) libservo: Clean up interfaces for alert()/confirm()/prompt() (#35579)
149149
embedding
150-
- https://github.com/servo/servo/pull/35662 (@mrobinson, #35662) libservo: Add `WebView` immediately to the Compositor (#35662)
150+
- `https://github.com/servo/servo/pull/35662 (@mrobinson, #35662) libservo: Add `WebView` immediately to the Compositor (#35662)
151151
embedding
152-
- https://github.com/servo/servo/pull/35672 (@delan, @mrobinson, #35672) Make auxiliary webviews exist in the constellation immediately (#35672)
152+
- `https://github.com/servo/servo/pull/35672 (@delan, @mrobinson, #35672) Make auxiliary webviews exist in the constellation immediately (#35672)
153153
embedding
154-
- https://github.com/servo/servo/pull/35691 (@webbeef, #35691) winit_mininal: support proper window resizing (#35691)
154+
- `https://github.com/servo/servo/pull/35691 (@webbeef, #35691) winit_mininal: support proper window resizing (#35691)
155155
embedding
156156
- gc
157157
- https://github.com/servo/servo/pull/35541 (@augustebaum, #35541) Propagate `CanGc` arguments through callers in constructors (#35541)
@@ -383,17 +383,39 @@ Plus several new web API features:
383383

384384
We’ve landed layout improvements around **‘border-collapse’** (@Loirooriol, #35219), **‘align-content: normal’** (@rayguo17, #35178), **‘place-self’** with **‘position: absolute’** (@Loirooriol, #35208), the **intrinsic sizing keywords** (@Loirooriol, #35413, #35469, #35471, #35630, #35642, #35663, #35652, #35688), and **‘position: absolute’** now works correctly in a **‘position: relative’ grid item** (@stevennovaryo, #35014).
385385

386-
## Servo-the-browser
386+
## Servo-the-browser (servoshell)
387387

388388
**Directory listings** are now enabled for local files (@mrobinson, #35317).
389389

390-
servoshell’s **dialogs now use egui** (@chickenleaf, #34823, #35399, #35464, #35507, #35577, #35657, #35671), rather than shelling out to a program like `zenity` (@chickenleaf, #35674), making them more secure and no longer falling back to terminal input.
390+
servoshell’s **dialogs now use egui** (@chickenleaf, #34823, #35399, #35464, #35507, #35564, #35577, #35657, #35671), rather than shelling out to a program like `zenity` (@chickenleaf, #35674), making them more secure and no longer falling back to terminal input.
391391

392392
We’ve also fixed a bug when closing a tab other than the current one (@pewsheen, #35569).
393393

394-
## Embedding
394+
## Servo-the-engine (embedding)
395+
396+
We’ve simplified our embedding API by **merging all input event delivery** into [`WebView::notify_input_event`](https://doc.servo.org/servo/struct.WebView.html#method.notify_input_event) (@mrobinson, @mukilan, #35430), making **bluetooth optional** (@jdm, @webbeef, #35479, #35590), making the **“background hang monitor” optional** (@jdm, #35256), and **eliminating the need to depend on `webxr`** (@mrobinson, #35229).
397+
We’ve also moved some servoshell-only options out of [`Opts`](https://doc.servo.org/servo_config/opts/struct.Opts.html) (@mrobinson, #35377, #35407), since they have no effect on Servo’s behaviour.
398+
399+
We’ve landed our initial **delegate-based API** (@delan, @mrobinson, @mukilan, #35196, #35260, #35297, #35396, #35400, #35544, #35579, #35662, #35672), which replaces our old message-based API for integrating Servo with your app (@mrobinson, @delan, @mukilan, #35284, #35315, #35366).
400+
By implementing [`WebViewDelegate`](https://doc.servo.org/servo/trait.WebViewDelegate.html) and [`ServoDelegate`](https://doc.servo.org/servo/trait.ServoDelegate.html) and [installing](https://doc.servo.org/servo/struct.WebView.html#method.set_delegate) [them](https://doc.servo.org/servo/struct.Servo.html#method.set_delegate), you can have Servo call back into your app’s logic with ease.
401+
402+
We’ve simplified the [`RenderingContext`](https://doc.servo.org/servo/trait.RenderingContext.html) trait (@wusyong, @mrobinson, #35251, #35553) and **added three built-in `RenderingContext` impls** (@mrobinson, @mukilan, #35465, #35501), making it easier to set up a context Servo can render to:
403+
404+
- [`WindowRenderingContext`](https://doc.servo.org/servo/struct.WindowRenderingContext.html) renders to a **whole window**
405+
- [`OffscreenRenderingContext`](https://doc.servo.org/servo/struct.OffscreenRenderingContext.html) renders to **part of a window**
406+
- [`SoftwareRenderingContext`](https://doc.servo.org/servo/struct.SoftwareRenderingContext.html) renders to an image, **without hardware acceleration**
407+
408+
We’ve heavily reworked and documented our **webview rendering model** (@mrobinson, @wusyong, @mukilan, #35522, #35621), **moved image output** and **shutdown logic** out of the compositor (@mrobinson, @wusyong, #35538), and removed some complicated logic around synchronous repaints when a window is resized (@mrobinson, #35283, #35277).
409+
These changes should make it a lot clearer how to get Servo’s webviews onto your display.
410+
411+
One part of this model that we’re starting to move away from is the support for multiple webviews in one rendering context (@mrobinson, @wusyong, #35536).
412+
First landed in #31417, this was an expedient way to add support for multiple webviews, but it imposed some serious limitations on how webviews could be interleaved with other app content, and the performance and security was inadequate.
413+
414+
We’ve **updated our [winit_minimal example](https://github.com/servo/servo/blob/139774e6b55c297bc94f7fcb8c9bf5bb8c6a7474/components/servo/examples/winit_minimal.rs)** to take advantage of these changes (@webbeef, #35350, #35686), simplify it further (@robertohuertasm, #35253), and fix window resizing (@webbeef, #35691).
415+
416+
## Perf improvements
395417

396-
We’ve moved some servoshell-only options out of [`Opts`](https://doc.servo.org/servo_config/opts/struct.Opts.html) (@mrobinson, #35377, #35407), since they have no effect on Servo’s behaviour.
418+
The compositor now **notifies the embedder of new frames immediately** (@mrobinson, #35369), not via the constellation thread.
397419

398420
## Donations
399421

0 commit comments

Comments
 (0)