Servo 十二月更新:多窗口支持,代理支持,更好的缓存,以及更多。
December in Servo: multiple windows, proxy support, better caching, and more

原始链接: https://servo.org/blog/2026/01/23/december-in-servo/

## Servo 更新 – 2023年12月/2024年1月 最新的 Servo 构建版本(0.0.4 和 nightly)引入了**多窗口支持**,基于最近的嵌入 API 改进。 已经添加了几个 Web 平台功能,包括 CSS `contrast-color()`,部分 `` 和编码嗅探支持,以及遗留表格样式属性。 在**安全性**方面取得了显著进展,通过 SubtleCrypto API 完全支持 ChaCha20-Poly1305、RSA-OAEP、RSA-PSS 和 RSASSA-PKCS1-v1_5,以及 ML-KEM importKey()。 改进扩展到诊断、网络安全检查(部分)以及与 Firefox 145 的兼容性。 修复了大量的**渲染和事件处理错误**,提高了稳定性和符合性。 新的 API 包括用于 cookie/存储的 `SiteDataManager` 和具有缓存控制的 `NetworkManager`。 嵌入功能增强了简单的对话框支持和控制台消息访问。 **性能和稳定性**改进包括 HTTP 缓存驱逐、内存使用情况跟踪以及选择器匹配和重排的优化。 捐款已增加至每月 7110 美元,支持基础设施和开发。 团队将在 FOSDEM 2024 上进行演示。

## Servo 浏览器进展与替代方案的需求 Servo 浏览器 (servo.org) 的最新更新展示了显著的进展,包括多窗口支持、代理功能和改进的缓存。这对那些寻求 Blink/WebKit 和 Gecko 浏览器引擎替代方案的人来说是个好消息。 评论员强调了像 Servo 这样可持续、独立的网页引擎的重要性,特别是考虑到 Firefox 的长期可行性以及对其对 Google 资金的依赖。另一个有希望的项目 Ladybird (ladybird.org) 也在获得关注,但目前优先考虑渲染准确性而非速度——它在 HTML5test.co 上的得分很高,但速度比 Firefox 慢。 Servo 计划在 2026 年夏季发布第一个 Alpha 版本,但它已经可用且运行起来令人惊讶地容易。这两个项目都受益于社区支持和一些欧盟资金,这表明人们越来越希望拥有一个更健康、更多样化的网络环境。然而,一位评论员对 Ladybird 主要作者的政治观点提出了担忧。
相关文章

原文

