Miguel Ojeda, a project author of Rust-for-Linux, proposed an updated version of components for device driver development in the Rust language for consideration by Linux kernel developers. Rust support is considered experimental but has already been agreed for inclusion in the linux-next branch. The new version addresses the comments made during the discussion of the first patch version. Linus Torvalds has already joined the discussion and proposed changes to the logic of handling some bitwise operations.
Ne feledjük, hogy a javasolt változások lehetővé teszik a Rust használatát második nyelvként a meghajtók és modulok fejlesztésében a kernelben. A Rust támogatása lehetőségként van megjelenítve, amely alapértelmezés szerint nem aktív, nem vezetve a Rust kötelező build függőségek közé történő bevonásához a kernelhez. A Rust használata a meghajtók fejlesztésében lehetővé teszi, hogy minimális erőfeszítéssel biztonságosabb és jobb minőségű meghajtókat készítsünk, amelyek mentesek az olyan problémáktól, mint a memória törlés utáni hozzáférés, null pointerek dereferálása és a buffer határai túllépése.
A memória biztonságos kezelése a Rust nyelvben a fordítás során a hivatkozások ellenőrzésével, az objektumok tulajdonlásának nyomon követésével, valamint az objektumok élettartamának (láthatóságának) figyelembevételével történik, továbbá a memóriához való hozzáférés helyességének értékelésével a kód futtatása alatt. A Rust eszközöket is biztosít a egész számok túlfutásának védelmére, kötelezővé teszi a változók értékeinek inicializálását használat előtt, jobban kezeli a hibákat a standard könyvtárban, alkalmazza az immutable (változhatatlan) hivatkozások és változók fogalmát alapértelmezés szerint, valamint erős statikus típust kínál a logikai hibák minimalizálására.
The most notable changes in the new patch version include:
- The code for memory allocation is free from potential 'panic' state generations when errors occur, such as memory shortages. Included is a version of the Rust library alloc, which has revised the error handling code, but the end goal is to transfer into the main edit of alloc all capabilities necessary for the kernel (changes have already been prepared and submitted to the Rust standard library).
- Instead of nightly builds for compiling kernels with Rust support, beta releases and stable releases of the rustc compiler can now be used. Currently, rustc 1.54-beta1 is used as the reference compiler, but after the release of 1.54 at the end of the month, it will be supported as the reference.
- Support for writing tests using the standard Rust attribute '#[test]' has been added, along with the ability to apply doctests for documenting tests.
- Support for ARM32 and RISCV architectures has been added in addition to the previously supported x86_64 and ARM64.
- Implementations of GCC Rust (the GCC frontend for Rust) and rustc_codegen_gcc (the rustc backend for GCC) have been improved, which now passes all basic tests.
- A new abstraction level has been proposed for using kernel mechanisms written in C in Rust programs, such as red-black trees, reference-counted objects, file descriptor creation, tasks, files, and input/output vectors.
- In driver development components, support for the 'file_operations' module, the 'module!' macro, macro registration, and rudimentary drivers (probe and remove) has been improved.
- File descriptor transmission and LSM hook support have been implemented in Binder.
- Funkcionálisabb példaként bemutatásra került egy Rust alapú meghajtó — bcm2835-rng, amely a Raspberry Pi platformok hardveres véletlenszám-generátorához készült.
Emellett említésre kerül néhány cég projektje, amelyek Rust használatával kapcsolatosak a kernelben:
- A Microsoft érdeklődését fejezte ki a Rust támogatásának integrálásához a Linux kernelbe, és az elkövetkező hónapokban tervezi a Hyper-V-hez készült Rust alapú meghajtók megvalósítását.
- Az ARM cég a Rust támogatásának javításán dolgozik az ARM architektúrájú rendszerekhez. A Rust projekthez már javasoltak módosításokat, amelyek a 64 bites ARM rendszereket a támogatott platformok első szintjére (Tier-1) helyezik.
- A Google közvetlenül támogatja a Rust for Linux projektet, új megvalósítást fejleszt a Binder köztes kommunikációs mechanizmushoz Rust nyelven, és fontolgatja különböző meghajtók Rust-ra való átírását. Az ISRG (Internet Security Research Group) segítségével a Google finanszírozta a Rust támogatásának Linux kernelbe történő integrálásához szükséges munkát.
- Az IBM Rust támogatást valósított meg a kernel számára PowerPC rendszerekhez.
- Az LSE (Systems Research Laboratory) Rust nyelven SPI-meghajtót fejlesztett ki.
Forrás: opennet.ru
