Asahi Linux首席开发者发辞职信引热议:Rust和C的混合堪比毒瘤癌症

原创 精选
开发 前端
那些编写 C 和 C++ 代码的人注意到了对 Rust 日益增长的兴趣,并承认需要解决内存安全问题。因此,有许多项目正在进行中,例如 TrapC、FilC、Mini - C 和 Safe C++,旨在使 C 和 C++ 更不容易受到内存漏洞的影响,此外还有像 DARPA 的 TRACTOR 这样的努力,以自动将 C 代码转换为 Rust。

出品 | 51CTO技术栈(微信号:blog51cto)

又过去一年,Linus 的 Rust for Linux项目进展如何了?情况不太好。

试图将 Rust 代码添加到 Linux 内核的开发人员,仍在继续面临来自内核维护者的反对,这些维护者认为:使用多种语言是一种不受欢迎且风险较高的复杂情况。

去年 9 月,当微软软件工程师韦德森·阿尔梅达·菲略(Wedson Almeida Filho)因对“非技术性胡闹”感到沮丧而退出 Rust for Linux 项目时,问题首次浮出水面。

内核维护者的煎熬

别强迫我应付你当下流行的时髦语言。维护多语言项目是件痛苦的事。”

上个月,当提出一个抽象方案以允许用 Rust 编写的设备驱动程序调用主要基于 C 的内核核心 DMA API 时,问题再次引发争议,内核维护者克里斯托夫·赫尔维格(Christoph Hellwig)对此表示反对。

具体来说,提交了一个补丁,允许 Rust 驱动程序使用 DMA API 的 dma_alloc_coherent() C 函数来分配和映射用于直接内存访问的大内存区域。

在给 Linux 内核邮件列表的一封信中,赫尔维格写道:“请不要在 kernel/dma 中使用 Rust 代码。” 值得一提的是,该补丁将代码添加到了 Linux 源代码树的 rust/kernel 部分,而不是 kernel/dma,至少据我们所知是这样。

Rust for Linux 项目的米格尔·奥赫达(Miguel Ojeda)请求赫尔维格提出替代方案。

赫尔维格回应道:“把包装器留在你的代码里,而不是让别人的日子变得痛苦。”他还接着愤愤不平地说,“DMA API 的接口应该保留在可读的 C 代码中,而不是用奇怪的绑定,这样它才能保持可查找性和可维护性。”

赫尔维格似乎希望非 C 驱动程序有自己的私有 C 代码绑定,并且这些抽象不应该单独维护,即使在 rust/kernel 树中也不行。

红帽软件工程师丹尼洛·克鲁姆里奇(Danilo Krummrich)参与了 Rust for Linux 项目,他质疑赫尔维格,赫尔维格明确表示他根本不想处理 Rust 代码。

“别强迫我应付你当下流行的时髦语言,”他写道,“维护多语言项目是我不愿处理的痛苦。如果你想用非 C 语言,无论是汇编还是 Rust,你写到 C 接口,并且自己处理阻抗不匹配的问题,就我而言。”

对此,克鲁姆里奇解释说,Rust for Linux 项目正在创建抽象 C API 的 Rust 代码,供所有 Rust 驱动程序使用,并由 Rust 开发者维护。换句话说,内核的 C 端保持不变,Rust 驱动程序使用对 C 代码的抽象,并且这些抽象由 rust/kernel 中的团队集中维护,这可以说比驱动程序各自拥有独立的 C 绑定要好得多

混合C和Rust是一种癌症

但赫尔维格似乎对单独维护 DMA Rust 抽象层并不感兴趣。他解释说,他不想要另一个维护者:

如果你想因为跨语言代码库而使 Linux 难以维护,那就去做吧这样你必须自己处理,而不是将这种“癌症”扩散到核心子系统。(这里的“癌症”明确指的是跨语言代码库,而不是 Rust 本身,只是为了避开那些喜欢煽风点火的人)。

熟悉技术历史的人可能会记得,2001 年,时任微软首席执行官的史蒂夫·鲍尔默(Steve Ballmer)曾将 Linux 比作癌症。“Linux 是一种癌症,它从知识产权的角度附着在它接触到的一切事物上,”鲍尔默说,那时 Linux 还没有扩散到 Windows 子系统 for Linux。

赫尔维格接着争辩说,让其他人维护 DMA 内存分配器的 Rust 抽象层作为一个单独的组件并不能改善情况,反而会阻碍内核的可维护性:

