C、Rust混合用被批为Linux的“癌症”,Rust开发者逼Linus“站队”失败后愤然辞职

C语言与CPP编程 2025-02-10 09:01

推荐关注↓

整理 | 屠敏 出品 | CSDN(ID:CSDNnews)

自 Linux 内核长期以来由 C 语言构建起步,直到 Rust 这股新兴力量悄然涌入,编程语言之争这把“火”,现如今不仅“烧”到了全球主流开源操作系统 Linux 的中心,还将 Linux 原有的维护者与 Rust 开发者推向了前所未有的对立面。

在一些 Rust 开发者看来,Rust 是安全语言的象征,在 Linux 内核中引入此语言无疑可以提高系统的性能、安全性。

然而,这一说法并未得到 Linux 内核维护者的认可,他们反而担心,多种语言的使用会让这个超级开源项目的维护变得更加困难,其甚至直言——Rust 与 C 语言的混合代码在 Linux 中就是“癌症”。

争论之下,Linux 之父 Linus 出面回应、核心开发者愤而辞职选择从此视而不见听而不闻...

Linux 内核维护者 vs Rust 开发者的口舌之争

其实 Rust for Linux 项目推进起来已有几年的时间,此前在 Linux 6.13 内核的“char/misc”模块合并中,新增了对 Rust 的支持,使得开发者能够使用 Rust 编写 misc 驱动程序,这是一些良好的开端。

不过,期间也出过一些“意外”,如去年 9 月,微软软件工程师也是 Rust for Linux 的核心维护者 Wedson Almeida Filho 官宣自己退出 Rust for Linux 这一项目,给出的理由是——已经疲于应对社区内越来越多与技术毫无关系的“废话”了,但好在此后项目仍在持续推进。

图片

至于此次如文章伊始所述的 Linux 内核维护者和 Rust 开发者公然“互怼”又是为哪般?

具体看来,还是因为一场技术争议引发的口舌之争。

就在上个月,有人在 Linux 内核中带来了一个提案——想让用 Rust 写的设备驱动能够调用 Linux 内核中用 C 写的一个重要功能(DMA)。

具体来说,在 Linux 系统中,设备(比如网卡、显卡等)有时需要直接访问计算机的内存,而不经过 CPU 的干预。这种方式叫做直接内存访问(DMA, Direct Memory Access)。为了让设备能够使用 DMA,操作系统需要做两件事:

  1. 分配一块内存:这块内存是设备可以直接访问的。

  2. 映射这块内存:告诉设备这块内存的物理地址,这样设备才知道去哪里读写数据。

在 Linux 内核中,有一个专门的 API 叫做 DMA API,它提供了一些函数来帮助完成这些任务。其中一个重要的函数是 dma_alloc_coherent(),它的作用是:

  • 分配一块内存,并且保证这块内存是“连续的”(设备通常需要连续的内存块)。

  • 同时,它会把这块内存的物理地址映射给设备,这样设备就可以直接访问这块内存了。

基于此,有人在 Linux 内核中提交了一个补丁,目的是让 Rust 编写的驱动程序也能使用这个 dma_alloc_coherent() 函数,这样 Rust 驱动程序也能像 C 语言编写的驱动程序一样,使用 Linux 内核提供的 DMA 功能,从而更高效地处理设备与内存之间的数据传输。

然而,这个提议遭到了 Linux 内核维护者 Christoph Hellwig 的强烈反对。Hellwig 明确表示,他不希望在内核的 DMA 部分看到 Rust 代码。

实际上,这个补丁只是将代码添加到了一个不同的地方(rust/kernel),而不是直接改动 DMA (kernel/dma)部分。

Hellwig 的拒绝让很多 Rust 开发者们感到郁闷,对此,Rust for Linux 项目的首席开发者 Miguel Ojeda 出面请求 Hellwig 给出一个替代方案。

Hellwig 回应道:“把包装器放在你们自己的代码里,而不是让别人为你们的事情受苦。”

