Linux内核对Rust的支持一直是人们非常感兴趣的话题。此前,LinusTorvalds回应称可以默认启用Rust支持;Linux内核稳定分支的维护者GregKroah-Hartman也表示愿意接受使用Rust开发Linux驱动程序,社区正在推动使用Rust编写内核代码的进程。针对此事,外媒ZDNet近日进一步采访了Linus和Greg,询问他们的具体看法。Rust是一种流行的系统编程语言,它将对性能的低级控制与现代语言功能相结合,在语法上类似于C++,但具有保证的内存安全性。目前,DebianLinux开发者SylvestreLedru已经将Rust版本的Coreutils(GNUshell的核心工具)移植到了Linux。近年来,Rust语言越来越受到微软、AWS等大公司的青睐;这些都与其对内存安全的重视密不可分。AWS产品经理SamarthaChandrashekar表示,Rust有助于确保线程安全并防止与内存相关的错误,例如可能导致安全漏洞的缓冲区溢出。他的观点得到了许多其他开发人员的赞同。目前,大约三分之二的Linux内核漏洞源于内存安全问题。开发人员认为,理论上,Rust可以通过使用该语言固有的更安全的API来完全避免这些问题。根据Linux开发人员NelsonElhage的说法,LinuxRust的支持者并不打算将Linux内核重写为Rust,他们只是专注于走向一个可以用Rust编写新代码的世界。在2020LinuxPlumbers大会上,与会者重点关注了Linux内核对Rust的支持可能涉及的三个方面:内核中现有的API、架构支持以及ABI与内核之间的兼容性问题。对此,LinusTorvalds表示,他仍持观望态度。“我对这个项目很感兴趣,但我认为它是由真正喜欢Rust的人推动的,我想看看它在实践中最终会如何发挥作用”。就个人而言,Linus并不认为自己是Rust的粉丝,但考虑到该语言承诺的一些优势及其解决一些安全问题的能力,他仍然对它持开放态度。不过,Linus也表示,“但我也知道,有时候承诺是不会兑现的。”在Linux内核的尝试方面,Linus指出Rust的首要目标应该是驱动程序。因为在那里可以找到许多不同的可能目标,而且内核的这些不同部分相当小且独立。“对于某些人来说,这可能不是一个非常有趣的目标。但它是‘显而易见的目标’”。首先采用驱动程序的另一个原因是“对驱动程序的任何初始试验都只是一个架构问题”;Linus说很多驱动只和少数几个目标架构相关,所以即使Rust代码在某个特定的架构上不支持,也不会显得问题严重。Greg同意司机可能是第一个尝试这个的地方;因为它们依赖于核心内核功能,但没有任何东西依赖于它们。此外,有些人向Linus反馈说他们根本不喜欢在用户空间中使用Rust;并抱怨用户空间中的Rustification对未来的内核使用来说不是好兆头。对此,Linus表示内核和用户空间的项目是不一样的。内核“在某些方面更难(我们使用了许多非常奇怪的头文件来突破C的界限),但在许多其他方面更容易(主要是因为内核是相当独立的,所以最终二进制文件不依赖于其他的项目)。”最后,Greg总结道,“这一切都将归结为将用C编写的内核核心结构和生命周期规则之间的交互映射到Rust结构和生命周期规则中,以便Rust中的驱动程序能够正确使用它们。开发人员将需要在这方面做很多仔细的工作,我祝他们好运。”尽管我们不会很快看到Linux从C移植到Rust。但鉴于将基于Rust的用户空间程序、驱动程序以及最终基于Rust的Linux内核引入Linux操作系统的兴趣和势头,未来几年的发展可能值得期待。
