Miguel Okhed ( miguel ojeda ), the author of the project rust-for-linux , suggested For consideration by the developers of the Linux nucleus, the release of the V10 components for the development of drivers of devices in the RUST language. This is the eleventh edition of patches, taking into account the first option published without the number of the version. The inclusion of RUST support is approved by Linusum Torwalds to include Linux 6.1 in the nucleus, if unforeseen problems do not come up. The development is financed by Google and the ISRG (Internet Security Research Group), which is the founder of the Let’s Encrypt project and helps to promote HTTPS and develop the Internet protection.
Like the last version of the patches, the release of V10 is cut to the most necessary minimum sufficient to assemble a simple nucleus module written in Rust. Differences from the last version are reduced to minor editors, replacing SIZEOF with array_size in KallSyms.c and adaptation of patches to the core v6.0-RC7. It is assumed that the minimum patch, the size of which is reduced from from 40 to 13 thousand lines of the code, will simplify the adoption of support for RUST in the main composition of the nucleus. After ensuring the minimum support, it is planned to gradually increase the existing functionality by transferring other changes from the branch rust-for-linux .
The proposed changes make it possible to use Rust as a second language for the development of drivers and nucleus modules. RUST support is presented as an option that is not active in default and not leading to the inclusion of RUST among the mandatory assembly dependencies to the nucleus. The use of RUST to develop drivers will allow you to create safe and better drivers with minimal efforts, delivered from such problems as an appeal to the field of memory after its release, the selection of zero signs and exit by the buffer.
Safe memory work is ensured in RUST during compilation through references checking, tracking the ownership of objects and taking into account the lifetime of objects (visibility), as well as through the assessment of the correctness of access to memory during the performance of the code. RUST also provides means to protect against integer overflow, requires mandatory initialization of variables before use, better processes errors in a standard library, applies the concept of irremovability (Immutable) links and default variables, offers strong static typification to minimize logical errors.