因为是在邮件列表的回应,所有开发者都可以看到,对此,Red Hat 的软件工程师 Danilo Krummrich 直接质问 Hellwig,「你们自己的代码是什么意思?是不是在每个驱动程序中都重复了?否则,rust/kernel/dma.rs 看起来合理,对吧?」

Hellwig 接着表示:“DMA API 的接口应该保持在可读的 C 代码中,而不是用奇怪的绑定来实现,这样它才可以被 grep 搜索并且更易于维护。”

此外,Hellwig 也明确表示他根本不愿意处理 Rust 代码。他写道:“不要强迫我处理你们这门时髦的语言。维护多语言的项目很痛苦,我没有兴趣去处理。如果你们想用的不是 C 语言,像汇编语言或 Rust,你们自己写 C 接口,自己解决语言不匹配的问题,反正我不管。

Red Hat 的软件工程师 Danilo Krummrich 解释称,并没有人要求你处理或者维护这段 Rust 代码。Rust for Linux 项目正在创建 Rust 代码,它将 C API 抽象化,供所有 Rust 驱动程序使用,并由 Rust 开发者来维护。

换句话说,内核中的 C 代码保持不变,而 Rust 驱动程序通过抽象层来使用这些 C 代码,这些抽象层由 rust/kernel 中的团队集中维护,整体上比每个驱动程序自己编写 C 语言绑定要好。

但 Hellwig 似乎不愿意让 DMA 的 Rust 抽象层单独维护,甚至不应该在 Linux 源代码树 rust/kernel 中维护。他怒斥道:

“如果你们想让 Linux 因为跨语言的代码库变得无法维护,那就让你们的驱动自己去做吧,而不是把这种‘癌症’传播到核心子系统中。(这里说的‘癌症’显然是指跨语言的代码库,而不是 Rust 本身,只是为了避免被激起争议)”

此话一说,这让人想起 2001 年,前微软 CEO 史蒂夫·鲍尔默曾将 Linux 比作癌症。他当时说:“Linux 就像一种癌症,它会在知识产权的层面附着到它接触的每一个东西。”那时 Linux 还没有扩展到 Windows 子系统中。而现如今 Windows 开始深度集成 Linux 子系统,微软深度拥抱了开源。

Hellwig 继续论述说,让其他人单独维护 Rust 的抽象层来处理 DMA 的内存分配器,并不会改善问题,反而会妨碍内核的可维护性:

“每引入一种新语言,就会大大降低内核作为一个整体项目的可维护性。Linux 之所以能生存这么久,是因为它没有内部边界,而引入另一种语言完全破坏了这一点。你可能不喜欢我这么说,但我会尽全力阻止这种做法。这不是因为我讨厌Rust。虽然它不是我最喜欢的语言,但它绝对是新兴语言中最好的之一,我鼓励人们在适合的情况下用于新项目。我只是不希望它出现在我需要维护的大型 C 语言代码库中。”

几轮辩论之后,Red Hat 的软件工程师 Danilo Krummrich 认为:

Hellwig 作为一名维护者,他的一些举措超出了维护者的工作范围,即:

根据个人喜好,任意限制某个实体对公共内核 API 的使用。

为此,他和 Asahi Linux 项目负责人 Hector Martin 纷纷请求 Linux 之父 Linus Torvalds 出面解决这一问题。

Asahi Linux 项目负责人 Hector Martin 在邮件中写道:

我的看法:如果 Linus 没有在这个讨论中给出权威的答复,Miguel 和其他 Rust 的开发者应该在代码经过审查并准备好后,直接合并这部分内容,不必理会 Christoph Hellwig 明显想要破坏项目的行为。

如果 Linus 拒绝合并,那么 Christoph 说的就无关紧要了。

如果 Linus 不合并,R4L 项目基本上就会死掉,除非 Linus 或 Christoph 采取行动。其他的讨论只是绕圈子。

