Hyaika Blog

Penguin is all you need

技术

Servo 0.4 发版了——558 次提交,一个 Rust 浏览器引擎在慢慢长大

🦀 Servo 0.4 发版了——558 次提交,一个 Rust 浏览器引擎在慢慢长大

目录

  • 一个浏览器引擎,为什么值得关注
  • 558 次提交,历史最高
  • Google Photos 终于能跑了,但地图还是不行
  • SharedWorker、ML-KEM、attr()——这些新东西意味着什么
  • 国内对照:我们用 Chromium 太久了,以至于忘了还有别的路
  • 所以,一个七岁的引擎,为什么还在生长

一个浏览器引擎,为什么值得关注

如果你不是浏览器引擎的狂热爱好者,Servo 这个名字可能已经很久没出现在你的视野里了。

它最初是 Mozilla 在 2013 年启动的一个实验项目——用 Rust 写一个全新的浏览器引擎,目标是利用 Rust 的内存安全特性来消除整类浏览器安全漏洞。后来 Mozilla 裁员,Servo 被剥离出来,交给 Linux 基金会托管。之后很长一段时间,它像许多开源项目一样,在「活着,但没什么大新闻」的状态里缓慢前进。

但 2026 年 7 月 31 日,Servo 发布了 0.4.0 版本。这个版本包含 558 次提交——项目历史最高。而且它开始能渲染一些真实世界的网站了。

这不是一个「浏览器引擎要取代 Chrome」的故事。这是一个关于「有人还在用另一种方式做浏览器」的故事。


558 次提交,历史最高

Servo 月度提交数图表,从2023年9月的130次到2026年6月的558次,清晰的线性增长趋势

这个数字本身值得停下来看看。

2023 年 9 月,Servo 被 Linux 基金会接管后,月提交量大约在 130 次左右。到 2026 年 6 月,这个数字翻了四倍多,达到 558 次。增长曲线是线性的——不是突然爆发,而是每个月都在稳定地多写一点。

这意味着什么?意味着参与者在增加,而不是在减少。意味着有人愿意为这个「非主流浏览器引擎」投入时间。

Phoronix 的报道也提到了这一点:Servo 0.4 带来了 558 次提交,其中包含大量安全修复、新 CSS 特性、媒体查询实现,以及许多新的 DOM API。这不是一个「修了几个 bug」的小版本更新,而是一个引擎在系统性地补齐能力。


Google Photos 终于能跑了,但地图还是不行

这张截图是 Servo 0.4 在渲染 diffie 网站时的效果:

Servo 0.4.0 渲染 diffie 网站的截图,展示了新的媒体查询功能和 attr() 函数

这次更新中,Servo 官方列出了几个「真实世界网站兼容性」里程碑:

  • lichess.org — 布局正确性显著提升,棋盘和棋子渲染正常
  • Speedtest.net — 速度测试页面可正常交互
  • Zulip (servo.zulipchat.com) — 聊天界面可用
  • Google Photos — 可以正常浏览照片库
  • Cash Converters — 可正常打开

但也有一些网站「渲染正确但交互有问题」——Google Maps 和 OpenStreetMap 就是典型的例子。能显示地图,但拖拽、缩放这些交互操作还不太顺畅。

这个列表很有意思。它透露了 Servo 团队的真实策略:不追求「所有网站完美运行」——那是一个不可能的目标,Blink 和 WebKit 花了二十年才做到——而是逐个击破。每月选几个真实网站,修到能跑。这比「我们实现了标准 X」的宣布更有说服力,因为兼容性不是在规范文档里定义出来的,是在真实页面上跑出来的。


SharedWorker、ML-KEM、attr()——这些新东西意味着什么

这一节如果你不是前端开发者可以跳过,但有几个点值得单独拿出来讲。

SharedWorker(由 @Taym95 实现)是一个浏览器 API,允许不同标签页之间共享同一个后台 Worker。这东西在 Chrome 里早就有了,但 Servo 现在才实现——这很正常,浏览器引擎的实现顺序不是「先实现最有用的」,而是「先实现最基础的,再往上堆」。

更有意思的是 crypto.subtle 的更新。Servo 0.4 实现了 ML-KEM(Kyber)和 ML-DSA(Dilithium)的密钥提取方法。这是后量子密码学的标准算法——NIST 在 2024 年才正式标准化,Servo 在 2026 年就把它集成到了浏览器引擎里。对于一个小型开源项目来说,这个速度不慢。

另外,attr() 函数的实验性支持也值得关注。CSS attr() 允许开发者从 HTML 属性中读取值来设置样式——比如 width: attr(data-width px)。这是一个很老的功能(CSS2 就定义了),但浏览器实现一直很慢。Servo 先把它做出来了,即使只是实验模式。


国内对照:我们用 Chromium 太久了,以至于忘了还有别的路

少数派不久前有一篇文章讨论「浏览器引擎的多样性」,提到一个现实:中国市场上几乎所有主流浏览器都是 Chromium 换皮。QQ 浏览器、360 浏览器、搜狗浏览器、甚至 Edge——底层都是 Blink。

不是说 Chromium 不好。Blink 是工程质量的巅峰,这一点没有争议。但当一个生态里只有一个渲染引擎时,有些东西会悄悄消失:

  • 如果 Blink 团队决定不实现某个标准(比如早就被提议的 scrollbar-width),那这个标准就死了——没有第二个引擎来推动它
  • 如果 Blink 在某天引入了一个破坏性变更(比如 Manifest V3),整个生态都得跟着改
  • 如果 Blink 被用来强化某种 DRM 或广告技术,用户没有替代方案

Servo 的存在意义不是「比 Chrome 快」,而是「和 Chrome 不一样」。它是一种保险——当 Blink 走错路的时候,至少还有人走在另一条路上。


所以,一个七岁的引擎,为什么还在生长

Servo 项目的生命周期其实挺曲折的。2013 年启动,2018 年被 Mozilla 战略放弃,2020 年被 Linux 基金会接管,之后每年都在缓慢但稳定地增长。

558 次提交一个月,对于 Chromium 来说不算什么(Chromium 每天就有几百次提交)。但对于一个由社区驱动、没有大公司全职支持的小型浏览器引擎来说,这已经是相当可观的输出量了。

而且看看这些提交的内容:后量子密码学、SharedWorker、媒体查询深度覆盖、可变字体渲染——这不是在「维持一个玩具」,而是在认真建一个能用的浏览器引擎。

当然,它离「日常可用」还有很长的路。Google Maps 还点不动,OpenStreetMap 也有交互问题,更不用说 YouTube、Twitter、Gmail 这些重度 JS 网站。但如果你回头看看两年前的 Servo——那时它连一个像样的表格都渲染不好——进步是很明显的。

Servo 可能永远不会成为你的主力浏览器。但它证明了:当所有人都认为浏览器引擎只有 Blink 和 WebKit 两条路的时候,有人还在默默地走第三条路。而且这条路,正在变宽。

分享:

评论(0)

暂无评论,来写第一条吧~

发表评论