全球即时:Linux内核将引入Rust,Linus:以防此事搞砸我又发脾气,先道个歉
2022-07-04 09:59:53来源:量子位
本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。
这几天,由Linux基金会主办的2022开源峰会如约而至。
Linux之父Linus Torvalds也出席了会议。
【资料图】
一个小插曲是,一张现场传来的他本人的照片让不少网友和粉丝感叹:
Linus真的老了!
不过,53岁的Linus在和老朋友Cardano基金会的首席开源官进行的一番畅谈中却表示,自己仍然充满了干劲。
同时,他还透露了一个大惊喜:
下一个版本的Linux内核主线,可能就会合并用Rust语言提交的PR分支了。
对Linux的热情30年未减Linux诞生于1991年,现在已经有31年历史。
作为全球三大操作系统之一,Linux已经成为云、边缘技术、嵌入式和物联网等技术不可或缺的支撑基础。
作为最大的开源操作系统,Linux由开源社区的贡献者维护,每6-10周(也就是1-2个月)发布一个新的内核版本。
当然,这其中大部分更新都是由Linus本人发布的。
2005年的时候,Linus发明了Git,让包括Linux在内的开源项目的开发变得更加有效率。
从此开始,在过去的至少15年里,Linux内核的开发流程和发布规律一样一直保持着相对不变的节奏。
Linus称,看起来维护Linux这一工作很平淡、枯燥甚至无聊,但我想这正是大家所需要的。因为一个稳定的更新流程可以让使用者们感到安心。
事实上,Linus认为,他最开心的是,Linux这个项目尽管已经有30多个年头,仍没有变得死气沉沉。
(原话:we’re not a dead project。)
他说,Linux身上仍然会涌现出让我感到惊讶和欣喜的新事物,其中还不乏创新。
因此,这让他对Linux仍然充满了干劲。
下一个内核版本可能支持Rust自2016年以来,Rust每年都被Stack Overflow开发者调查评为“最受欢迎的编程语言”。
许多人也开始呼吁在Linux内核中增加Rust语言的支持,由此还诞生了一个叫做“Rust for Linux”的组织。
出现这一现象最主要的原因是用Rust编写会带来更高的计算内存资源利用率,以及更安全。
比如在2019年召开的Linux Security Summit安全峰会上,有人就提出用Rust就可以通过其type system和borrow checker提供的API,来避免掉Android和Ubuntu中2/3的内存安全问题。
那么,Rust有没有可能成为Linux内核中除C之外的第二种官方语言呢?
会上,Linus也谈到了这个问题。
比较惊喜的是,他表示,大家都以为我们一直在规避风险,但其实我们一定会把它加进来的,也许就从下一个版本开始!
也就是说,官方终于决定把拥抱Rust,把Rust for Linux的PR合并到Linux内核的主线了。
此举赢得了现场观众阵阵掌声,Linus用了好大功夫才平息住大家的兴奋。
要知道,此前光是Rust的支持补丁就已发布到第七版了。
不过,Linus紧接着也提醒道,目前只会以非常有限的方式来尝试。毕竟25年前想换C++进行一些内核补丁操作时就失败了。
(意思用Rust重写2500万行C代码肯定是不可能的咯。)
接着有趣的一幕出现了。
Linus称自己其实是很愿意相信参与每一个参与Linux维护的开发者的,但前提是他们没有把事情搞砸。
一旦搞砸,Linus表示大家都懂得,自己会“口出不逊”。但自己又意识到这样很不礼貌,只好事后再到歉。
Linus不好意思地说,这种情况已经不是一回两回了,“所以现在,请允许我先给写Rust的这帮程序员道个歉。”(手动狗头)
压力现在来到了Rust这边。
“开源永远不能保证100%安全”最后,话题转到了开源安全上。
最近,Linux基金会的OpenSSF(开源安全基金会)就透露,他们将支出1.5亿美元用于对开源软件的安全防护。
对此,Linus称,任何开源项目包括Linux内核在内,都不能奢望做到100%安全和100%无bug。
“bug不出现在硬件就会出现在软件,不出现在你的程序就会出现在别人的程序。”(手动狗头)
“唯一的办法就是建立多层防护(layers of security)。”
他进一步解释称,Linux内核只是整个应用程序堆栈的一层。在内核内部,进程的不同部分已经已经具备多层安全性。
对于负责构建整个堆栈的开发人员来说,最重要的是对堆栈中的任一层出现安全漏洞时应该怎么处理都有一个概念。
One More Thing目前Linux内核最新版本为5.19,Linus口中的下一个版本叫5.20还是6.0也引起了很多网友的讨论。
多数人认为该叫6.0了——
不仅是因为这一版终于可能会合并Rust这一重大更新,另一点别忘了,Linux的版本号向来不爱往“大数”堆,比如此前3.19版本结束后就直接跳到了4.0~
你觉得呢?