Rust 补丁两年零通过,34年开发者煽动网友逼Linus表态,维护者激烈反击:Rust 就是 Linux 的“癌症”!

360影视 2025-02-08 13:46 3

摘要:近日,Linux 社区再次爆发关于是否在内核中使用 Rust 语言的激烈争论。一些开发者试图将 Rust 代码添加到 Linux 内核中,但遭到了一些内核维护人员的强烈反对。他们认为,在内核中引入多种语言会增加复杂性,带来安全风险,并且不受欢迎。

整理|冬梅、明知山

策划|Tina

1 Asahi Linux 首席开发者 Hector Martin 离开内核团队

近日,Linux 社区再次爆发关于是否在内核中使用 Rust 语言的激烈争论。一些开发者试图将 Rust 代码添加到 Linux 内核中,但遭到了一些内核维护人员的强烈反对。他们认为,在内核中引入多种语言会增加复杂性,带来安全风险,并且不受欢迎。

赞成将 Rust 代码添加到 Linux 内核中的代表——Asahi Linux 首席开发者 Hector Martin 因为提交的代码屡屡被拒近日刚刚愤然离职。

Asahi Linux 是一个旨在为苹果 Silicon 芯片(如 M1、M2 等)设备提供 Linux 支持的项目。苹果 Silicon 芯片(如 M1、M2)采用了与传统 x86 架构完全不同的 ARM 架构,这导致 Linux 社区需要重新适配内核和驱动程序。

这个项目的目标就是将 Linux 移植到基于 ARM 架构的苹果硬件上,使用户能够在这些设备上运行 Linux 操作系统。Asahi Linux 项目由开发者 Hector Martin(又名 Marcan)领导,专注于为这些设备提供完整的 Linux 支持,包括 GPU 加速、电源管理和其他硬件功能。

“Asahi”(朝日)在日语中意为“朝阳”或“早晨的太阳”,象征着新的开始和希望。这个名字反映了该项目为苹果 Silicon 设备带来 Linux 支持的创新性和开拓性。

这个项目一直由 Hector Martin 领导,但近日 Hector Martin 在社交媒体发文称自己已经离开了 Asahi Linux 内核团队。

2 发生了什么?

那么,这背后到底发生了什么?事情要从 Hector Martin 与内核维护者 Christoph Hellwig 发生的冲突说起。

而这场冲突似乎已经预埋已久。早在去年 9 月,微软软件工程师 Wedson Almeida Filho 就因不满 Rust for Linux 项目中出现的“非技术性废话”而选择退出。他表示,与持有不同目标的人合作非常困难,这引发了人们对 Rust 在内核中应用前景的担忧。

内核维护者强硬拒绝 Rust 代码进入 Linux

上个月,冲突再次升级。Linux 内核维护者 Christoph Hellwig 再次公开抵制一项允许 Rust 编写的设备驱动程序调用内核核心 DMA API 的提议。该补丁旨在允许 Rust 驱动程序使用 DMA API 的dma_alloc_coherentC 函数来分配和映射大内存区域以进行直接内存访问。然而,Hellwig 坚决拒绝了该补丁。

面对 Hellwig 的阻挠,Martin 敦促 Rust for Linux 团队“在审核并准备就绪后立即合并该系列,而不要理会 Christoph 公然破坏该项目的行为”。

Hellwig 在发给 Linux 内核邮件列表的邮件中写道:“请不要在 kernel/dma 中使用 Rust 代码。”据我们了解,这个补丁将代码添加到了 Linux 源代码树的 rust/kernel,而不是 kernel/dma。

Rust for Linux 项目的 Miguel Ojeda 试图缓和矛盾,他要求 Hellwig 提出替代方案,而不是一味地拒绝。

