Servo基金会发布了0.4.0版本,收录了2026年6月落地的全部改动。官方博客给出的数字是558次提交,比4月的534次、5月的391次都高,是这个项目自2023年9月重新起步以来提交最密集的一个月。博客还顺手提了一句:月度提交量已经比起步时涨了四倍多。同一次更新里,Servo补上了SharedWorker、CustomElementRegistry、一整套触摸事件API,以及device-width、aspect-ratio、hover等长期缺失的CSS媒体查询——这些都是现代网页离不开的基础能力,迟到但终于来了。
但把这份清单当成"Servo快要能用了"的信号,可能想多了。Servo自己维护的WPT(Web Platform Tests)进度看板,截至4月的快照,整体通过率是65.6%(按测试计分)、93.1%(按子测试计分)。这个数字比0.4.0正式构建还早了两三个月,本身就滞后。但它至少说明一件事:不断刷新的commit数字,和"这个引擎离生产可用还有多远",是两条不重合的曲线。
0.4.0补上了哪些课
这次更新的核心不是某个单点突破,是一批"网页应用运行必需但此前一直缺席"的能力集中到货。CSS这边,attr()进入实验模式、calc()等数学表达式支持延迟求值(比如sign(1em - 32px))、@font-face里的font-feature-settings补齐了可变字体渲染的最后一块拼图。DOM和Web API这边,SharedWorker、CustomElementRegistry、Request/Response/Blob的textStream()、指针捕获事件全部到位,加上crypto.subtle对KT128/KT256、ML-KEM、ML-DSA的支持,说明团队也在补新一代密码学标准的账。
真实网站上能看到效果:变量字体渲染改善之后,Zulip和Speedtest这类站点变得明显更易读,lichess.org的布局正确性也有肉眼可见的提升。
提交数字和兼容基线,走的不是一条线
Servo的WPT看板把CSS部分单独拆出来看,通过率是68.4%(按测试)、64.6%(按子测试),比整体数字还低一截——布局引擎最难啃的骨头,恰恰是CSS这块。
问题不只是这个数字过期。wpt.fyi自己也说明过,WPT得分取决于启用的测试集合、测试元数据、浏览器版本、运行平台,以及失败是否被标记为"预期"或"不支持"——跨引擎比较必须用同一版本、同一运行配置,否则数字之间没有可比性。也就是说,就算Servo哪天把这几个百分比拉到90%以上,也不能直接拿去和Chromium、Gecko、WebKit的头条兼容性数字画等号。
提交数纪录属于开发者,兼容进度条属于用户。
- 结论.commit数字反映的是社区规模和开发节奏,WPT百分比反映的才是产品能不能用,两者该分开看,不该互相背书。
嵌入场景里,Servo的对手不是Chrome
Servo最初由Mozilla孵化,用Rust写成,卖点是并行化布局和内存安全,如今转由独立基金会主导。它的定位从来不是做一个完整浏览器产品,而是给应用开发者提供一个可嵌入的轻量高性能网页渲染方案。真正要比较的对象不是Chromium或Firefox,而是CEF(Chromium Embedded Framework)、Electron和各平台自带的WebView,另一个参照系是同为从零重写的独立引擎Ladybird。
这个定位落到real world compat的测试结果上,画面挺一致:Google Photos和Cash Converters这类站点在0.4.0之前就能跑,现在依旧稳定;Google Maps和OpenStreetMap能正常渲染,但交互还有问题——地图这类高频操作型应用,恰恰是最考验引擎成熟度的场景。
安全方面这次也不轻松:Servo把JS运行时SpiderMonkey升级修了几个CVE,RSA运算改成常量时间计算防时序攻击,ML-DSA的Decompose步骤也补上了常量时间实现。
- 风险.Servo官方博客自己承认,其RSA实现目前仍受Marvin Attack(一种时序侧信道攻击)影响,对应的RUSTSEC-2023-0071漏洞尚未修复——考虑把Servo用于处理敏感数据的嵌入场景,这条要提前算进风险评估。
接下来该盯什么
对想把Servo嵌进自家应用的开发者来说,比commit数字更该跟的,是WPT看板什么时候更新到7月的0.4.0构建、real world compat名单会不会真的把Google Maps和OpenStreetMap的交互问题解决掉,以及C ABI嵌入接口和安全沙盒架构这两块目前还在推进中的硬骨头。这些指标不如"558次提交创纪录"上头,但决定Servo到底能不能从原型走进生产。
