百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

C 语言老兵不服 Rust!Linux 内核爆发内讧,核心维护者被迫退出:真的吵累了

sinye56 2025-02-15 01:05 1 浏览 0 评论

整理 | 郑丽媛
出品 | CSDN(ID:CSDNnews)

从几年前传闻 Rust 要进驻 Linux 内核,到如今 Rust for Linux 项目的目标是让 Rust 成为 Linux 内核模块开发的第二语言,期间 Linux 社区内有关于 Rust 的争论就不曾停止,近期更是达到了一个新高峰。

上周,一位负责 Rust for Linux 的核心维护者 Wedson Almeida Filho 决定退出此项目,原因是他已疲于应对社区内越来越多与技术毫无关系的“废话”了——换句话说,他真的已经吵累了。

而 Wedson 的官宣退出,也再次引发了开源社区对内核开发和语言选择的广泛讨论。


从最初的质疑,到 Rust for Linux 的诞生

Rust 语言以其内存安全特性而闻名,被许多开发者认为是克服 C 和 C++ 中常见内存漏洞的理想解决方案。正因如此,Rust 在近年来受到了包括微软和谷歌在内的众多科技巨头的青睐,也得到了如美国网络安全与基础设施安全局等政府机构的支持。

然而如开头所说,最初 Rust 在 Linux 内核中的起步并不顺利。

Linux 内核维护者 Greg Kroah-Hartman 在 2019 年首次提出“用 Rust 开发 Linux 驱动”的主张时,许多开发者都对此否定,并提出了一些用 Rust 实现驱动程序时不可避免的难题:Linux 内核无法保证 API/ABI 的稳定性,通用 Rust 接口设计较为困难,Linux 内核采用的 C 语言特性并没有相应的 Rust 支持等等。

自 2020 年以来,围绕在 Linux 内核中引入 Rust 的讨论逐渐升温。这种想法的核心在于,通过将 Rust 引入 Linux 内核,可以显著提高系统的安全性和稳定性——内存安全漏洞是许多重大安全问题的根源,而 Rust 的内存安全性正是其最大的卖点之一。

在传统的 C 和 C++ 开发中,内存管理是一项复杂且容易出错的任务,稍有不慎便会导致严重的安全漏洞,尤其在操作系统内核这样的复杂系统中,任何细微的内存错误都可能带来灾难性的后果。而 Rust 通过严格的编译器检查和所有权机制,可以有效避免这些问题。

于是 2022 年底 Linux 6.1 版本的发布,标志着 Rust 正式被引入内核,这是一个重要的里程碑。但即便如此,正如 Wedson 在邮件中所揭示的那样,Rust for Linux 这条前进的道路也依旧不平坦。


由于非技术性争论,一名核心维护者决定辞职

Wedson 本职是一位微软软件工程师,过去几年中为 Rust for the Linux 项目做出了大量贡献,一直是其核心推动者。他参与了许多 Rust Linux 内核功能的开发工作,还进行了一个实验性的 EXT2 文件系统驱动程序的 Rust 移植。

然而,上周他在 Linux 内核开发邮件列表中发布的辞职公告中表示:“将近四年的时间过去了,我发现自己已经没有了当初那种回应一些非技术性废话的精力和热情,因此最好把这个项目交给那些仍对此充满热情的人。”

Wedson 指出,自己原以为技术讨论会成为项目中的主要挑战,他也做好了与同事们一起解决这些问题的准备——然而,项目中不断出现的是各种非技术性争论,久而久之他感到愈发疲惫,最终不得不选择退出。

在邮件的最后 Wedson 还引用了一个视频链接,其中正是一名开发者对他提议的抵制:Wedson 曾提议,通过在 Rust 绑定中静态编码文件系统接口语义来减少错误,而知名 Linux 内核维护者 Ted Ts'o 评论道,“你不能强迫我们所有人都去学习 Rust”。

对此,Wedson 在邮件中回应道:“再重申一次,没有人试图强迫其他人学习 Rust,也没有人阻止对 C 代码的重构。


“我坚信内核开发的未来就是内存安全语言”

意料之中,Wedson 的退出在 Linux 社区中引起了诸多讨论:有支持,亦有反对。

开发者 Asahi Lina 在 Mastodon 上对 Wedson 的决定表示理解和支持。她认为部分 C 语言内核开发者“似乎决心让 Rust 维护者的工作变得非常艰难,因为他们不觉得 Rust 有价值,甚至希望它消失”。

而另一位资深开发者、SourceHut 的创始人兼首席执行官 Drew DeVault,也是公开反对在 Linux 内核中引入 Rust 的一员。他在博客中对 Rust for Linux 项目的开发者表示同情,同时提出了一个新的建议:别再试图将 Rust 嵌入现有的 C 代码中,而是从零开始构建一个兼容 Linux 的新内核。他指出,这样才可以让项目更快地取得实质性进展,避免现在项目中的各种争议。

确实,Rust 进入 Linux 内核的过程,不仅仅是一个技术选择的问题,社区内的沟通和合作也是一大挑战。Linux 社区以其开放和自由的文化著称,但正因为缺乏传统企业中的层级结构和管理规范,项目的方向和决策往往依赖于社区成员的共识,而这种共识的达成并非易事

Filho 的退出无疑给 Rust for Linux 项目带来了不小的冲击,但这并不意味着项目会因此停滞,而他本人也仍对这个项目的前景充满信心:

“我坚信内核开发的未来就是内存安全语言。我并不能预知未来,但如果 Linux 不能将这个优势内化,恐怕其他内核也终将像取代 Unix 那样对 Linux 造成冲击。”

参考链接:

https://www.theregister.com/2024/09/02/rust_for_linux_maintainer_steps_down/

https://lore.kernel.org/lkml/20240828211117.9422-1-wedsonaf@gmail.com/

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: