Linus强推Rust进内核,维护者说这是“癌症“
2026/7/25 0:27:05 网站建设 项目流程

Linus强推Rust进内核,维护者说这是"癌症"

观点:Rust进内核是正确的事,但那些反对的维护者也不是顽固不化——他们反对的不是Rust,而是Linus这种"我不管你们死活"的推进方式。两边都有道理,但我觉得这场争议暴露了Linux内核社区一个更深层的问题:维护者制度已经跟不上了。

今天早上刷到一条热榜:“Linus将不顾反对合并Rust代码,内核维护者无奈强调:不能让’癌症’扩散”

作为一个老嵌入式工程师,我看完也不安起来。

这不是第一次了。去年Rust for Linux从"实验性"转正的时候,社区就吵过一次。但这次不一样——这次是Linus本人下场硬推,而且反对的声音来自在内核社区混了十几年的老维护者

这场架到底在吵什么。


先还原一下现场

事情大概是这样的:

Rust for Linux项目经过5年发展,已经从实验性标签毕业了。Linus在最近的邮件列表中表态,他不顾反对也要合并更多Rust代码进主线

然后几个关键子系统的维护者炸了。有人直接在邮件里说Rust是"癌症",说这会"污染"内核代码库。也有相对温和的反对者,他们的论点是:我们不懂Rust,你让我们怎么review Rust代码?内核的维护者制度建立在"每个维护者都理解每一行代码"的基础上,Rust一进来这个基础就塌了。

两边越吵越凶。Linus的态度是:技术趋势不可阻挡,你们不学Rust就会被淘汰。反对者的态度是:你让我们review我们看不懂的代码,出了问题谁负责?


我站谁?

都不站。说说我的真实感受。

先说我支持Rust这边。

我做嵌入式Linux若干年年。C语言的内存安全问题,我踩过的坑很多。野指针、缓冲区溢出、use-after-free、double free——这些bug我每个都排查过。有些是在开发阶段发现的,有些是产品出货后客户报上来的。

我做过一个安防摄像头项目,因为驱动层一个use-after-free bug,导致设备在客户现场运行12小时必死机。我花了整整两周,用printk+watchdog才定位到问题。改了就一行代码,但这一行代价很大。

如果用Rust写这个驱动,这个bug根本就不会出现。Rust的所有权模型在编译阶段就把这类问题堵死了。所以我从技术角度是完全支持Rust进内核的——安全隐患是真实存在的,而Rust确实能解决其中很大一部分。

但我也不觉得反对者是在无理取闹。

一个子系统的维护者,通常是一个人(或者两三个人)负责review这个子系统所有的patch。他们要对代码的正确性、性能、兼容性负全责。

现在你突然让他们review Rust代码——大部分人没学过Rust,甚至没时间学。他们连语法都看不懂,怎么判断代码对不对?

Rust进入内核带来的核心矛盾:维护者对C代码有深厚理解,但对Rust代码只能做"黑盒审查"

这不是态度问题,是能力问题。一个维护者说:“我连Rust的泛型和trait都还没搞明白,你让我review一个用了复杂泛型的Rust驱动?”——我觉得这是合理诉求。


问题的核心不是Rust,是制度

这场争议让我看到的是:Linux内核的维护者制度,在面对Rust这种"破圈"技术时,暴露出严重的局限性。

传统的维护者制度基于一个前提:所有提交的代码都在每个维护者的能力范围内。C语言内核代码,写了30年C的老手基本都能看懂。但Rust打破了这一点。

Linus说"你们不学Rust就会被淘汰"——这话从技术角度看没错,但从人情角度看,等于对一群把半辈子贡献给内核的人说"你们的经验贬值了"。换你你也不爽。

我认为正确的做法不是"不顾反对合并",而是建立一套过渡机制

  1. 建立Rust代码的专项review团队— 不是每个维护者都要懂Rust,但每个子系统应该配备一个Rust reviewer
  2. Rust和C的接口层要极度简化— 减少FFI边界,降低review难度
  3. 给维护者学习时间— 定一个3年过渡期,这期间Rust代码合并走特批通道

如果Linus能做到这三点,反对声音至少能减少80%。


这对嵌入式工程师意味着什么?

如果你是做嵌入式Linux驱动的,这事跟你有直接关系。

未来3-5年,Rust在内核中的地位只会越来越重要。这不以任何人的意志为转移。你看Android已经强制要求新驱动用Rust写了,Google的力推是实打实的。

但也不要焦虑。经历了好几次"技术革命":从2.4到2.6内核、设备树替换platform_data、devicetree overlay、设备驱动模型重构……每一次都说"不改就会被淘汰",但每次真正被淘汰的都是那些拒绝学习的人,不是暂时不会的人

但,那些内核维护者的反对声,有一部分是真的合理的。Linus不能因为自己懂Rust,就假设所有人都懂。内核社区的核心资产不是代码,是那些有几十年经验的维护者。把这些维护者逼走了,换来的Rust代码谁来长期维护?


总结

Rust进内核是好事,但不是好事就可以不讲方法。Linus的"强行推进"可能会造成比Rust带来的好处更大的伤害——社区分裂。

我的建议:

  • 如果你是内核开发者,去学Rust。不是为了跟上潮流,是为了能看懂别人提交的代码
  • 如果你是维护者,不要抵制Rust。抵制改变的最后都被改变了

这场争论还会持续很久。但有一件事是确定的:代码不会骗人,Rust的安全性优势是实实在在的。反对者与其说"这是癌症",不如说"我需要时间和支持来学习"。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询