Hellwig 回复说:“把包装器留在你的代码里,而不是给其他人添麻烦。”他还进一步指出,“DMA API 的接口应该保留在可读的 C 代码中,而不是奇怪的绑定中,这样才能保持它的可搜索性和可维护性。”Hellwig 似乎希望非 C 语言驱动程序有自己的私有 C 代码绑定,并且这些抽象不应单独维护,甚至不应在 rust/kernel 树中维护

红帽软件工程师 Danilo Krummrich 参与了 Rust for Linux 项目,他向 Hellwig 提出质疑,而 Hellwig 则明确表示他不想处理 Rust 代码

他写道:“别硬要我迎合那些当下时髦的编程语言。维护多语言项目是件痛苦的事。如果你想用 C 语言之外的东西,无论是汇编语言还是 Rust,你得自己解决与 C 语言接口的兼容性问题。”

对此,Krummrich 解释说,Rust for Linux 项目正在开发 Rust 代码,抽象出供所有 Rust 驱动程序使用的 C 语言 API,并由 Rust 开发人员集中维护。换句话说,内核的 C 语言部分保持不变,而 Rust 驱动程序通过这些抽象来调用 C 代码,且这些抽象由 rust/kernel 团队集中维护,这或许比每个驱动程序都有自己的独立 C 语言绑定要好。

但 Hellwig 似乎不想单独维护 DMA 的 Rust 抽象层。他解释说,他不想再增加一个维护者:

“如果你打算因为跨语言代码库而让 Linux 变得难以维护,那就在你自己的驱动程序里做吧,而不是把这种“癌症”传播到核心子系统中。(这里的‘癌症’是指跨语言代码库,而不是 Rust 本身,只是为了避开那些喜欢煽风点火的人)。”

学技术历史的人或许应该记得,2001 年,时任微软首席执行官的 Steve Ballmer 曾将 Linux 比作癌症。Ballmer 当时说:“Linux 是一种癌症,它会在知识产权层面附着于它所接触到的一切。”那时 Linux 还没有发展到可以融入 Windows Subsystem for Linux。

Hellwig 继续争辩道,将 DMA 一致性分配器的 Rust 抽象层单独交给其他人维护,并不能改善现状,反而会削弱内核的可维护性:

“每增加一点其他语言的内容,都会极大地降低内核的可维护性。Linux 之所以能够存活这么久,是因为它没有内部界限,而引入另一种语言则会完全破坏这一点。你可能不喜欢我的回答,但我会尽我所能阻止这种情况。这并不是因为我讨厌 Rust。尽管它不是我最喜欢的编程语言,但肯定是最好的新语言之一,我鼓励人们在适合的项目中使用它。我只是不希望它出现在我需要维护的庞大的 C 语言代码库里。”

面对 Hellwig 一再的强硬拒绝之词,Ashai Linux 项目负责人 Hector Martin 坐不住了。Hector Martin 向外界公开表示,他认为 Hellwig 的言论违反了行为准则,但他怀疑是否会真的采取纪律处分。

Martin 认为,Rust for Linux 的开发人员应该忽略 Hellwig 的担忧,并将补丁提交给内核负责人 Linus Torvalds 评审:

“如果 Linus 不在这个话题上发表权威意见,Miguel 和其他 Rust 团队成员应该在补丁经过评审后直接合并,无视 Christoph 试图破坏项目的企图。如果 Linus 接受了这个拉取请求,Christoph 说什么都不重要。如果 Linus 不接受,Rust for Linux 项目基本上就死了,除非 Linus 或 Christoph 采取下一步的行动。其他的都是在兜圈子。”

针对这一纠纷,外媒 The Register 曾询问 Hellwig 是否愿意就本文发表评论,他拒绝了。我们还曾向 Linux 基金会研究员 Greg Kroah-Hartman 征求意见,但他尚未回复。

Linus 大佬加入“纠纷”,发难 Hector Martin

这次争议再次暴露了 Linux 社区在 Rust 应用问题上的分歧。一部分开发者积极拥抱 Rust,认为它可以提高内核的安全性、性能和开发效率;而另一部分开发者则坚持使用 C 语言,对 Rust 持谨慎态度。

