This demo was done because an LLM told me it couldn't be done. And because everything that is anything must be written in Rust.
How is it done, who cares, let's see a video:
output.mp4
Okay but really how does it work.
wasm-pack builds a wasm binary that call out to Servos APIs: html5ever and stylo, sometimes directly sometimes through Blitz APIs. Servo understands CSS and HTML and renders the page to an image via Vello which is a WebGPU renderer.
You can see WASM support #160 for the inception of this project.
Requirements
- Rust — see
rust-toolchain.toml(wasm32-unknown-unknown). - wasm-pack
- CORS — fetched pages must be allowed; the stock URL box expects wrappers like
https://corsproxy.io/?https://….
wasm-pack build --target web --out-dir web/pkg
cargo run --bin serve-webThen open http://127.0.0.1:8080/