↓推荐关注↓
转自:InfoQ - Tina
11 月 30 日,除了之前合并到 Linux 6.13 内核开发窗口的 USB 更新和大型 staging 分支更新外,“char/misc”模块的更改也被采纳。作为内核中汇总各种改动的模块,“char/misc”合并中引入了一些重要更新,这对希望用 Rust 编程语言编写内核驱动的开发者来说尤其值得关注。
Linux 内核关键维护者 Greg Kroah-Hartman 表示,随着这些改动的引入,Linux 6.13 现在可以支持更多基于 Rust 的内核驱动开发。
在“char/misc”合并中,他解释道:“Rust 中的 misc 驱动绑定和其他改动使得开发 misc 驱动成为可能。我认为这是一个转折点,有了这些绑定,未来会有更多 Rust 驱动出现。希望在下一个合并窗口中,我们能够实现 PCI 和平台驱动的功能,从而全面支持几乎所有驱动子系统接受(或至少尝试使用)Rust 驱动。这是许多开发者共同努力的成果,祝贺大家取得这样的进展。你们用可运行的代码证明了我们许多人的质疑是错误的 :)。”
这位资深内核开发者预测,未来我们将看到越来越多的上游 Rust 驱动程序。
除了“char/misc”子系统,Rust for Linux 项目负责人 Miguel Ojeda 还于 11 月 26 日提交了一组针对 Linux 6.13 holiday 内核的大规模 Rust 基础设施和工具链更新,一夜之间让 Linux 增加了 3000 行 Rust 代码。
Linux 6.13 的合并窗口预计将于今天(12 月 1 日)结束,同时发布 Linux 6.13-rc1。Linux 6.13 正逐步成为一个重要的内核版本,稳定版本预计将在 1 月底左右发布。
从这次版本发布中,我们可以得出两个重要信息:一是 Greg Kroah-Hartman 承认,包括他在内的部分人曾质疑 Rust,但这是“错误”的,他认为 Rust for Linux 维护者用实际可行的代码证明了 Rust 在内核开发中的潜力。二是尽管此前 Rust for Linux 维护者宣布退出内核开发,但实际上,将 Rust 代码引入 Linux 的进展并未受到太大影响。
今年 9 月份的时候,微软工程师、 Rust for Linux 维护者之一 Wedson Almeida 在 Linux 内核邮件列表上宣布退出该项目。他离开的原因是,“在过去四年的工作当中,我发现自己的精力和热情已经被严重消磨,越来越抗拒回应那些跟技术无关的废话。所以这份任务,最好是留给那些仍然抱有这份热情的成员。”
C 和 Rust 两派的分歧一直很大。一些现有的 C 语言程序员对 Rust 作为第二语言的引入持抵触态度,担心这会增加他们的工作复杂性,或迫使他们学习 Rust 而感到压力。英特尔 Linux 核心内核架构团队成员 Dan Williams 也曾指出,Rust 在 Linux 内核中的应用面临一个问题:“内核维护者往往非常保守。” 他们对 C 语言非常熟悉,可以说了如指掌,但对 Rust 却并不了解。因此,他们“不知道该如何审查这些代码,也不知道如何调试那些代码,因为他们并不理解这些代码。”
在 Linux 缔造者 Linus Torvalds 看来,这场争议“几乎上升到了带有宗教战争色彩的信仰之争层面”。而对于不少人因此断言 Rust 的融合之路已经失败的观点,Linus 评论道,“我们已经在这方面探索了几年,所以目前下结论还为时过早。但我也认为,哪怕是失败了(虽然我并不支持这种失败论),这也是学习经历的一部分。所以我觉得推广 Rust 是有积极意义的,可争论过程中的很多人似乎并不这么看。”
作为 Rust for Linux 项目的首席维护者,Miguel Ojeda 则将 Wedson 的辞职描述为该项目“黎明前最黑暗”的时刻。
“对我来说,这当然非常困难,”Ojeda 表示,“但从积极的角度看,这或许是黎明前最黑暗的时刻……我想向大家保证,项目正在继续前进。”
不久前,Miguel Ojeda 在 RustConf 2024 主题演讲中回顾了 Rust for Linux 项目的历史。
早在 2013 年就有人提出了为内核编写 out-of-tree Rust 模块的想法,那时 Rust 还未正式发布 1.0 版本。然而,Rust for Linux 并不仅限于 out-of-tree 模块的开发,其目标是将 Rust 的支持集成到 Linux 主线中,使其能够用于 C 能完成的所有内核任务。值得说明的是,一般情况下,稳定且常用的驱动都是 in-tree 的,它们位于内核源代码树的对应目录下。
2019 年夏天,Miguel Ojeda 创建了 Rust for Linux GitHub 组织,但直到 2020 年才真正投入使用。同年 7 月,Nick Desimone 发起了一封关于对 Rust 感兴趣的邮件,随后大家意识到有不少人希望这件事能够成真。
“那时,这仍然只是一个白日梦”,但 Miguel Ojeda 认为让大家在同一目标下独立工作会很有意义,于是他提交了第一个 Rust 拉取请求,后来越来越多的人加入了这个项目。经过多次协作,最终在两年后,Rust 支持被合并至内核的 6.1 版本。
Rust for Linux 旨在为 Linux 内核引入对 Rust 编程语言的支持,目标是实现对 Rust 的一流支持,即在内核中任何可以用 C 实现的功能都可以用 Rust 实现。
他们的最终目标并不仅仅是 out-of-tree 模块,而是 in-tree,以及用 Rust 编写核心 API 和子系统,这不仅限于内核空间代码,还包括宿主和用户程序。
Miguel Ojeda 强调项目的关键目标一直都是“将这些支持集成到主线内核中”。并且就像他之前总结的那样:“Rust 现在处于有利地位。”
参考链接:
https://www.phoronix.com/news/Linux-6.13-char-misc-More-Rust
https://devclass.com/2024/09/18/rustconf-speakers-affirm-rust-for-linux-project-despite-challenges-of-unstable-rust-maintainer-resignation/
https://www.youtube.com/watch?v=FRMJzNYut4g
https://www.zdnet.com/article/rust-in-linux-now-progress-pitfalls-and-why-devs-and-maintainers-need-each-other/
—— EOF —— 你好,我是飞宇,本硕均于某中流985 CS就读,先后于百度搜索、字节跳动电商以及携程等部门担任Linux C/C++后端研发工程师。
最近跟朋友一起开发了一个新的网站:编程资源网,已经收录了不少资源(附赠下载地址),如果屏幕前的靓仔/女想要学习编程找不到合适资源的话,不妨来我们的网站看看,欢迎扫码下方二维码白嫖~
同时,我也是知乎博主@韩飞宇,日常分享C/C++、计算机学习经验、工作体会,欢迎点击此处查看我以前的学习笔记&经验&分享的资源。
我组建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起进群交流。
欢迎你添加我的微信,我拉你进技术交流群。此外,我也会经常在微信上分享一些计算机学习经验以及工作体验,还有一些内推机会。
加个微信,打开另一扇窗
感谢你的分享,点赞,在看三连