Rust 开发者们:请不要浪费时间和精力去纠结这种戏剧性的事情,这不值得。要么 Linus 喜欢,要么他不喜欢。其他的都是少数破坏者维护者故意制造的干扰,他们想通过打击你们的士气来让你们放弃,因为他们知道自己终究会在历史中处于失败的一方。旧的固守阵地的维护者再怎么破坏,也无法阻止世界向内存安全语言的方向发展。

顺便说一句,我认为 Christoph 的“癌症”言论足以成为违反行为规范的理由,但我怀疑不会有任何相应的处理。


Linus 回怼:我根本不想参与你的社交媒体舆论战

殊不知,Hector Martin 的这一则邮件直接将 Linus 推到需要做出二选一决策的”边缘“。

面对 Hector Martin 呼吁 Linus “发表权威回答”以解决设备驱动的僵局,并支持通过“社交媒体羞辱”来反击 Linux 维护者对 Rust 代码的敌视,Linus 对此方法予以否定。

Linus 极其礼貌但毫不客气地回应 Martin

如果在社交媒体上羞辱他人没有效果,那就告诉我,还有什么方法有效,因为我已经没有其他办法了。

你能不能接受一个事实,也许问题出在你自己身上?

你以为你知道得更好,但目前的流程是有效的。

它有问题,但问题是生活的一部分。没有完美的东西。

不过,我必须说,社交媒体的“围攻”让我根本不想再和你们的做法有任何关系。

因为如果我们在内核开发模式中有问题,那么社交媒体绝对不是解决方案。就像它根本不是政治问题的解决方案一样。

技术补丁和讨论才是关键。社交媒体围攻——谢谢,但不需要。


Asahi Linux 首席开发者 Hector Martin 辞去上游 Apple Sillicon 维护者职务

在得到 Linus 的回复之后,Hector Martin 愤而决定辞去 Apple Silicon 代码的上游维护者职务。

Hector Martin 在最新的一次补丁中写道:

“我已经不再对内核开发过程或社区管理方式抱有任何信心。

Apple/ARM 平台的开发将继续在下游进行。如果未来我有兴趣向上游提交一些补丁,不管是针对哪个子树,我可能会,也可能不会。任何愿意自己为上游提交做出努力的人都可以去做。”

Hector Martin 看起来似乎不打算再直接为上游 Linux内核贡献代码,而是只专注于 Asahi Linux 的下游代码。

相信使用 macOS 系统的开发者对于 Asahi Linux 这个项目也并不陌生,它是一个旨在将 Linux 移植到搭载 Apple Sillicon 芯片上 Mac 的计划,使苹果的系统可以运行 macOS 以外的操作系统。

现下随着 Hector Martin 辞职,其他人可能会接手处理补丁,以努力将其提交到上游。Asahi Linux 的开发者兼共同维护者 Sven Peter 听闻这一消息后出面表示:“给我几天时间来弄清楚我们该怎么做。我认为我们可以继续推动该树的前进。”

但无论如何,这些关于上游 Linux 内核邮件列表的争论并不利于推动 Apple Silicon 的支持,尤其是对于那些希望在 Apple Mac 上看到 Linux 的用户,而不仅仅是在 Asahi Linux 的框架下。


Linux 中的 Rust、C 之争依然在持续

社区的动荡必定会影响到技术的稳定发展。回看 Linux 内核自 2022 年开始整合 Rust 代码,但它仍然是一个以 C 为主的代码库。许多 C 语言程序员明确表示,他们不会因为 Rust 的崛起而改变自己的方式。而 Rust 的忠实使用者则认为,Rust 代码可以避免 C 和 C++ 中常见的内存安全问题(如缓冲区溢出),这些问题构成了大部分大规模项目中的严重漏洞。

在引入 Rust 的过程中,C 和 Rust 开发者之间的摩擦也是不可避免的,Linux 的创始人 Linus Torvalds 也对此有深刻认识,他曾在 Linux 基金会的开放源代码峰会上提到过这一点。

