Miguel Ojeda, autor projekta Rust-for-Linux, Teme je nedavno predstavio četvrti prijedlog za komponente upravljačkog programa uređaja Rust za programere Linux kernela koje treba uzeti u obzir.
Podrška hrđe smatra se eksperimentalnom, ali već je dogovoreno da bude uključen u linux-next granu i dovoljno je zreo da počne raditi na slojevima apstrakcije na vrhu podsustava kernela, kao i pisati upravljačke programe i module. Razvoj financiraju Google i ISRG (Internet Security Research Group), koji je osnivač projekta Let's Encrypt i promiče HTTPS i razvoj tehnologija za povećanje internetske sigurnosti.
Oni koji još nisu upoznati s predloženim promjenama, trebaju znati da one to omogućuju korištenje Rusta kao drugog jezika za razvoj kontrolera i modula jezgre. Podrška za Rust predstavljena je kao opcija koja nije omogućena prema zadanim postavkama i ne rezultira uključivanjem Rusta među potrebne ovisnosti izgradnje za kernel.
Korištenje Rusta za razvoj upravljačkih programa omogućit će vam stvaranje boljih i sigurnijih upravljačkih programa uz minimalan napor, bez problema kao što je pristup memorijskom području nakon što ga oslobodite, dereferenciranje nul pokazivača i prelijevanja međuspremnika.
Sigurnost memorije je osigurana u Rustu u vrijeme prevođenja provjerom referenci, praćenjem vlasništva nad objektom i životnim vijekom objekta (opseg), kao i procjenom ispravnosti pristupa memoriji tijekom izvršavanja koda.
Rust također pruža zaštitu od prekoračenja cijelog broja, zahtijeva da se varijable inicijaliziraju prije upotrebe, bolje obrađuje pogreške u standardnoj biblioteci, provodi koncept nepromjenjivih varijabli i referenci prema zadanim postavkama i nudi snažno statičko tipkanje kako bi se minimizirale logičke pogreške. .
Koje su promjene u četvrtom dijelu?
U ovoj novoj verziji zakrpa koje su predstavljene spominje se da su komentari dani tijekom rasprave o prvom, drugom i trećem izdanju zakrpa i dalje eliminirani.
Nastavit ćemo ažurirati sve dok ne ovisimo o nestabilnim značajkama;
u kojem trenutku ćemo možda htjeti početi deklarirati minimalnu verziju Rusta
je podržan, kao što je učinjeno, na primjer, za GCC i Clang.Slično, također smo prešli na izdanje Rust jezika iz 2021.
Što se tiče ostalih promjena koje su napravljene u ovoj novoj verziji, u najavi se spominje sljedeće:
- Prešao na korištenje stabilnog Rusta 1.58.0 kao referentnog prevoditelja.
- Promjene potrebne za projekt, koje još nisu uključene u glavni Rust alat, uključuju oznaku "-Zsymbol-mangling-version=v0" (očekuje se u Rust 1.59.0) i "maybe_uninit_extra" način (očekuje se u Rust 1.60.0) .
- Dodane su automatske provjere dostupnosti Rust alata i njihove prikladnosti, a proširena je i mogućnost testiranja Rust podrške na sustavu.
- Predlažu se nove apstrakcije kako bi mogli pristupiti tablicama identifikatora uređaja ("IdArray" i "IdTable") iz Rust koda.
- Dodani slojevi za pozivanje funkcija koje su povezane s timerom (okvir sata).
- Kontroleri platforme sada su definirani kroz implementacije svojstava.
- Dodan je novi makro kako bi se pojednostavila registracija upravljačkog programa platforme i predložen je novi generički predložak upravljačkog programa.
- Dodane nove makronaredbe za strukture "dev_*".
- Dodane nove metode "{read,write}*_relaxed" za IoMem tip .
- Uklonjeno svojstvo FileOpener kako bi se pojednostavile operacije s datotekama.
- Dodan parametar "ThisModule" broju argumenata proslijeđenih tijekom registracije kontrolera.
- Predložen je tipičan predložak za izradu modula kernela u jeziku Rust.
Konačno, ako ste zainteresirani da možete saznati više o ovoj novoj verziji, možete pogledati detalje U sljedećem linku.