在这种分歧下,作为 Linux 社区的核心人员,Linus Torvalds 对于 Rust for Linux 的态度一直备受关注。偏偏,这位敢怒敢言的大佬也参与了 Hellwig 和 Martin 的这场纷争中。

2 月 6 日,Linus 向 Martin 发送了一封邮件,邮件中隐晦地指责了 Martin“煽动”网友情绪——在社交媒体上争取支持。Linus 在邮件中写道:

你能否接受这个事实:也许问题就出在你身上?

你以为自己知道得更多。但当前的流程是有效的。

(流程)确实存在问题,但问题就是生活的事实。没有完美的事物。

然而,我要说的是,社交媒体的攻击让我不想要和你的方法有任何瓜葛。

因为如果我们在内核开发模型中遇到问题,那么社交媒体肯定不是解决方案。同样,它肯定也不是政治分歧的解决方案。

技术补丁和讨论很重要。社交媒体宣传——婉拒了哈

谢谢。

看到 Linus 发来的邮件,Martin 也倍感委屈。

Martin 回复邮件称,之所以将这些争论在网上公布出来,是因为自己已经别无选择。

如果在社交媒体上羞辱别人没用,那告诉我什么有用?

因为我已经没招了。

我真心希望技术补丁和讨论能成为真正重要的东西,但我觉得我们在这方面遇到了困难,至少在内核开发过程的某些环节中是这样。

没有人会把这句话理解为支持在社交媒体上辱骂别人作为“解决方案”。

Martin 提到自己从 1991 年开始参与 Linux 开发,见证了 Linux 的成长,但现在他对一些现状感到遗憾。他最近领导了一个旨在为 Linux 社区提供通用安全模型的倡议,但两年内提交了四个补丁系列,却没有一行代码被审查过。尽管他们非常谨慎地提交代码,并尝试参与技术讨论,但几乎没有得到任何有意义的反馈或交流。

我是从 1991 年 12 月开始参与 Linux 开发的,对这个问题的看法也基于此。1995 年,我在麻省理工学院由 Stallman 赞助的自由软件会议上第一次见到你(这里指 Linus)和 Tove。当时我告诉你,北达科他州的癌症患者因为我们在 Linux 上的工作以及优化癌症中心的医疗流程,能够享受更多与家人在一起的时光。

90 年代,RedHat 请我在多个会议上演讲,谈论 Linux 将如何主导企业计算,因为这是技术人员做“正确”技术的事情。

我现在看到的一些事情让我后悔说了那些话。

可能我职业生涯的最后一项技术贡献是领导一个为 Linux 社区提供通用安全模型架构的倡议。这不是要取代或替换当前正在做的任何事情,而是为了在这个机器学习和建模的时代,为开发和定制工作负载模型提供一个灵活的替代方案。

两年内提交了四个补丁系列,截至昨天,没有一行代码被审查过。

这个贡献只涉及它自己的目录,除非人们选择在其控制下执行工作负载,否则它不会做任何事情。

我们在提交时非常小心,以免浪费维护者的时间。我们甚至等了两个月,没有任何消息,才发送了一封询问其中一份提案状态的邮件。我们被告知,相当简短地说,如果我们曾经询问过它们,我们发送的任何东西都可能被忽略。

我们尝试参与技术讨论,可能是过度参与,试图解释我们为什么以及如何选择实施我们的提案。包括来自运行生产 IT 系统的顾问的意见,他们认为需要更好的方法来满足他们的安全需求。

从来没有进行过任何相关的技术交流。讨论的内容是,我们已经决定以某种方式做事,没有讨论,如果你不喜欢,你真的应该考虑做一些其他事情,而不是提交给上游 Linux。