Torvalds 说:“显然,有些人就是不喜欢 Rust,也不希望 Rust 侵犯他们的领域。有人甚至在说 Rust 的整合是失败的……我们做这个已经好几年了,现在说失败还太早,但即使它最终失败了——虽然我不认为会失败——那也是一种学习的方式。”

此外,他还指出,目前内核中的任何功能都不依赖 Rust,短期内也不会依赖。重要的是向前推进,因此开发者们应该“全速前进”,暂时不要太在意这些问题。即便现在细节还不完善,只要能让功能正常运行就足够了。一旦用户开始依赖 Rust 代码,才需要更细致地处理这些问题。但现在,如果开发者因为过于谨慎而裹足不前,反而会让项目受挫。

只是在此次争论中,Linus 的处理方式让不少开发者觉得有些不满:

Rust 问题暴露了 Torvalds 作为领导者的一次罕见失职。与其果断地说“不是,绝对不行”或者“是的,执行”,他在 Rust 的问题上一直模棱两可。鉴于 Linux 社区中有相当一部分(且非常 vocal)的人对他的决定产生了信任危机,这种犹豫不决的态度反而起到了适得其反的效果。而且 Linus 没有明确立场,实在是有些反常(比如我们都知道他对 C++ 的立场)。

作为一个试点项目,R4L 应该早就毕业或者结束了。但经过多年积极开发,它的现状依旧不明朗。Linus 并没有采取措施让大家达成共识,而是选择一直坐视不管,看着下属们相互争斗,最后还将责任推给 Martin,实在是欠妥。

可以说,他对 Martin 的训斥明显表明了他永远不会偏袒 Rust,但他并没有明确说出来。也许他知道应该表态,但又担心会引发一场风暴。也许现在是时候撕掉创可贴了。

再说一次,所有这些本来都可以避免,如果他当初能坚定地站队,不论是赞成还是反对。想象一下,如果 Linus 直接说“不要,保持在下游”,能节省多少时间和精力,甚至是仅仅 Martin 的时间。

对此,你怎么看?

来源:

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

https://www.phoronix.com/news/Asahi-Linux-Lead-No-Upstream

https://www.theregister.com/2025/02/05/mixing_rust_and_c_linux/

https://lore.kernel.org/lkml/Z5qeoqRZKjiR1YAD@pollux/

图片

推荐阅读  点击标题可跳转

1、C++训练营,来了!

2、HarmonyOS 学习资料分享(无套路免费分享)

我组建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起进群交流。

图片

欢迎你添加我的微信,我拉你进技术交流群。此外,我也会经常在微信上分享一些计算机学习经验以及工作体验,还有一些内推机会

图片

加个微信,打开另一扇窗

感谢你的分享,点赞,在看三  图片

