专栏名称: Linux爱好者
伯乐在线旗下账号,「Linux爱好者」专注分享 Linux/Unix 相关内容,包括:工具资源、使用技巧、课程书籍等。
目录
相关文章推荐
Linux爱好者  ·  Linus 将不顾反对合并 Rust 代码?! ·  2 天前  
Linux爱好者  ·  成人玩偶 + ... ·  6 天前  
Linux就该这么学  ·  服务器运维的血泪教训:这 10 ... ·  昨天  
Linux就该这么学  ·  某运维修不好 “ 打印机 ” ... ·  3 天前  
Linux就该这么学  ·  福利福利!3本签名版合集来啦! ·  3 天前  
51好读  ›  专栏  ›  Linux爱好者

Linus 将不顾反对合并 Rust 代码?!

Linux爱好者  · 公众号  · linux  · 2025-02-25 08:38

正文

背景

自从 2022 年 Rust 代码首次被合并到 Linux 内核中以来,围绕它的争议就持续升温。Rust 语言因其在内存安全方面的优势而备受推崇,并被各国政府和安全专家认为能够有效减少由于内存安全漏洞导致的高危安全问题。在大型代码库中,大多数严重的错误和漏洞都源于内存安全问题,而使用内存安全的语言和工具可以避免这些问题。

上周,据 Linux 内核关键维护者 Hellwig 透露: Linus Torvalds 私下表示,他绝对会不顾维护者的反对,合并 Rust 代码 这让 Linux 内核中引入 Rust 语言的讨论变得愈演愈烈。参考上一篇文章《 Rust 补丁两年零通过,34年开发者煽动网友逼Linus表态,维护者激烈反击:Rust 就是 Linux 的“癌症”!

争议焦点

多语言混编的担忧

Linux 内核维护者 Christoph Hellwig 多次表达了对在同一个代码库中混合使用 Rust 和 C 语言的担忧。他警告说,如果在没有明确策略和广泛讨论的前提下,就把 Rust 代码大规模合并到内核的各个子系统里,会让后续维护者疲于奔命。

Hellwig 将维护多语言代码库比作“癌症”,强调自己不愿承担维护 Rust 设备驱动代码的负担。他认为,C 语言和 Rust 语言之间存在巨大的语义鸿沟,给内核基础组件做互操作需要大量的“胶水”或绑定层。

Hellwig 担心,一旦这些绑定分散到各个子系统,就像“癌症”一样随处扩散,最终造成对核心基础设施的重复改写与无法预期的复杂度。他曾表示,自己曾在混合语言的代码库上工作过,那简直是他的噩梦,因为各种原因,会把部分代码从语言 A 重写成语言 B,然后又因为原因 Z 再转回 A,这种折腾不断.

Hellwig 还警告说,这种“多语言混编”也会影响对旧代码的全局性改进。

Linus Torvalds 的态度

Hellwig 在邮件列表中透露,Linus Torvalds 私下表示,他绝对会不顾维护者的反对,合并 Rust 代码。这使得 Hellwig 感到无奈,认为 Linux 开发者或维护者必须接受 Rust.

尽管如此,Linus 并没有对补丁的去留做出明确裁定,而是批评 Asahi Linux 项目的负责人 Hector Martin 在社交媒体上就此事“作秀”,并为 Linux 社区的治理模式辩护。

Linus 礼貌地回应了 Hellwig 对为 DMA API 添加到内核的 Rust 绑定的反对,并指出提议的 Rust 代码甚至不在 Hellwig 维护的基于 C 的核心组件中——这些绑定充当了未更改的 C API 和 Rust 驱动程序之间的单独接口.

Linus 强调,如果维护者认为自己可以控制谁或什么可以使用其代码,那是错误的。维护者没有被迫接受任何 Rust 代码,或者关心 DMA 代码中的任何 Rust 代码,可以忽略它。但是 "忽略 Rust 方面" 自动也意味着对 Rust 方面没有任何发言权。


Rust 内核策略

Rust for Linux 项目负责人 Miguel Ojeda 发布了“Rust 内核策略”: Rust kernel policy:https://rust-for-linux.com/rust-kernel-policy ,试图缓解内核开发社区的担忧。该策略阐明了将 Rust 代码集成到主要为 C 语言编写的开源内核中的工作状态.

但 Hellwig 质疑该文档只发布在网上,而并非放入内核代码树中,认为其没有实际价值。他认为,如果想让它有效,就必须放在内核树中并得到广泛认可。

维护者倦怠

Asahi Linux 项目的负责人 Hector Martin 因对 DMA 补丁的争议处理不满,辞去了 Linux 维护者一职。此前,Rust for Linux 维护者 Wedson Almeida Filho 也曾因与 C 语言维护者存在分歧而辞职。

开源社区的“维护者倦怠”问题日益凸显,高强度的义务劳动、激烈的人身攻击、缺乏对志愿者工作的认可,以及超负荷的工作量等都是导致倦怠的原因。

Martin 称,他之所以决定离开 Asahi Linux 和 Linux 内核社区,部分原因是感到自己被“背叛”,一些内核和相关 Linux 圈子里的人一直在对他玩弄两面派手段。

支持 Rust 的观点

内存安全优势

Linux 核心开发者 Greg Kroah-Hartman 再次呼吁社区接纳那些愿意贡献 Rust 代码以改进内核的开发者。他认为,C 语言中存在许多愚蠢的小角落,容易导致内存安全问题,而这些问题在 Rust 中完全不存在。

Greg K-H 指出,C 语言中常见的内存错误包括简单的内存覆盖、错误路径清理、忘记检查错误值,以及使用已释放的资源等。通过引入 Rust,可以减少这些类型的错误,让开发者和维护者能够把更多时间投入到真正的错误上。

提高 API 的安全性

Greg K-H 进一步表示,Rust 可以定义内核 API,使其几乎不可能被错误使用。这有助于清理 API,使其对所有人(包括 C 用户)都更好、更安全。 Rust 还可以让我们以某种方式定义我们的内核 API,从而让人们几乎不可能在使用它们时出错。


解决实际问题

Greg K-H 认为,Rust 解决了硬件开发者在编写代码时遇到的内存安全问题。他强调,不应忽视那些愿意投入工作并帮助项目成功的人。


Rust 崛起不可避免

Nvidia 的 Linux 内核工程师 Andrea Righi 认为,内核社区对 Rust 的热情是不可否认的,Rust 代码合并到上游几乎是不可避免的。

其他观点

Kees Cook 是 Google 的内核安全工程师,也是一位长期的内核贡献者。他 认为,不应该专注于替换现有代码,因为这样做会带来很多风险,但是用 Rust 编写新的东西非常有效.







请到「今天看啥」查看全文