大家好,我是何三,独立开发者
昨天刷 HN 的时候看到一个帖子,413 赞,137 条评论,标题只有一行字:
"Servo is now available on crates.io"
搁以前我可能就划过去了。但点进去一看,嚯,Mozilla 那个搞了 14 年的浏览器引擎项目,终于可以作为 crate 直接嵌入你的 Rust 应用了。
Servo,近 3.7 万 Star(约 36.3k),昨天正式发布了 v0.1.0,同时登上了 HN 首页和 r/rust 热榜(277 赞)。
14 年,从"学术玩具"到"可用之器"
Servo 这个项目,说来话长。
2012 年 Mozilla 发起,初衷是用 Rust 从零重写浏览器引擎,解决 C++ 浏览器的内存安全问题。中间经历了各种曲折——资金、人力、方向调整——甚至一度被搁置。2023 年 Linux 基金会接手后重启开发,从 2025 年 10 月开始以每月一次的节奏发布版本,到昨天已经是第 5 个版本了。
v0.1.0 这个版本号很有意思。官方原话是:"我们还没讨论清楚 1.0 意味着什么,但版本号提升了,说明我们对嵌入 API 越来越有信心了。"
翻译一下:能用,但别拿去做生产浏览器。嵌入到你的应用里显示个网页,没问题。

一个 crate 搞定 Web 渲染
之前想在应用里嵌一个浏览器视图,你的选择基本就是 WebView——macOS 上是 WKWebView,Windows 上是 Edge WebView2,Linux 上是 WebKitGTK。每个平台调一套 API,还得处理不同平台的诡异行为。
Servo 的思路不太一样。它直接作为一个 Rust crate 发布,cargo add servo,完事。
核心组件也可以单独使用:
- Stylo(CSS 引擎):已经在 crates.io 上发布了一年了,月更节奏
- WebRender(GPU 渲染器):通过 wgpu 实现,任何支持 wgpu 的 GUI 框架都能接入
有意思的是,Slint(另一个 Rust GUI 框架)已经出了一个嵌入 Servo 的示例,用 wgpu 渲染管线直接对接。nicoburns(Servo 核心开发者)在 HN 上说,这个例子"应该很容易适配到任何其他使用 wgpu 的 GUI 框架"。
这意味着什么?Tauri、Slint、egui、iced……理论上都能用 Servo 来渲染 Web 内容。不再需要依赖系统 WebView。
上手试一下
Simon Willison(Datasette 作者,Python 圈的大佬)在 HN 评论里贴了一个他 vibe-coded 的 demo——一个叫 servo-shot 的命令行工具,输入 URL,输出网页截图。
git clone https://github.com/simonw/research
cd research/servo-crate-exploration/servo-shot
cargo build
./target/debug/servo-shot https://news.ycombinator.com/
装完了。没报错。神奇。
(不过 Simon 自己也说这只是个极简 demo,不支持 cookies 之类的复杂场景,别指望拿来当无头浏览器。)
实际嵌入到你的应用里的话,大致是这样的:
# Cargo.toml
[dependencies]
servo = "0.1.0"
API 文档目前在 docs.rs 上还在构建,可以先看 RC 版本的文档。
还有个值得一提的:Servo 同步推出了 LTS 版本,每半年发布一次,期间只推送安全更新。这对企业级嵌入用户来说很关键——谁也不想每个月跟着最新版跑,改一堆 API。
几个社区热议点
我在 HN 和 Reddit 上翻了一圈评论,总结几个比较有意思的讨论:
"纯 Rust 吗?"
不是。Servo 的 JS 引擎还是 SpiderMonkey(Firefox 同款),底层用 C++ 写的。Simon Willison 在评论里直接说了:"It depends on stuff like SpiderMonkey so not pure Rust."
不过 Stylo(CSS 解析)和 WebRender(GPU 渲染)确实是 Rust 实现的,而且可以独立使用。社区里也有人讨论未来会不会换成纯 Rust 的 JS 引擎,比如boa——但目前没这个计划。
"能渲染 SPA 吗?能跑 WebGL 吗?"
能跑 JavaScript,但复杂页面(特别是重度 SPA)肯定还有 bug。WebGL 支持现在也不完整。这是一个 0.1.0 版本该有的状态。
"Slint + Servo 是不是最佳搭配?"
有人这么认为。Slint 本身也是 Rust 生态里很火的跨平台 GUI 框架,嵌入式场景用得很多。Servo 通过 wgpu 渲染,Slint 也用 wgpu,对接起来天然就顺。
不过 Slint 也有自己的问题——主题定制支持很差,有用户在 HN 上吐槽"不改 widget 逻辑就没法换主题"。
话说回来,为什么要关注 Servo
独立开发者可能会觉得,这玩意跟我有什么关系?
关系大了。
做桌面应用,最头疼的就是富文本渲染。你得显示 Markdown、HTML、带样式的文档——这时候系统 WebView 就变成了必须品。但系统 WebView 的坑,用过的人都知道:不同平台行为不一致、版本不可控、某些 Linux 发行版上甚至装不上。
Servo 给了一个新选择:自己打包一个 Web 渲染引擎,跨平台行为一致,不依赖系统环境。
当然现在还很早期。但方向是对的。
同类项目推荐
如果你对嵌入式 Web 渲染这个方向感兴趣,之前还推荐过几个相关项目:
- Tauri:Rust + Web 前端的桌面应用框架,目前用的还是系统 WebView,但如果未来切换到 Servo 后端,那就是纯 Rust 方案了
- wry:Tauri 底层的 WebView 封装库,可以单独使用。关注"何三笔记",回复「工具」获取更多同类项目整理
本文使用 MGO 编辑并发布
关注"何三笔记",回复"mgo" 免费下载使用