Miguel Ojeda, a szerző a Rust-for-Linux projekten, negyedik változatot javasolt a Linux kernel fejlesztői számára, a Rust nyelven írt eszközmeghajtó komponensek számára. A Rust támogatása kísérleti jellegűnek számít, de már jóváhagyásra került a linux-next ágba való beillesztésre, és elég fejlett ahhoz, hogy elkezdjük az absztrakciós rétegek létrehozását a kernel alrendszerei fölött, valamint a meghajtók és modulok írását. A fejlesztést a Google és az ISRG (Internet Security Research Group) finanszírozza, amely a Let's Encrypt projekt alapítója és a HTTPS elősegítésére, valamint az internet biztonságának javítására irányuló technológiák fejlesztésére törekszik.
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.
Az új patchek verziójában továbbra is folytatódik az első, második és harmadik változat patchek során felvetett észrevételek javítása. Az új verzió:
- Átálltunk a Rust 1.58.0 stabil verziójának használatára referencia fordítóként. A projekthez szükséges, a Rust fő eszközcsomagba még nem beépített változások között szerepel a „-Zsymbol-mangling-version=v0” zászló (amely a Rust 1.59.0-ban várható) és a „maybe_uninit_extra” mód (amely a Rust 1.60.0-ban várható).
- Automatikus ellenőrzéseket adtunk hozzá a megfelelő Rust eszközök elérhetőségére, valamint bővítettük a Rust támogatásának tesztelési lehetőségeit a rendszerben.
- Új absztrakciókat javasoltunk a Rust nyelven írt kód számára az eszközazonosítók táblázataihoz való hozzáféréshez (IdArray és IdTable).
- Köztes rétegeket adtunk hozzá az időzítőhöz kapcsolódó funkciók eléréséhez (clock framework).
- A platformokhoz tartozó meghajtókat most a típusok implementálásával határozzuk meg.
- Új makrót adtunk hozzá a platformmeghajtók regisztrálásának egyszerűsítésére, és javasoltunk egy új típusú meghajtó sablont.
- Makrókat adtunk hozzá a „dev_*” struktúrákhoz.
- Hozzáadtuk a „{read,write}*_relaxed” metódusokat az IoMem<T> típushoz.
- Eltávolítottuk a FileOpener tulajdonságot a fájlműveletek egyszerűsítése érdekében.
- A meghajtó regisztrálásakor átadott argumentumok közé bekerült a „ThisModule” paraméter.
- Javasoltunk egy típusos sablont a Rust nyelven írt kernel modulok létrehozására.
Forrás: opennet.ru
