Adds src/embedder.rs with the full Servo embedding implementation behind #[cfg(feature = " servo-embed)]:
2.6 KiB
Servo Pin
Current pin
| Field | Value |
|---|---|
| Source | https://github.com/servo/servo |
| Rev | c242860f0ef4e7c6e60dfea29310167898e6eb38 (main, 2026-03-11) |
| Crate | servo (package name as of 2026-03-11; previously libservo) |
| Feature | servo-embed (optional; off by default) |
Adding the Cargo dependencies
The Servo deps are not in Cargo.toml by default to avoid pulling the
Servo monorepo (~1 GB) into every cargo check cycle. To activate, add the
following to crates/weft-servo-shell/Cargo.toml and change the servo-embed
feature line to declare dep:servo, dep:winit, and dep:softbuffer:
[features]
servo-embed = ["dep:servo", "dep:winit", "dep:softbuffer"]
[dependencies.servo]
git = "https://github.com/servo/servo"
rev = "c242860f0ef4e7c6e60dfea29310167898e6eb38"
optional = true
default-features = false
[dependencies.winit]
version = "0.30"
optional = true
features = ["wayland"]
[dependencies.softbuffer]
version = "0.4"
optional = true
Then build:
cargo build -p weft-servo-shell --features servo-embed
The first build downloads and compiles Servo and its dependencies, which takes 30–60 minutes cold. Subsequent incremental builds are faster.
System dependencies
The following system packages are required when servo-embed is enabled:
libgles2-mesa-devor equivalent OpenGL ES headerslibssl-devlibdbus-1-devlibudev-devlibxkbcommon-devlibwayland-dev
On Fedora/RHEL: mesa-libGL-devel openssl-devel dbus-devel systemd-devel libxkbcommon-devel wayland-devel
Rendering approach
Initial bringup uses SoftwareRenderingContext (CPU rasterisation) blitted to a
softbuffer-backed winit window. Production rendering will move to an EGL/GL
context once the Wayland surface pipeline is stable.
Known gaps at this pin
- GAP-1: Wayland input events not forwarded to Servo (keyboard/pointer stubs)
- GAP-2: DMA-BUF surface export not implemented (software blit only)
- GAP-3: WebGPU adapter on Mesa may fail CTS
- GAP-4: CSS
backdrop-filterand CSS Grid have partial coverage
Update policy
Pin is reviewed monthly. To update:
- Check the Servo release page for new tags.
- Update
taginCargo.tomland runcargo update -p servo. - Confirm the compositor and shell tests still pass.
- Update this file with the new tag and any new or resolved gaps.