速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Linux 迎来重要转折点!Rust 驱动将全面进军内核核心

  • 2024-12-03
    北京
  • 本文字数:2241 字

    阅读完需:约 7 分钟

大小:983.43K时长:05:35
Linux迎来重要转折点!Rust驱动将全面进军内核核心

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 kernel 内核的大规模 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 表示,“但从积极的角度看,这或许是黎明前最黑暗的时刻……我想向大家保证,项目正在继续前进。”

 

将 Rust 融入 Linux 曾是一些人的“白日梦”

 

不久前,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/

 

2024-12-03 11:355583

评论

发布
暂无评论
发现更多内容

Pushing to Git returning Error Code 403

刿刀

一文详解Java中的ThreadLocal

做梦都在改BUG

Java 多线程 线程池 ThreadLocal

2023年实用性好的堡垒机推荐

行云管家

网络安全 堡垒机

2023年好用的谷歌浏览器插件推荐(Chrome必备扩展程序) 安装教程

互联网搬砖工作者

Python Dev Day@北京站,我们来啦!

PyChina

ONES 入选北大光华 MBA 整合实践项目,推动校企合作

万事ONES

扫一扫,原来这么简单

HarmonyOS SDK

HMS Core

软件测试/测试开发丨iOS自动化测试之基于模拟器的自动化测试

测试人

ios 软件测试 自动化测试 测试开发

软件测试/测试开发丨iOS自动化真机测试验证环境过程中常见问题

测试人

软件测试 自动化测试 测试开发 ios测试

在 Kubernetes 中部署应用交付服务(第 1 部分)

NGINX开源社区

火山引擎VeDI零售行业解决方案 聚焦精准营销场景提升品牌转化

字节跳动数据平台

大数据 云服务 数据平台 企业号 3 月 PK 榜

融合低代码与GPT,微软的又一个神奇颠覆

ToB行业头条

Downie Mac使用教程:如何下载B站(哔哩哔哩)高清视频?Downie4许可证

理理

苹果 bilibili Downie下载

Metasequoia 激活版(水杉三维模型游戏建模)

理理

水杉3D建模 Metasequoia 4 破解

太厉害了!GitHub上标星80K的微服务实战笔记,看完跪了

做梦都在改BUG

Java 微服务 Spring Cloud Spring Cloud Aliababa

XLD音频无损解码器:X Lossless Decoder中文激活版

真大的脸盆

Mac Mac 软件 音频解码 音频处理工具 音频管理

忘记英文单词拼写怎么办?试试OS X 系统的英文补全功能

理理

mac电脑 英文补全功能

用 JavaScript 写出一个彩票系统?

泰罗凹凸曼

JavaScript 前端

adobe应用安装提示【错误代码1】解决方法~

理理

adobe adobe安装错误

小程序营销模板的发展现状及前景分析

没有用户名丶

小程序

安装Agisoft Metashape Pro的Mac电脑配置要求

理理

三维建模 Agisoft Metashape配置

国际版语音房聊天APP,视频语音平台开发搭建经验及后台项目简要说明

山东布谷科技胡月

语音聊天系统 语音直播app开发 国际版语音直播APP 国际版语音系统源码 语音聊天房系统搭建

Spring为什么需要三个级别的缓存来解决循环依赖

做梦都在改BUG

Java spring 面试 循环依赖 三级缓存

AI 未来已至,向量数据库站在新的节点上

Zilliz

英伟达 非结构化数据 Milvus 向量数据库

bitget合约一键跟单社区交易平台开发功能以及模式分析

开发微hkkf5566

文档智能分析产业实践,基于PP-StructureV2和OpenVINO实现训练部署开发全流程

飞桨PaddlePaddle

双非渣硕,开发一年,苦刷算法三个月,四面字节成功斩获offer

做梦都在改BUG

Java 数据结构 面试 算法

宝塔SSH ROOT账号无法登录

源字节1号

开源 软件开发 小程序开发

自动化回归测试平台 AREX 0.2.7 版本正式发布!

AREX 中文社区

开源 自动化测试 接口测试 回归测试

第二届“鼎新杯”数字化转型应用征集大赛在京启动

信通院IOMM数字化转型团队

数字化转型 鼎新杯

Linux迎来重要转折点!Rust驱动将全面进军内核核心_操作系统_Tina_InfoQ精选文章