Miguel Ojeda, a Rust-for-Linux projekt szerzője az eszközillesztő-fejlesztéshez szükséges összetevők ötödik verzióját javasolta a Rust nyelven, hogy a Linux kernel fejlesztői megfontolják. A Rust támogatás kísérleti jellegűnek tekinthető, de már benne van a linux-next ágban, és kellően fejlett ahhoz, hogy megkezdődjön a kernel alrendszerek feletti absztrakciós rétegek létrehozása, valamint az illesztőprogramok és modulok írása. 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-t és az internet biztonságát javító technológiák fejlesztését népszerűsíti.
Emlékezzünk vissza, hogy a javasolt változtatások lehetővé teszik a Rust második nyelvként való használatát illesztőprogramok és kernelmodulok fejlesztéséhez. A Rust támogatása olyan opcióként jelenik meg, amely alapértelmezés szerint nincs engedélyezve, és nem eredményezi, hogy a Rust szerepeljen a kernel szükséges összeállítási függőségeként. A Rust használata az illesztőprogramok fejlesztésére lehetővé teszi, hogy minimális erőfeszítéssel biztonságosabb és jobb illesztőprogramokat hozzon létre, olyan problémáktól mentesen, mint például a memória felszabadítása utáni hozzáférés, nullmutató hivatkozások és puffertúllépések.
A memóriabiztos kezelést a Rust fordítási időben biztosítja a referenciaellenőrzés, az objektum tulajdonjogának és az objektum élettartamának (hatókörének) nyomon követésével, valamint a kódvégrehajtás során a memória-hozzáférés helyességének értékelésével. A Rust védelmet nyújt az egész számok túlcsordulása ellen is, megköveteli a változó értékek kötelező inicializálását használat előtt, jobban kezeli a hibákat a szabványos könyvtárban, alapértelmezés szerint alkalmazza a megváltoztathatatlan hivatkozások és változók koncepcióját, erős statikus gépelést kínál a logikai hibák minimalizálása érdekében.
A javítások új verziója továbbra is megszünteti a javítások első, második, harmadik és negyedik kiadásának tárgyalása során elhangzott megjegyzéseket. Az új verzióban:
- Az Intel által támogatott 0DAY/LKP botra épülő folyamatos integrációs rendszerbe bekerült a Rust támogatás komponenstesztelése, és megkezdődött a tesztelési jelentések közzététele. Arra készülünk, hogy a Rust támogatást integráljuk a KernelCI automatizált tesztelési rendszerébe. A GitHub CI-n alapuló tesztelés átkerült a konténerek használatára.
- A Rust kernel modulok felszabadulnak a „#![no_std]” és „#![feature(…)]” láda attribútumok meghatározásától.
- Hozzáadott támogatás az egyes összeállítási célokhoz (.o, .s, .ll és .i).
- A kódra vonatkozó irányelvek szabályokat határoznak meg a megjegyzések („//”) és a dokumentálási kód („///”) elkülönítésére.
- Az is_rust_module.sh szkript átdolgozásra került.
- A statikus (globális megosztott változó) szinkronizálási primitívek támogatása a „CONFIG_CONSTRUCTORS” megvalósítás alapján.
- A zárkezelés leegyszerűsödött: a Guard és a GuardMut kombinált és egy paraméterezett típus.
- Lehetőség van további paraméterek megadására az eszközök regisztrálásakor.
- Hozzáadtuk az "RwSemaphore" absztrakciót, amely burkolóként működik az rw_semaphore C szerkezet felett.
- Az mmap használatához egy új mm-modul és egy VMA-absztrakció került hozzáadásra (a vm_area_struct struktúra felett egy burkoló).
- A GPIO PL061 illesztőprogram a „dev_*!” makró használatára vált.
- Megtörtént a kód általános tisztítása.
Forrás: opennet.ru