C语言与CPP编程 C语言/C++开发,C语言/C++基础知识,C语言/C++学习路线,C语言/C++进阶,数据结构;算法;python;计算机基础等
评论 (0)
  • 文/陈昊编辑/cc孙聪颖‍2025 年,作为中国实施制造强国战略第一个十年计划的关键里程碑,被赋予了极为重大的意义。两会政府工作报告清晰且坚定地指出,要全力加速新质生产力的发展进程,推动传统产业全方位向高端化、智能化与绿色化转型。基于此,有代表敏锐提议,中国制造应从前沿技术的应用切入,逐步拓展至产业生态的构建,最终延伸到提升用户体验的维度,打出独树一帜、具有鲜明特色的发展牌。正是在这样至关重要的时代背景之下,于 AWE 2025(中国家电及消费电子博览会)这一备受瞩目的舞台上,高端厨房的中国方案
    华尔街科技眼 2025-03-25 16:10 82浏览
  • 家电,在人们的日常生活中扮演着不可或缺的角色,也是提升人们幸福感的重要组成部分,那你了解家电的发展史吗?#70年代结婚流行“四大件”:手表、自行车、缝纫机,收音机,合成“三转一响”。#80年代随着改革开放的深化,中国经济开始飞速发展,黑白电视机、冰箱、洗衣机这“新三件”,成为了人们对生活的新诉求。#90年代彩电、冰箱、全自动洗衣机开始大量进入普通家庭,快速全面普及,90年代末,家电产品实现了从奢侈品到必需品的转变。#00年代至今00年代,随着人们追求高品质生活的愿望,常用的电视机、洗衣机等已经远
    启英AI平台 2025-03-25 14:12 89浏览
  • 案例概况在丹麦哥本哈根,西门子工程师们成功完成了一项高安全设施的数据集成项目。他们利用宏集Cogent DataHub软件,将高安全设施内的设备和仪器与远程监控位置连接起来,让技术人员能够在不违反安全规定、不引入未经授权人员的情况下,远程操作所需设备。突破OPC 服务器的远程连接难题该项目最初看似是一个常规的 OPC 应用:目标是将高安全性设施中的冷水机(chiller)设备及其 OPC DA 服务器,与远程监控站的两套 SCADA 系统(作为 OPC DA 客户端)连接起来。然而,在实际实施过
    宏集科技 2025-03-27 13:20 109浏览
  • 在嵌入式语音系统的开发过程中,广州唯创电子推出的WT588系列语音芯片凭借其优异的音质表现和灵活的编程特性,广泛应用于智能终端、工业控制、消费电子等领域。作为该系列芯片的关键状态指示信号,BUSY引脚的设计处理直接影响着系统交互的可靠性和功能拓展性。本文将从电路原理、应用场景、设计策略三个维度,深入解析BUSY引脚的技术特性及其工程实践要点。一、BUSY引脚工作原理与信号特性1.1 电气参数电平标准:输出3.3V TTL电平(与VDD同源)驱动能力:典型值±8mA(可直接驱动LED)响应延迟:语
    广州唯创电子 2025-03-26 09:26 198浏览
  • 在智能语音产品的开发过程中,麦克风阵列的选型直接决定了用户体验的优劣。广州唯创电子提供的单麦克风与双麦克风解决方案,为不同场景下的语音交互需求提供了灵活选择。本文将深入解析两种方案的性能差异、适用场景及工程实现要点,为开发者提供系统化的设计决策依据。一、基础参数对比分析维度单麦克风方案双麦克风方案BOM成本¥1.2-2.5元¥4.8-6.5元信噪比(1m)58-62dB65-68dB拾音角度全向360°波束成形±30°功耗8mW@3.3V15mW@3.3V典型响应延迟120ms80ms二、技术原
    广州唯创电子 2025-03-27 09:23 151浏览
  • ​2025年3月27日​,贞光科技授权代理品牌紫光同芯正式发布新一代汽车安全芯片T97-415E。作为T97-315E的迭代升级产品,该芯片以大容量存储、全球化合规认证、双SPI接口协同为核心突破,直击智能网联汽车"多场景安全并行"与"出口合规"两大行业痛点,助力车企抢占智能驾驶与全球化市场双赛道。行业趋势锚定:三大升级回应智能化浪潮1. 大容量存储:破解车联网多任务瓶颈随着​车机功能泛在化​(数字钥匙、OTA、T-BOX等安全服务集成),传统安全芯片面临存储资源挤占难题。T97-415E创新性
    贞光科技 2025-03-27 13:50 148浏览
  • 在电子设计中,电磁兼容性(EMC)是确保设备既能抵御外部电磁干扰(EMI),又不会对自身或周围环境产生过量电磁辐射的关键。电容器、电感和磁珠作为三大核心元件,通过不同的机制协同作用,有效抑制电磁干扰。以下是其原理和应用场景的详细解析:1. 电容器:高频噪声的“吸尘器”作用原理:电容器通过“通高频、阻低频”的特性,为高频噪声提供低阻抗路径到地,形成滤波效果。例如,在电源和地之间并联电容,可吸收电源中的高频纹波和瞬态干扰。关键应用场景:电源去耦:在IC电源引脚附近放置0.1μF陶瓷电容,滤除数字电路
    时源芯微 2025-03-27 11:19 146浏览
  • WT588F02B是广州唯创电子推出的一款高性能语音芯片,广泛应用于智能家电、安防设备、玩具等领域。然而,在实际开发中,用户可能会遇到烧录失败的问题,导致项目进度受阻。本文将从下载连线、文件容量、线路长度三大核心因素出发,深入分析烧录失败的原因并提供系统化的解决方案。一、检查下载器与芯片的物理连接问题表现烧录时提示"连接超时"或"设备未响应",或烧录进度条卡顿后报错。原因解析接口错位:WT588F02B采用SPI/UART双模通信,若下载器引脚定义与芯片引脚未严格对应(如TXD/RXD交叉错误)
    广州唯创电子 2025-03-26 09:05 146浏览
  • 在当今竞争激烈的工业环境中,效率和响应速度已成为企业制胜的关键。为了满足这一需求,我们隆重推出宏集Panorama COOX,这是Panorama Suite中首款集成的制造执行系统(MES)产品。这一创新产品将Panorama平台升级为全面的工业4.0解决方案,融合了工业SCADA和MES技术的双重优势,帮助企业实现生产效率和运营能力的全面提升。深度融合SCADA与MES,开启工业新纪元宏集Panorama COOX的诞生,源于我们对创新和卓越运营的不懈追求。通过战略性收购法国知名MES领域专
    宏集科技 2025-03-27 13:22 179浏览
  • 汽车导航系统市场及应用环境参照调研机构GII的研究报告中的市场预测,全球汽车导航系统市场预计将于 2030年达到472亿美元的市场规模,而2024年至2030年的年复合成长率则为可观的6.7%。汽车导航系统无疑已成为智能汽车不可或缺的重要功能之一。随着人们在日常生活中对汽车导航功能的日渐依赖,一旦出现定位不准确或地图错误等问题,就可能导致车主开错路线,平白浪费更多行车时间,不仅造成行车不便,甚或可能引发交通事故的发生。有鉴于此,如果想要提供消费者完善的使用者体验,在车辆开发阶段便针对汽车导航功能
    百佳泰测试实验室 2025-03-27 14:51 186浏览
  • 长期以来,智能家居对于大众家庭而言就像空中楼阁一般,华而不实,更有甚者,还将智能家居认定为资本家的营销游戏。商家们举着“智慧家居、智慧办公”的口号,将原本价格亲民、能用几十年的家电器具包装成为了高档商品,而消费者们最终得到的却是家居设备之间缺乏互操作性、不同品牌生态之间互不兼容的碎片化体验。这种早期的生态割裂现象致使消费者们对智能家居兴趣缺失,也造就了“智能家居无用论”的刻板印象。然而,自Matter协议发布之后,“命运的齿轮”开始转动,智能家居中的生态割裂现象与品牌生态之间的隔阂正被基于IP架
    华普微HOPERF 2025-03-27 09:46 109浏览
  • 六西格玛首先是作为一个量度质量水平的指标,它代表了近乎完美的质量的水平。如果你每天都吃一个苹果,有一间水果店的老板跟你说,他们所卖的苹果,质量达到六西格玛水平,换言之,他们每卖一百万个苹果,只会有3.4个是坏的。你算了一下,发现你如果要从这个店里买到一个坏苹果,需要805年。你会还会选择其他店吗?首先发明六西格玛这个词的人——比尔·史密斯(Bill Smith)他是摩托罗拉(Motorloa)的工程师,在追求这个近乎完美的质量水平的时候,发明了一套方法模型,开始时是MAIC,后来慢慢演变成DMA
    优思学院 2025-03-27 11:47 147浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