Servo 0.0.4 and our December nightly builds now support multiple windows (@mrobinson, @mukilan, #40927, #41235, #41144)! This builds on features that landed in Servo’s embedding API last month. We’ve also landed support for several web platform features, both old and new:

Servo 0.0.4 showing new support for multiple windows

For better compatibility with older web content, we now support vendor-prefixed CSS properties like ‘-moz-transform’ (@mrobinson, #41350), as well as window.clientInformation (@Taym95, #41111).

We’ve continued shipping the SubtleCrypto API, with full support for ChaCha20-Poly1305, RSA-OAEP, RSA-PSS, and RSASSA-PKCS1-v1_5 (see below), plus importKey() for ML-KEM (@kkoyung, #41585) and several other improvements (@kkoyung, @PaulTreitel, @danilopedraza, #41180, #41395, #41428, #41442, #41472, #41544, #41563, #41587, #41039, #41292):

Algorithm
ChaCha20-Poly1305 (@kkoyung, #40978, #41003, #41030)
RSA-OAEP (@kkoyung, @TimvdLippe, @jdm, #41225, #41217, #41240, #41316)
RSA-PSS (@kkoyung, @jdm, #41157, #41225, #41240, #41287)
RSASSA-PKCS1-v1_5 (@kkoyung, @jdm, #41172, #41225, #41240, #41267)

When using servoshell on Windows, you can now see --help and log output, as long as servoshell was started in a console (@jschwe, #40961).

Servo diagnostics options are now accessible in servoshell via the SERVO_DIAGNOSTICS environment variable (@atbrakhi, #41013), in addition to the usual -Z / --debug= arguments.

Servo’s devtools now partially support the Network > Security tab (@jiang1997, #40567), allowing you to inspect some of the TLS details of your requests. We’ve also made it compatible with Firefox 145 (@eerii, #41087), and use fewer IPC resources (@mrobinson, #41161).

this website in Servo’s devtools, showing that the main request used TLS 1.3, TLS13_AES_256_GCM_SHA384 cipher suite, and X25519MLKEM768 key exchange, with HSTS enabled and HPKP disabled

We’ve fixed rendering bugs related to ‘float’, ‘order’, ‘max-width’, ‘max-height’, ‘:link’ selectors, <audio> layout, and getClientRects(), affecting intrinsic sizing (@Loirooriol, #41513), anonymous blocks (@Loirooriol, #41510), incremental layout (@Loirooriol, #40994), flex item sizing (@Loirooriol, #41291), selector matching (@andreubotella, #41478), replaced element layout (@Loirooriol, #41262), and empty fragments (@Loirooriol, #41477).

Servo now fires ‘toggle’ events on <dialog> (@lukewarlow, #40412). We’ve also improved the conformance of ‘wheel’ events (@mrobinson, #41182), ‘hashchange’ events (@Taym95, #41325), ‘dblclick’ events on <input> (@Taym95, #41319), ‘resize’ events on <video> (@tharkum, #40940), ‘seeked’ events on <video> and <audio> (@tharkum, #40981), and the ‘transform’ property in getComputedStyle() (@mrobinson, #41187).

Embedding API

Servo now has basic support for HTTP proxies (@Narfinger, #40941). You can set the proxy URL in the http_proxy (@Narfinger, #41209) or HTTP_PROXY (@treeshateorcs, @yezhizhen, #41268) environment variables, or via --pref network_http_proxy_uri.

We now use the system root certificates by default (@Narfinger, @mrobinson, #40935, #41179), on most platforms. If you don’t want to trust the system root certificates, you can instead continue to use Mozilla’s root certificates with --pref network_use_webpki_roots. As always, you can also add your own root certificates via Opts::certificate_path (--certificate-path=).

We have a new SiteDataManager API for managing localStorage, sessionStorage, and cookies (@janvarga, #41236, #41255, #41378, #41523, #41528), and a new NetworkManager API for managing the cache (@janvarga, @mrobinson, #41255, #41474, #41386). To clear the cache, call NetworkManager::clear_cache, and to list cache entries, call NetworkManager::cache_entries.

Simple dialogs – that is alert(), confirm(), and prompt() – are now exposed to embedders via a new SimpleDialog type in EmbedderControl (@mrobinson, @mukilan, #40982). This new interface is harder to misuse, and no longer requires boilerplate for embedders that wish to ignore simple dialogs.

Web console messages, including messages from the Console API, are now accessible via ServoDelegate::show_console_message and WebViewDelegate::show_console_message (@atbrakhi, #41351).

Servo, the main handle for controlling Servo, is now cloneable for sharing within the same thread (@mukilan, @mrobinson, #41010). To shut down Servo, simply drop the last Servo handle or let it go out of scope. Servo::start_shutting_down and Servo::deinit have been removed (@mukilan, @mrobinson, #41012).

Several interfaces have also been renamed:

Perf and stability

We can now evict entries from our HTTP cache (@Narfinger, @gterzian, @Taym95, #40613), rather than having it grow forever (or get cleared by an embedder). about:memory now tracks SVG-related memory usage (@d-kraus, #41481), and we’ve fixed memory leaks in <video> and <audio> (@tharkum, #41131).

Servo now does less work when matching selectors (@webbeef, #41368), when focus changes (@mrobinson, @Loirooriol, #40984), and when reflowing boxes whose size did not change (@Loirooriol, @mrobinson, #41160).

To allow for smaller binaries, gamepad support is now optional at build time (@WaterWhisperer, #41451).

We’ve fixed some undefined behaviour around garbage collection (@sagudev, @jdm, @gmorenz, #41546, mozjs#688, mozjs#689, mozjs#692). To better avoid other garbage-collection-related bugs (@sagudev, mozjs#647, mozjs#638), we’ve continued our work on defining (and migrating to) safer interfaces between Servo and the SpiderMonkey GC (@sagudev, #41519, #41536, #41537, #41520, #41564).

We’ve fixed a crash that occurs when <link rel=“shortcut icon”> has an empty ‘href’ attribute, which affected chiptune.com (@webbeef, #41056), and we’ve also fixed crashes in:

Donations

Thanks again for your generous support! We are now receiving 7110 USD/month (+10.5% over November) in recurring donations. This helps us cover the cost of our speedy CI and benchmarking servers, one of our latest Outreachy interns, and funding maintainer work that helps more people contribute to Servo.

Servo is also on thanks.dev, and already 30 GitHub users (+2 over November) that depend on Servo are sponsoring us there. If you use Servo libraries like url, html5ever, selectors, or cssparser, signing up for thanks.dev could be a good way for you (or your employer) to give back to the community.

We now have sponsorship tiers that allow you or your organisation to donate to the Servo project with public acknowlegement of your support. A big thanks from Servo to our newest Bronze Sponsors: Anthropy, Niclas Overby, and RxDB! If you’re interested in this kind of sponsorship, please contact us at [email protected].

Use of donations is decided transparently via the Technical Steering Committee’s public funding request process, and active proposals are tracked in servo/project#187. For more details, head to our Sponsorship page.

Conference talks and blogs

We’ve recently published one talk and one blog post:

We also have two upcoming talks at FOSDEM 2026 in Brussels later this month:

Servo developers Martin Robinson (@mrobinson) and Delan Azabani (@delan) will also be attending FOSDEM 2026, so it would be a great time to come along and chat about Servo!

联系我们 contact @ memedata.com