本周,ZDNet' S Steven J.Vaughan-Nichols问Linus Torvalds和Greg Kroah-Hartman关于新的Linux内核代码的可能性是锈的高性能,但由Mozilla项目赞助的内存安全语言。
截至目前,Linux内核是用C编程语言编写的 - 基本上,与20世纪70年代以来,用于为UNIX和UNIX的操作系统编写内核的相同语言。关于C的伟大事物是它'' s不是装配语言 - 它'非常轻松地阅读和写作,它通常更接近硬件架构之间直接便携。然而,C仍然打开了大气围绕组装的整个灾难性错误范围。
特别是作为非媒体管理的语言,C将程序员打开到内存泄漏和缓冲区溢出。当你'重新完成变量,你创建了一个变量,你必须明确地破坏它 - 否则,旧的孤立变量累积,直到系统崩溃。同样,您必须分配内存以存储数据 - 如果您尝试将太多数据放入太小的RAM区域,则为您' ll最终覆盖您应该撰写的位置' t。
高级语言 - 例如PHP,Python或Java - 旨在更容易读写并更安全地写入代码。它们提供的额外安全的很大一部分来自隐式内存管理 - 语言本身将拒绝允许您将16K的数据填充到2K缓冲区中,从而避免缓冲区溢出。同样,高级语言自动回收"孤儿和#34; RAM通过垃圾收集 - 如果函数创建一个只能通过该函数读取的变量,那么该函数终止,该语言将在一次' s不再可访问的情况下回收变量。
Rust,如Google' Go,是一个新一代语言之一,它旨在击中在介于之间的某个地方 - 它提供了C将在提供内存时的硬件功能的原始速度,灵活性和大部分直接映射-Safe环境。
在2020年的Linux水管工会议上,内核开发商开始认真讨论在内核内使用锈语的想法。要清楚,这个想法是' t整个,全面的rest-rese-in the rust-in-the the near-in the ructre rese - 仅仅是用锈写编写的新代码,它与现有的内核基础架构干净地接口。
Torvalds Didn' t似乎吓坏了 - 事实上,他要求默认在内核构建环境中启用生锈编译器可用性。这没有意味着将被接受铁锈代码提交将被接受到内核Willy-Nilly中。启用Rust-Compiler的自动检查只是意味着它应该尽可能简单地获得任何其他内核代码所建立(并自动测试)的潜在提交。
自2020年的Linux水管工'会议以来,内核在内核中进行了大量工作,包括在GNU Coreutils的锈语口中。 Port' s作者,Sylvestre Ledru-A Mozilla Director和Debian开发人员 - 将其描述为处于工作状态,虽然尚未生产准备。最终,Rust Port可能会在一些环境中取代原来的GNU Coreutils - 为内置线程安全性和免疫力提供给内存管理错误,例如缓冲区溢出。
我对该项目感兴趣,但我认为它是由对Rust感到非常兴奋的人驱动的,我想看看它所实际上的实际工作。
Torvalds继续描述设备司机,这是明显的低悬垂的水果,用于潜在的新工作才能在锈症中完成。他说,因为它们有很多,而且他们'重复相对较小,独立于其他代码。
......驱动程序可能是像这样尝试的第一个地方,因为它们是"末端叶子"依赖于内核源的树。它们依赖于核心内核功能,但没有任何取决于它们。
Kroah-Hartman继续描述必须克服的困难,以便成功生产铁锈代码集成到主要的C语言内核:
它都将归结为在C中写入的内核核心结构和终身规则之间的互动如何映射到生锈结构和终身规则......那个''这将仔细做好开发人员想要挂钩这一切,祝他们好运。
虽然我们不希望在很快看到Linux内核的全面实施Linux内核,但这项早期的工作将Rust代码集成到内核中的内核' S C基础设施可能非常重要。
微软和Linux社区都同意三分之二或更多的安全漏洞源于内存安全问题。 随着软件复杂性继续增加,使其更安全地写入第一名将变得越来越重要。