Rust for Linux
![]() The mascot of Linux, Tux, superimposed over Rust's logo | |
Developer(s) |
|
---|---|
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 adding Rust as the second programming language that can be used within the Linux kernel software, which has been written only using C. This project aims to leverage Rust's memory safety to reduce bugs when writing kernel drivers.
History
The Linux kernel has been primarily written in C and assembly language since its first release in 1991. Around 1997, the addition of C++ was considered and experimented upon for two weeks before being scrapped.[1] 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.[2]
An example Linux external loadable kernel module created using the Rust language was published by Taesoo Kim in 2013.[3][4]
The Rust for Linux project was announced in 2020 in the Linux kernel mailing list with goal of adding Rust as the second programming language that could be used within the Linux project.[5] 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.[6] 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."[7][8] 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".[9]
In October 2022, a pull request for accepting the implementation for Rust for Linux was approved by Torvalds.[10] As of Linux 6.1, support was intentionally left minimal in order to allow developers to test the feature.[11]
Rust for Linux developers created a new library "pinned-init" to safely and fallibly initialize memory that must not be relocated. It was included in Linux 6.4.[12]
Linux 6.10 included RISCV processor architecture support for Rust.[13]
In July 2024 a change was accepted into Linux to support multiple Rust versions for the first time, allowing 1.78 (Released 2 May, 2024) and 1.79 (Released 13 June, 2024).[14]
Usage
Notable projects using Rust in Linux include:
- rnull, a drop-in replacement for the null block device driver[15]
- tarfs, a tar filesystem[16]
- Android Binder IPC driver[5][17]
- Asahi Linux's Apple silicon AGX GPU DRM driver[18]
- PuzzleFS, a container filesystem[19][16]
- Read-only Ext2 filesystem[16]
- QR code DRM panic handler[14]
- Nova, intended to create a Rust nouveau Nvidia GPU driver[20]
References
- ^ Claburn, Thomas (2022-06-23). "Linus Torvalds says Rust is coming to the Linux kernel". The Register. Archived from the original on 2022-07-28. Retrieved 2022-07-25.
- ^ Perkel, Jeffrey M. (2020-12-01). "Why scientists are turning to Rust". Nature. 588 (7836): 185–186. Bibcode:2020Natur.588..185P. doi:10.1038/d41586-020-03382-2. PMID 33262490. S2CID 227251258. Archived from the original on 2022-05-06. Retrieved 2022-08-04.
- ^ Vaughan-Nichols, Steven J. (5 October 2022). "Rust in the Linux Kernel". thenewstack.io. Retrieved 31 August 2024.
- ^ Ojeda, Miguel (23 June 2022). "Memory Safety for the World's Largest Software Project". Retrieved 31 August 2024.
- ^ a b Simone, Sergio De (2021-04-27). "Using Rust to Write Safe and Correct Linux Kernel Drivers". InfoQ. Archived from the original on 2022-09-22. Retrieved 2022-08-04.
- ^ Vaughan-Nichols, Steven (2022-06-27). "Linus Torvalds is cautiously optimistic about bringing Rust into Linux kernel's next release". ZDNet. Archived from the original on 2022-08-12. Retrieved 2022-08-04.
- ^ Tung, Liam (2022-08-15). "Linux 6.0 arrives with performance improvements and more Rust coming". ZDNet. Archived from the original on 2022-09-07. Retrieved 2022-09-07.
- ^ Torvalds, Linus (2022-08-14). "Linux 6.0-rc1". LWN.net. Retrieved 2022-09-07.
- ^ Vaughan-Nichols, Steven (2022-09-19). "Linus Torvalds: Rust will go into Linux 6.1". ZDNET. Archived from the original on 2023-01-19. Retrieved 2022-09-20.
- ^ Proven, Liam (2022-10-05). "Linux 6.1: Rust to hit mainline kernel". The Register. Archived from the original on 2022-10-12. Retrieved 2022-10-12.
- ^ Corbet, Jonathan. "Next steps for Rust in the kernel". LWN.net. Archived from the original on 2023-06-08. Retrieved 2023-05-03.
- ^ Larabel, Michael. "More Rust Code Readied For Linux 6.4". phoronix.com. Retrieved 31 August 2024.
- ^ Knop, Dirk (July 27, 2024). "Linux-Kernel 6.10: Verbesserte Dateisysteme und neue Treiber". heise.de. Retrieved 31 August 2024.
- ^ a b Leemhuis, Thorsten (Aug 29, 2024). "Linux kernel gets "blue screens" with QR code". heise.de. Retrieved 31 August 2024.
- ^ Larabel, Michael. "Rust Null Block Driver Published To Begin Experimenting With Rust For Linux Storage". phoronix.com. Retrieved 31 August 2024.
- ^ a b c Larabel, Michael. "Microsoft Engineer Ports EXT2 File-System Driver To Rust". phoronix.com. Retrieved 31 August 2024.
- ^ Filho, Wedson Almeida (April 14, 2021). "Rust in the Linux kernel". Google Security Blog. Retrieved 31 August 2024.
- ^ Larabel, Michael. "Initial Rust DRM Abstractions, AGX Apple DRM Driver Posted For Review". phoronix.com. Retrieved 31 August 2024.
- ^ Larabel, Michael. "PuzzleFS Continues Striving To Be The Best File-System For Containers". phoronix.com. Retrieved 31 August 2024.
- ^ Larabel, Michael. "Red Hat's Long, Rust'ed Road Ahead For Nova As Nouveau Driver Successor". phoronix.com. Retrieved 31 August 2024.