【Rust日报】2026-11-07 Servo 0.7 收进 527 个提交

💡 原文中文,约5000字,阅读约需12分钟。
📝

内容提要

Servo 0.7.0 发布,包含 9 月的 527 个提交,新增 :checked、user-select、Canvas roundRect 等网页功能,将 SpiderMonkey 升级至 153.3 并修复安全漏洞,调整嵌入 API,多进程构建可节省约 2MB。tokio-tun 0.23.0 为 Linux 加入 virtio-net offload,支持 TSO/GSO/GRO,并完善 FreeBSD TAP 支持。另有业余开发者询问如何为 rustc 贡献,社区建议从简单 issue 入手,且不要用 LLM 代做 PR。

🔎

延伸解读

Servo 0.7 的嵌入 API 变动值得关注

Servo 0.7.0 对嵌入 API 做了几处调整:WebView::set_throttled 被移除,改为隐藏时自动节流;WebGL 进入默认特性,不需要的嵌入方需主动关闭;多进程构建可节省约 2MB。这些变化意味着嵌入方升级时需检查现有代码是否依赖旧接口,尤其是节流逻辑和默认特性配置,避免行为不符预期。

tokio-tun 的 offload 有明确使用约束

tokio-tun 0.23.0 在 Linux 上新增 virtio-net offload,开启后每个包前需带 10 字节 virtio_net_hdr,接收缓冲区至少为 VIRTIO_NET_HDR_LEN + 65_536 字节,且不能与 packet_info() 同用。多队列场景下每个队列都要调用 .offload(),状态不一致会被拒绝。这些约束意味着启用 offload 并非无代价,需按文档调整缓冲区与队列配置。

给 rustc 贡献:社区强调先读懂再动手

针对业余开发者能否给 rustc 提补丁的提问,社区评论普遍认为没有硬性门槛,但维护者时间有限,不建议在不确定时增加负担。有经验的贡献者建议先下载代码库阅读,从简单 issue 入手,并强调不要用 LLM 生成整个 PR 后反复提交,因为维护者已需花费大量精力处理这类自动提交。

目录扫描并行化:Rayon 未必是首选

在讨论用 Rayon 并行扫描目录时,评论指出 Rayon 更偏 CPU 并行,而目录遍历和文件 I/O 大量时间在等待。建议参考 ripgrep 使用的 ignore crate 或 jwalk 进行并行遍历,网络挂载场景下并发数应做成可配置参数而非按核数猜测。清理时先删子项再删目录,不跟随符号链接,并将 NotFound 视为正常情况。

❓

Q&A

Servo 0.7.0 这个版本包含了哪些主要更新?

Servo 0.7.0 包含了 2026 年 9 月合入的 527 个提交。新增网页平台功能如 :checked 伪类、user-select、<progress>、CSS typed arithmetic、alpha()、font-width、Canvas roundRect()、WebCrypto 的 MLKEM768-X25519 等;将 SpiderMonkey 升级至 153.3 并修复安全漏洞;调整嵌入 API;多进程构建可节省约 2MB。

tokio-tun 0.23.0 为 Linux 带来了什么新特性?

tokio-tun 0.23.0 为 Linux 加入了 virtio-net offload 支持,通过 TunBuilder::offload() 可以打开 TSO/GSO/GRO。新增了 VirtioNetHeader、VIRTIO_NET_HDR_LEN 和 GSO 常量。每个收到的包前面有 10 字节的 virtio_net_hdr,发出去的包也要带这个头。offload() 配置 checksum、TSO4、TSO6 和基于 NAPI 的 GRO,并且不能和 packet_info() 一起用。

业余开发者想给 rustc 贡献代码,社区有什么建议?

社区建议从 GitHub 上相对简单的 issue 开始提 PR;先下载 Rust 代码库阅读,不要指望马上贡献;不要用 LLM 代做整个 PR;审阅者通常友好,可以提问;不要为了改而改;持续做会变成熟悉这块的人。

在 Rust 中并行扫描目录和处理文件,用 Rayon 合适吗?有什么替代方案?

Rayon 更偏 CPU 并行,适合计算密集型任务。对于目录遍历,推荐使用 ignore crate(ripgrep 所用)的 WalkParallel 或 jwalk,它们自带多线程池、并行遍历并自动遵守 .gitignore。文件 I/O 大部分时间在等待,网络挂载上需要限制并发,可以用有界 channel 加工作线程实现背压。

Servo 的嵌入 API 在 0.7.0 中有哪些变化?

无障碍工具产生的事件走 Servo::forward_accessibility_action;WebView::clear_session_history 可以清掉会话历史;WebView::set_throttled 被去掉,WebView 隐藏时自动节流,显示时停止;webgl 进入 default_web_features,不想带 WebGL 的嵌入方需要关掉默认 feature。

Servo 项目目前的资金状况如何?

Servo 的经常性捐款是每月 8144 美元,比 8 月高 1%。thanks.dev 上有 37 个依赖 Servo 的 GitHub 用户在赞助,比 8 月多 1 个。博客还列出了 10 位这个月第一次给 Servo 合入补丁的贡献者。

🏷️

标签

➡️

继续阅读