Martin 认为,当前的内核开发模式存在一些问题,尤其是缺乏对新思想的开放和尊重。虽然 Linux 是操作系统领域创新的重要平台,但如果继续忽视贡献者的努力,可能会扼杀创新。他还提到,行为准则虽然存在,但在实际执行中似乎并没有起到应有的作用。

如果大型科技公司能雇佣到“无所不知”的专家来担任内核子系统的维护者,这种模型会很好用。但现实中,这样的人非常稀缺。如果没有足够多的高水平维护者,创新可能会被扼杀,而 Linux 是操作系统领域唯一能真正推动创新的地方。

(但项目管理仍然存在一些问题。)从项目管理角度看,目前还没有明确的解决方案。科技行业从未遇到过如此复杂的挑战。传统的开源“分叉”模式(即通过分叉项目来解决问题)在 Linux 这种规模的项目上行不通。

虽然已经有了行为准则(比如禁止辱骂和人身攻击),但如果想有效推进项目,维护者们还需要一套更明确的行为标准。而这些,Jim,你听见了吗?

尊重他人和开放接纳新思想是项目顺利运行的润滑剂。但遗憾的是,这种态度在科技行业中非常罕见,就像“无所不知”的专家一样稀缺。

最后,Hector 向 Linus 及其家人致以祝福,并感叹这段经历让他对行业现状有了更深的思考。他希望未来能够找到一种更有效的方式,让技术讨论和创新能够顺利进行。

Linus 也无法确定 Rust for Linux 的未来

2022 年 10 月 3 日,Linux 内核增加了对 Rust 代码的支持。此前不久,微软 Azure 首席技术官 Mark Russinovich 曾主张新的编程项目应该用 Rust 而不是 C 或 C++ 来编写。

Russinovich 说:“为了安全性和可靠性,行业应该宣布这些语言已经过时。”

他的理由是,Rust 代码可以避免困扰 C 和 C++ 代码的内存安全漏洞(例如缓冲区溢出),而这些漏洞是大型项目中大多数严重漏洞的根源。这种观点随后得到了世界各地政府安全机构的支持。

C 和 C++ 开发者注意到人们对 Rust 兴趣的增长,并承认需要解决内存安全问题。因此,目前有许多项目正在进行中,例如 TrapC、FilC、Mini-C 和 Safe C++,旨在增强 C 和 C++ 对内存漏洞的抵抗能力。此外还有 DARPA 的 TRACTOR 项目,目标是自动将 C 代码转换为 Rust。

在 Filho 去年宣布退出 Rust for Linux 项目后不久,Linux 负责人 Linus 在奥地利维也纳的 Linux 基金会开源峰会上谈到了 C 和 Rust 开发人员之间存在的摩擦。

Linus 说:“显然,有些人就是不喜欢 Rust 这个概念,也不希望 Rust 进入他们的领域。甚至有人在谈论 Rust 集成是一个失败……我们已经做了两年,现在说这个还为时过早,但我认为,即使它最终会失败——但我不认为它会——这也是学习的一部分。”

到目前为止,Linux 开发者社区已经清楚地意识到,Rust 并不总是受欢迎的。

2 月 3 日,Hector Martin 要求移除其 Linux 维护者的身份。

他在发给 Linux 内核邮件列表的邮件中写道:“我对内核开发流程或社区管理方式已经失去了信心。

“苹果 /ARM 平台的开发将继续在下游进行。如果我以后自己想为某个子代码树提交一些补丁到上游,或许我会,或许不会。任何愿意自己去争取上游合并的人都可以去做。”

3 网友怎么看?

这次争议不仅阻碍了 Rust 代码进入 Linux 内核的进程,也加剧了社区内部的对立情绪。Rust for Linux 项目的未来发展面临诸多不确定性。

Martain 的离职在社交媒体上引发了激烈讨论。在 Hacker News 上,有位用户的对于该事件的评论获得了诸多网友的赞同。

