U martu ove godine na linux-next grani koji je u to vrijeme radio za Linux kernel 5.13, Uključen je početni skup komponenata za razvoj upravljačkih programa uređaja u jezik Rust i sada je postavljen zahtjev za uključivanje drugog izdanja zakrpa za dodavanje Rust podrške Linux jezgri.
Osoba koja je zahtjev poslala programerima Linuxa je Miguel Ojeda, autor projekta Rust-for-Linux i o kojem smo također razgovarali prije nekoliko dana, budući da je angažiran da preuzme odgovornost za projekt "Prossimo" koji je u osnovi fokusira se na koordinaciju napora da se kritična softverska infrastruktura premjesti na zaštićeni kod za zaštitu Linux memorije jezgre pomoću Rusta (ako želite znati više o projektu, možete se posavjetovati objavljivanje na donjem linku.)
Zahtjev koji je poslao Miguel Ojeda druga je ažurirana verzija komponenata za razvoj upravljačkih programa uređaja na jeziku Rust i u kojima se brišu komentari dani tijekom rasprave o prvoj verziji zakrpa i na koje se Linus Torvalds već pridružio raspravi te predložio promjenu logike za obradu nekih bitnih operacija.
Unutar prednosti koji su spomenuti su to u Rustu je zagarantovano sigurno upravljanje memorijom u vrijeme kompajliranja provjerom referenci, praćenjem vlasništva nad objektom i vijekom trajanja objekta, kao i procjenom ispravnosti pristupa memoriji u vrijeme izvođenja.
Rust takođe pruža zaštita od preljeva cijelog broja, zahtijeva obveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje pogreške u standardnoj biblioteci, po defaultu usvaja koncept referenci i nepromjenjivih varijabli i nudi snažno statičko pisanje kako bi se minimizirale logičke pogreške.
Od promena koje se ističu ove nove verzije zakrpa se spominje:
- Kôd za dodjelu memorije sprječava mogućnost stvaranja panike kada se pojave pogreške poput nestanka memorije.
- Uključen je varijanta Rust alloc biblioteke, u kojoj je kôd prerađen da bi obradio brave, ali krajnji cilj je dovesti sve potrebne značajke za kernel u glavno izdanje aloca (promjene su već pripremljene i prenesene u standardnu Rust knjižnicu).
- Umjesto noćnih izrada, sada se mogu koristiti beta i stabilne verzije kompajler rustc za kompajliranje jezgre s omogućenom Rustom. Trenutno se rustc 1.54-beta1 koristi kao referentni kompajler, ali nakon izdanja 1.54 krajem mjeseca, bit će podržan kao referentni kompajler.
- Dodana podrška za pisanje testova pomoću standardnog Rust atributa "# [test]" i mogućnost korištenja doctestova za korištenje uzorka koda iz dokumentacije kao testova.
- Podrška za ARM32 i RISCV arhitekture dodana je uz prethodno podržane x86_64 i ARM64.
Poboljšane GCC implementacije Rust (GCC sučelje za Rust) i rustc_codegen_gcc (rustc pozadina za GCC), koji sada prolazi sve kriterije. - A novi nivo apstrakcije za programe Rust da koriste mehanizme jezgre napisane na jeziku C, poput drveća, objekata za brojanje referenci, stvaranje deskriptora datoteka, zadataka, datoteka i I / O vektora.
- Komponente za razvoj upravljačkih programa poboljšale su podršku za modul "file_operations", makronaredbu "module!", Evidentiranje makronaredbi i osnovne upravljačke programe (sondiranje i brisanje).
- Binder ima podršku za prosljeđivanje deskriptora datoteka i LSM veza.
- Funkcionalniji primjer Rust upravljačkog programa, bcm2835-rng, predložen je za hardverski generator slučajnih brojeva za Raspberry Pi ploče.
Konačno, ako ste zainteresirani da saznate više o tome, možete potražiti detalje Na sledećem linku.