每一种额外的语言渗入,都会极大地降低内核作为一个集成项目的可维护性。Linux 能够存活这么久的唯一原因是它没有内部边界,而添加另一种语言则完全打破了这一点。你可能不喜欢我的回答,但我将尽我所能阻止这种情况。这不是因为我讨厌 Rust。尽管它不是我最喜欢的编程语言,但它肯定是最好的新语言之一,我鼓励人们在适合的项目中使用它。我绝对不希望它出现在我需要维护的巨大 C 代码库附近。

Ashai Linux 项目负责人赫克托·马丁(Hector Martin)表示,他认为赫尔维格的言论构成了违反行为准则的行为,但他怀疑不会采取任何纪律处分。《注册报》询问马丁是否打算提交行为准则投诉,但我们尚未收到回复。

Linus的态度决定Rust for Linux项目的存亡

马丁认为,Rust for Linux 的开发人员应该忽视赫尔维格的担忧,并提交他们的补丁以供内核负责人林纳斯·托瓦尔兹(Linus Torvalds)批准:

“如果林纳斯没有在这个话题上给出权威性的答案,米格尔和其他 Rust 人员应该在补丁经过审查并准备好后直接合并这个系列,忽略克里斯托夫试图破坏项目的明显企图。如果林纳斯[接受拉取请求],克里斯托夫说什么都不重要。如果林纳斯不[接受],[Rust for Linux]项目基本上就死了,除非林纳斯或克里斯托夫采取行动。其他一切都是在兜圈子。”

有外媒曾询问赫尔维格是否愿意就上面马丁的评论发表意见,他拒绝了。

支持Rust的理由

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

“为了安全性和可靠性,行业应该宣布这些语言已经过时,”鲁西诺维奇说。

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

Linus:有些人不希望 Rust 侵入他们的领域

那些编写 C 和 C++ 代码的人注意到了对 Rust 日益增长的兴趣,并承认需要解决内存安全问题。因此,有许多项目正在进行中,例如 TrapC、FilC、Mini - C 和 Safe C++,旨在使 C 和 C++ 更不容易受到内存漏洞的影响,此外还有像 DARPA 的 TRACTOR 这样的努力,以自动将 C 代码转换为 Rust。

在菲略去年宣布退出 Rust for Linux 之后不久,Linux 领袖林纳斯·托瓦尔兹(Linus)在奥地利维也纳的 Linux 基金会开源峰会上,就 C 和 Rust 开发者之间的摩擦发表了看法。

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

到目前为止,Linux 开发者社区已经了解到 Rust 并不总是受欢迎的。

刚刚!马丁请求辞去Linux内核维护者的职务

最新消息,本周五(2月7日发搞当天),赫克托·马丁已请求辞去 Linux 维护者的职务。

图片图片

“我对内核开发流程或社区管理方式已经没有任何信心了,”他在给 Linux 内核邮件列表的信中写道。

“苹果/ARM 平台的开发将继续在下游进行。如果我以后自己想为任何子树提交一些补丁到上游,我可能会,也可能不会。任何愿意自己为上游提交而战的人都可以这么做。”

参考链接:https://www.theregister.com/2025/02/05/mixing_rust_and_c_linux/?td=rt-3a

责任编辑:武晓燕 来源: 51CTO技术栈
相关推荐

2021-09-07 11:36:52

首席软件官基础设施安全建设

2013-01-18 14:00:59

VMware

2010-02-01 10:11:46

朱骏陈晓薇

2013-05-20 17:00:34

LinuxLinux兼容

2013-03-25 14:10:02

Windows Blu

2014-11-11 14:31:07

应用交付/地铺科技

2009-11-30 15:05:54

2012-01-05 15:52:47

移动游戏开发者

2024-01-10 17:37:17

概率token模型

2025-01-26 16:12:52

PythonRust开发

2015-02-11 14:53:58

微信SDK

2023-09-07 13:33:00

开发者大会

2021-12-21 21:52:05

微信冬至移动应用

2021-03-05 15:58:45

AI 数据人工智能

2013-02-22 15:06:46

WPS陈欧体金山软件

2018-08-16 21:31:58

微信小程序开发者

2015-04-24 15:24:39

搜狗手机输入法

2011-08-25 09:17:24

库克乔布斯苹果

2021-06-18 15:15:51

机器学习Rust框架

2024-03-01 12:03:00

AI模型
点赞
收藏

51CTO技术栈公众号