“简单来说,Linus Torvalds 在处理 Rust 问题上表现得很犹豫,没有明确表态支持或反对,导致 Linux 社区内部产生了信任危机。他的模糊态度让问题变得更糟,尤其是他平时对 C++ 等技术的立场都很明确,但这次却一反常态。

Rust-for-Linux(R4L)项目早就该有个明确的结果了,但经过几年的开发,它的未来依然不明朗。Linus 没有积极推动共识,反而坐视团队内部争吵,最后把责任推给了 Martin。这种做法让人失望。

他对 Martin 的批评其实暗示了他对 Rust 的不看好,但他始终没有公开明确表态。可能是因为他担心会引起更大的争议。不过,现在可能是他该直接表态的时候了。

如果 Linus 从一开始就果断地说‘不’,很多时间和精力(尤其是 Martin 的)都可以省下来,这场闹剧也能避免。”

甚至有人认为,Linus 对 Martin 的斥责已经表明了他对 Rust 的态度——可能永远不会真正支持 Rust。

“Linus 对 Martin 的批评其实暗示了他对 Rust 的态度——他可能永远不会真正支持 Rust。不过,这件事更多和 Hector 的行为有关,而不是 Rust 本身。Hector 威胁要通过社交媒体曝光别人,这种行为是非常不好的。

他只是一个长期贡献者,可能有点粗鲁,但并不是什么十恶不赦的人。

另外,关于 Rust 的讨论并不是简单的“支持”或“反对”问题。没人完全反对在内核的某些部分使用 Rust,但具体在哪些部分用、怎么用、用在哪里,这些才是大家争论的焦点。Linus 对这类分歧一向比较放任,没有强行推动共识。”

有人怀念 Hector 所做的贡献,并认可他对于 Rust for Linux 未来悲惨状况的预判。

“从旁观者的角度来看,有时你需要有人站在你这边,成为改变现状的倡导者。我会怀念 Hector 的贡献,并且认为他对 Linux 内核开发过程的悲惨状况的判断基本上是正确的。如果这个社区对变革更加开放,那么像 Hector 这样的人就能够创新,而不会产生怨恨”

事实上,网友认为,作为 Linux 社区中最有话语权的关键人物,Linus 应该公开声明不应该对 Rust for Linux 贡献者进行攻击。

“我认为他有义务公开声明这种对 Rust for Linux 贡献者的攻击是不可接受的,并授权未来在类似情况下的补丁尽管收到 NACK 但仍继续前进,特别是考虑到补丁作者已在邮件列表中明确寻求他和 GKH 的处理方式。”

尽管 Rust for Linux 团队在技术上取得了显著进展,但如何与内核维护者达成共识仍是该项目面临的最大挑战。随着争论的持续,Linux 社区将不得不权衡 Rust 带来的潜在好处与维护多语言内核的复杂性。这场争论的结果可能会对 Linux 内核的未来发展产生深远影响。

参考链接:

https://news.ycombinator.com/item?id=42972062

https://lore.kernel.org/rust-for-linux/20250207121638.GA7356@wind.enjellic.com/

今日好文推荐

👉“李飞飞团队50 美元炼出 DeepSeek R1”被质疑,上海交大本科生新“低成本推理”或成新宠!

👉国产 DeepSeek V3 被秒成"前浪"?谷歌开放最强 Gemini 2.0 全家桶:速度快60倍,上下文还长16倍!

👉苹果开始“拯救”Swift ?突然开源百万 App 在用的 Swift Build,迈出推动跨平台一致性的关键一步

👉OpenAI“背水一战”:紧急上线Deep Research,比DeepSeek强三倍?网友直呼AI开源大战要来了!

新春到,福气到

百万拼手气红包🧧同时到

新的一年,极客时间祝您

好巳发生,事事顺

来抽个拼手气红包,博个好彩头

0 门槛、100% 到手、即领即用

来源:InfoQ

相关推荐