读完本文,你会搞懂:为什么古老如 X11 这种协议,也有人从零开始用 Rust 重写;在 Linux 内核、桌面显示、编译器工具链三个维度上,Rust 的渗透已经走到哪一步了。
━━━ ━━━ ━━━
一个不服输的项目:yserver
2026 年初,开发者 Jos Dehaes 在 GitHub 上开源了一个名为 yserver 的项目——一个从零开始用 Rust 写的 X11 服务器。版本号已经标到了 1.0。
这不是给博物馆观赏用的。yserver 已经能跑起完整的 MATE、Xfce、Cinnamon 桌面环境,支持 FVWM3、e16、Window Maker 等窗口管理器。支持的 X11 扩展列表一长串:RandR、DRI3、GLX、Composite、MIT-SHM......几乎涵盖了现代桌面所需的核心能力。
!yserver 运行截图
它的实现思路很\"锋利\":
- 不兼容旧包袱:直接砍掉非 TrueColor 视觉模式、间接 GLX、DDX 驱动 ABI——这些都是 X.Org 三十年累积下来几乎没人用的历史残骸。
- 直接硬件加速:通过 DRM/KMS + Vulkan 渲染,不走中间层。
- 无 Root 特权:使用
libseat做 seat 管理,安全模型干净。 - 配合 AI 编码:这个项目的开发大量依赖 Claude Code 辅助——这也是项目快速成型的关键因素。
(仓库地址:,MIT 许可证)
但必须诚实地说,yserver 不是 X.Org 的 drop-in 替代品。它的安全模型还不完整——当前版本不会阻止客户端读取其他客户端的窗口内容。但方向清晰:先跑起来,再修安全。
X.Org 的困境
X.Org 是 Linux 桌面的\"看门人\"协议(X11 的实际参考实现),但它的处境相当尴尬。
- 代码库始建于 1980 年代,主显示服务器来自 2004 年 fork 的 XFree86 4.4 RC2
- 超过 60 万行 C 代码,维护者极度稀缺
- 内存安全性差:一个 X11 客户端可以通过恶意请求触发服务端任意内存读取
- 大量遗留协议逻辑(非 TrueColor、X 键盘扩展的老版本......)占着代码面积,实际零使用
业界其实早就知道 X.Org 是个\"火坑\"。Wayland 的出现就是对这个事实的回应——不修了,干脆重来。但 Wayland 本身也不是完美解决方案:远程桌面协议支持不完整、xwayland 还需要跑一个 X 服务、NVIDIA 专有驱动的兼容性问题持续存在。
所以,回到原点重写一个现代的 X11 服务器,这个想法并不荒谬。
不止是显示器:Rust 在 Linux 内核的\"正式化\"
yserver 不是一个孤立事件。往前看一个更大的趋势:Rust 在 Linux 底层基础设施的渗透正在加速,而且是全栈的。
2025 年 12 月,东京的 Kernel Maintainers Summit 上,维护者 Steven Rostedt 宣布:Rust 成为内核正式的第二种编程语言——全场零反对。Greg Kroah-Hartman 在 Rust Week 2026 上说得更直接:
\"Rust is no longer an experiment.\"
\"Rust is becoming an official standard.\"
到 2026 年,内核中 Rust 代码约 25,000 行——相对于 C 语言的 3400 万行确实微不足道。但关键不在于量,而在于正在被 Rust 接管的子系统清单:
| 子系统 | 说明 |
|---|---|
| PHY 驱动 | 网络物理层驱动,最先受益 |
| Null Block 驱动 | 块设备层样板 |
| Android Binder 驱动 | Android 用户态/内核 IPC |
| Apple AGX GPU 驱动 | Asahi Linux 项目,M1/M2 GPU |
| Nova GPU 驱动 | NVIDIA Turing 架构的开源驱动,分 nova-core 和 nova-drm 两个 crate |
这些子系统的共同特征是什么?与不受信任的外部输入打交道,或者涉及复杂硬件状态的 C 语言\"漏洞沼泽\"。用 Rust 写驱动,直接消除了 NULL 指针解引用、use-after-free、缓冲区溢出这几类在 C 驱动中长期居高不下的漏洞来源。
Greg Kroah-Hartman 在 Rust Week 的演讲中特别提到:每天报告的漏洞大多来自 C 代码中的人为错误。Rust 的编译期安全保证,恰好能堵住这些系统性的缺陷。
工具链的\"第三只脚\":gccrs
说了这么多 Rust 在内核的好处,但有一个实际瓶颈:Linux 内核的构建系统深度依赖 GCC。Rust 官方编译器 rustc 背后是 LLVM,这意味着:
- 交叉编译到 GCC 独占的架构(比如某些嵌入式平台)存在障碍
- 内核的 GCC 插件生态(如 GCC Plugin 安全检测)无法覆盖 Rust 代码
- 只能用\"双工具链\"模式:C 用 GCC,Rust 用 LLVM/rustc
gccrs 项目的目标就是打破这个局面——在 GCC 中实现一个 Rust 前端,让 GCC 也能编译 Rust 代码。
2026 年的 gccrs 进展很快:
- 已经可以编译
corecrate 上的嵌入式 Rust 程序 - 2025 年 7 月实现了 SipHash(来自
core库)的\"真实代码\"编译 - 正在推进
alloccrate 和 Rust-for-Linux crates 的支持,目标是用 GCC 编整个内核 offset_of!()宏——一个 Rust-for-Linux 特有的基础设施——已实现完成- RustConf 2026 上有一场题为 \"用 gccrs 编译 Linux 内核\" 的演讲被接受
需要注意的是,gccrs 还没有完整的借用检查器。项目计划集成 Polonius(Rust 官方的下一代借用检查器),这是关键的最后一个大拼图。
2026 年有望交付的可用版本,意味着什么?意味着未来编译内核不再需要分两套工具链。C 和 Rust 在同一个 GCC 命令行、同一套 Makefile 规则、同一种 .o 输出中完成。
Rust 2026 版本,为内核量身定制
Rust 本身也在回应内核的需求。Rust 2026 edition 的几个旗舰特性——Field Projections、In-place Initialization——直接来自于 Linux 内核社区的诉求。
- Field Projections:解决 Rust 所有权模型下内核常见的内存布局需求
- In-place Initialization:让 Rust 可以在栈上零开销初始化结构体——对内核这种有严格栈大小的场景是关键
- Supertrait auto impl:让 trait 的派生更加自然,减少手写样板代码
此外,Polonius(下一代借用检查器)正在走向稳定化。C++ 互操作性、扩展的 async trait 支持也在推进。
有意思的是,Rust 和 C 的内核开发者正在双向奔赴:C 一侧有 Coccinelle 等静态分析工具做安全扫描,Rust 一侧在向 GCC 工具链靠拢。两种语言不是替代关系,而是互补——未来内核里 C 负责存量,Rust 负责增量和新接入。
小结:从 X11 到内核,逻辑是一样的
回到 yserver 这个项目,它的核心逻辑和内核用 Rust 写驱动一模一样:
C 语言的\"历史包袱\"太重了。对新项目来说,与其在旧代码上修修补补,不如用 Rust 重新定义基础设施的「安全上限」。
当然,yserver 距离\"能用\"和\"好用\"还有很长距离。安全模型要补,Wayland 兼容性要考虑,还有整个 Linux 发行版生态习惯的改变。
但它像一面镜子,反映出开源社区的一个微妙情绪:我们受够了。
受够了 X.Org 的老旧安全、受够了 C 驱动的 NULL 指针、受够了双工具链的割裂。而 Rust——无论你喜不喜欢它——提供了一个现成的、经过工业验证的出路。
最有趣的时代从来不是某样东西完全被替代,而是新老共存的过渡期。我们现在就在这个过渡期里。
━━━ ━━━ ━━━
后记: yserver 曾因大量使用 Claude Code 辅助编码而引发讨论。有人认为这是 AI 写代码的正面样本,有人担心人类可维护性。我的看法是:工具从来不做决定,决定权在写那些代码的人手里。 yserver 能跑起 Xfce 就是最好的证明——任何有效的路线都值得讨论,而不是因为\"AI 写的\"就打标签。
━━━ ━━━ ━━━
*本文参考来源:*
- *GitHub - joske/yserver: https://github.com/joske/yserver, MIT License*
- *ItsFOSS, \"New X11 Server Written in Rust\", 2026*
- *Linuxiac, \"yserver: A Modern X11 Server From Scratch in Rust\", 2026*
- *RustConf 2026 Accepted Talks - \"Compiling the Linux Kernel with gccrs\"*
- *gccrs 项目状态报告, https://github.com/Rust-GCC/gccrs*
- *Greg Kroah-Hartman, Rust Week 2026 主题演讲*
- *Kernel Maintainers Summit 2025 (Tokyo): Rust approved as kernel language*
- *Rust 2026 Edition Roadmap, https://rust-lang.org*
- *Linux 内核 Rust 子系统进展, dev.to & medium.com 专题报道, 2026*
*本文完。欢迎关注 LeisureLinux,获取更多深度技术解读。*
用 Rust 重写的 Bash: Brush v0.4的重大更新
Rust Coreutils 0.7 发布:性能大跃进与架构深层优化
10款比传统 Linux 工具更快的 Rust 替代品深度解读
一个号称比 homebrew 快20倍的 zerobrew ,由 rust 语言编写
常见问题(FAQ)
Q1:这篇文章主要讲什么? 2026 年初,开发者 Jos Dehaes 在 GitHub 上开源了一个名为 yserver 的项目——一个从零开始用 Rust 写的 X11 服务器。版本号已经标到了 1.0。 Q2:还有哪些关键事实? 支持的 X11 扩展列表一长串:RandR、DRI3、GLX、Composite、MIT-SHM......几乎涵盖了现代桌面所需的核心能力。 Q3:有哪些值得注意的细节? 但关键不在于量,而在于正在被 Rust 接管的子系统清单: 子系统 说明————PHY 驱动 网络物理层驱动,最先受益 Null Block 驱动 块设备层样板 Andr… Q4:核心结论是什么? ()` 宏——一个 Rust-for-Linux 特有的基础设施——已实现完成 - RustConf 2026 上有一场题为 \"用 gccrs 编译 Linux 内核\" 的演讲被接受 需要注意的是,gccrs 还没有完整的借用检查器。