Servo 是一个旨在为应用程序嵌入 Web 技术提供轻量级且高性能替代方案的 Web 引擎,目前已发布 0.7.0 版本。此次更新涵盖了 527 次提交,并引入了多项新的 Web 平台功能,包括 `<progress>` 元素、`:checked` 伪类以及 `user-select` 属性。这些新增内容是 Servo 在保持对性能和开发者体验关注的同时,不断扩展其与标准 Web 功能兼容性的持续努力的一部分。

此次更新还带来了对 CSS 和 DOM API 的重大增强。新的 CSS 功能包括类型化算术、`alpha()` 函数以及 `font-width` 属性。在 DOM 方面,Servo 添加了多个新 API,例如 `CSSRule` 和 `CSSStyleDeclaration` 上的 `parentRule`,以及 `HTMLHtmlElement` 上的 `version`。此外,该引擎改进了对 SVG 元素的处理,并为 WebCrypto 集成了 MLKEM768-X25519 算法。这些更新旨在为依赖 Servo 渲染复杂 Web 内容的开发者提供更稳健且功能完整的环境。

在 Servo Web 引擎中渲染的 Candy Crush 游戏
Servo 引擎通过 Candy Crush 游戏展示其渲染能力。servo.org

这张图片展示了更新中所描述的引擎渲染复杂 Web 内容和游戏的各种能力。

在 Servo Web 引擎中渲染的 egui.rs 网站
在 Servo 环境中渲染的 egui.rs 网站。servo.org

此视觉效果支持了 Servo 为渲染复杂 Web 内容提供稳健环境的说法。

稳定性与开发者体验也是 0.7.0 版本的核心关注点。团队实施了多项优化,旨在减少不必要的内存分配,并通过减少与垃圾回收器的交互来提升性能。他们还解决了各种稳定性问题,包括对 WebRTC 和其他多个组件的修复。虽然这些改进增强了引擎的可靠性,但某些变化涉及权衡;例如,`WebView::set_throttled` API 已被移除,取而代之的是当 WebView 被隐藏时自动进行节流。此外,由于 WebGL 现在包含在默认 Web 功能中,希望排除该功能的开发者现在必须手动禁用默认功能以减小二进制文件体积。