![]() The mascot of Linux, Tux, superimposed over Rust's logo | |
Developer(s) |
|
---|---|
Initial release | October 1, 2022 |
Repository | github |
Written in | Rust |
Operating system | Linux |
Available in | English |
License | GPL-2.0-only with Linux-syscall-note. |
Website | https://rust-for-linux.com/ |
Rust for Linux is an ongoing project started in 2020 to add Rust as a programming language that can be used within the Linux kernel software, which has been written using C and assembly only. This project aims to leverage Rust's memory safety to reduce bugs when writing kernel drivers. [1] Progress has been slower than hoped by both Rust advocates and Linus Torvalds, lead of the Linux kernel project. [2] In December 2023, the first drivers written in Rust were accepted, and released in version 6.8. [3] [4]
The Linux kernel has been primarily written in C and assembly languages since its first release in 1991. Around 1997, the addition of C++ was considered and experimented upon for two weeks before being scrapped. [5] Rust was created in 2006 and combines the performance of low-level programming languages (such as C) with a focus on memory safety and a user-friendly tool set and syntax. [6]
An example Linux external loadable kernel module created using the Rust language was published by Taesoo Kim in 2013. [7] [8]
The Rust for Linux project was announced in 2020 in the Linux kernel mailing list with goal of adding Rust as a programming language that could be used within the Linux project. [9] At the Open Source Summit 2022, Linus Torvalds stated that the incorporation of the project's work could begin as soon as the Linux 5.20 release, later named as Linux 6.0. [10] The first release candidate for Linux 6.0 was created on 14 August 2022, without Rust support. In the release notes for Linux 6.0-rc1, Torvalds expressed his intention for adding Rust support, "I actually was hoping that we'd get some of the first rust infrastructure, and the multi-gen LRU VM, but neither of them happened this time around." [11] [12] On 19 September 2022, an article from ZDNet revealed an email from Linus Torvalds stating that "Unless something odd happens, it [Rust] will make it into 6.1". [13]
In October 2022, a pull request for accepting the implementation for Rust for Linux was approved by Torvalds. [14] As of Linux 6.1, support was intentionally left minimal in order to allow developers to test the feature. [15]
Rust for Linux developers created a new library "pinned-init" to safely and fallibly initialize memory that must not be relocated. [3] It was first included in Linux 6.4, [16] and been improved in later versions. [3]
Linux 6.10 included RISCV processor architecture support for Rust. [17]
In July 2024 a change was accepted into Linux to support multiple Rust versions for the first time, allowing compiling using both 1.78 (Released 2 May, 2024) and 1.79 (Released 13 June, 2024). [18]
As of August 2024 [update] , Rust for Linux depends on unstable features of the Rust compiler. [1]
Linux kernel contains the following Rust components:
Drivers scheduled for inclusion in Linux kernel:
Other notable projects using Rust in Linux include: