您现在的位置是:首页 > 科技 >正文

LinusTorvalds在Linux内核中权衡Rust语言

发布时间:2021-12-14 09:52:06闵固彬来源:

导读 本周,ZDNet 的 Steven J Vaughan-Nichols 向 Linus Torvalds 和 Greg Kroah-Hartman 询问了用Rust编写新 Linux 内核代码的

本周,ZDNet 的 Steven J. Vaughan-Nichols 向 Linus Torvalds 和 Greg Kroah-Hartman 询问了用Rust编写新 Linux 内核代码的可能性——Rust 是一种由 Mozilla 项目赞助的高性能但内存安全的语言 。

C 与 Rust

到目前为止,Linux 内核是用C编程语言编写的——基本上,与1970 年代以来用于为 Unix 和类 Unix 操作系统编写内核的语言相同。C 的伟大之处在于它不是汇编语言——它更容易读写,而且通常更接近于在硬件架构之间直接移植。但是,C 仍然让您面临几乎所有可能在汇编中出现的灾难性错误。

特别是,作为一种非内存管理语言,C 使程序员容易受到内存泄漏和缓冲区溢出的影响。完成创建的变量后,必须显式销毁它——否则,旧的孤立变量会累积,直到系统崩溃。同样,您必须分配内存来存储数据——如果您试图将太多数据放入太小的 RAM 区域,您最终会覆盖不应该覆盖的位置。

高级语言(例如 PHP、Python 或 Java)旨在更易于阅读和编写,并且更安全地编写代码。它们提供的大部分额外安全来自隐式内存管理——语言本身将拒绝允许您将 16K 的数据填充到 2K 的缓冲区中,从而避免缓冲区溢出。类似地,高级语言通过垃圾收集自动回收“孤立的” RAM——如果一个函数创建了一个只能由该函数读取的变量,则该函数终止,一旦该变量不再可访问,该语言将回收该变量。

Rust 与 Google 的Go 一样,是旨在介于两者之间的新一代语言之一——它提供原始速度、灵活性以及大部分直接映射到 C 语言的硬件功能,同时提供内存安全环境。

Linux 管道工 2020

在 2020 年的 Linux Plumbers 大会上,内核开发人员开始认真讨论在内核中使用 Rust 语言的想法。需要明确的是,这个想法并不是用 Rust 完全彻底地重写内核——只是添加了用 Rust 编写的新代码,这些代码与现有的内核基础设施接口干净。

Torvalds 似乎并不害怕这个想法——事实上,他要求在内核构建环境中默认启用Rust 编译器可用性。这并不意味着 Rust 代码提交会被内核随意接受。启用对 Rust 编译器存在的自动检查只是意味着它应该尽可能容易地像任何其他内核代码一样正确构建(并自动测试)任何潜在的提交。

快进到 2021 年

自 2020 年 Linux 管道工大会以来,内核中的 Rust 已经完成了大量工作,包括在 GNU Coreutils的 Rust 语言端口上。该移植的作者 Sylvestre Ledru(Mozilla 主管和 Debian 开发人员)将其描述为处于工作状态,但尚未准备好投入生产。最终,Rust 端口可能会在某些环境中取代原始的 GNU Coreutils——提供内置的线程安全性和对内存管理错误(如缓冲区溢出)的免疫力。

重要的第一步

尽管我们预计不会很快在 Rust 中看到 Linux 内核的完整实现,但将 Rust 代码集成到内核的 C 基础架构中的早期工作可能非常重要。

无论微软和Linux社区同意三分之二或从存储器安全问题更多的安全漏洞造成的。随着软件复杂性的不断增加,首先使编写更安全将变得越来越重要。

标签:

上一篇
下一篇