Miguel Ojeda, autore di u prughjettu Rust-for-Linux, hà prupostu una quarta versione di cumpunenti per u sviluppu di i drivers di u dispositivu in a lingua Rust per cunsiderà da i sviluppatori di u kernel Linux. U supportu di Rust hè cunsideratu sperimentale, ma hè digià statu accunsentutu per l'inclusione in u ramu linux-next è hè abbastanza maturu per inizià u travagliu nantu à a creazione di strati di astrazione nantu à i sottosistemi di kernel, è ancu di scrive drivers è moduli. U sviluppu hè finanzatu da Google è l'ISRG (Internet Security Research Group), chì hè u fundatore di u prughjettu Let's Encrypt è prumove HTTPS è u sviluppu di tecnulugia per migliurà a sicurità Internet.
Ricurdativi chì i cambiamenti pruposti permettenu di utilizà Rust cum'è una seconda lingua per u sviluppu di drivers è moduli di kernel. U supportu di Rust hè presentatu cum'è una opzione chì ùn hè micca attivata per automaticamente è ùn hà micca risultatu in l'inclusione di Rust trà e dipendenze di custruzzione necessarie per u kernel. Utilizà Rust per sviluppà i drivers vi permetterà di creà drivers più sicuri è megliu cù u minimu sforzu, senza prublemi cum'è l'accessu à una zona di memoria dopu chì hè liberatu, dereferencing null pointers, è buffer overruns.
A gestione sicura di a memoria hè furnita in Rust à u tempu di compilazione attraversu a verificazione di riferimentu, tenendu traccia di a pruprietà di l'ughjettu è a vita di l'ughjettu (scopu), è ancu per a valutazione di a correttezza di l'accessu di memoria durante l'esekzione di codice. Rust furnisce ancu prutezzione contra i overflows integer, esige l'inizializazione obligatoria di i valori variabili prima di l'usu, gestisce l'errori megliu in a biblioteca standard, applica u cuncettu di referenze immutabili è variabili per difettu, offre una forte tipografia statica per minimizzà l'errori lògichi.
A nova versione di i patches cuntinueghja à eliminà i cumenti fatti durante a discussione di a prima, a seconda è a terza edizione di i patch. In a nova versione:
- A transizione per utilizà a liberazione stabile di Rust 1.58.0 cum'è u compilatore di riferimentu hè stata fatta. Trà i cambiamenti necessarii per u prugettu, chì ùn sò micca ancu inclusi in u toolkit principale di Rust, u flag "-Zsymbol-mangling-version=v0" (aspittatu in Rust 1.59.0) è u modu "maybe_uninit_extra" (aspittatu in Rust 1.60.0). .XNUMX) sò nutati.
- Aghjunghjite cuntrolli automatichi per a dispunibilità di strumenti Rust adattati è espansione a capacità di pruvà u supportu Rust in u sistema.
- Novi astrazioni sò stati pruposti per accede à e tabelle d'identificatore di u dispositivu ("IdArray" è "IdTable") da u codice Rust.
- Strati aghjuntu per accede à e funzioni relative à u timer (quadru di u clock).
- I piloti di piattaforma sò avà definiti attraversu implementazioni di caratteristiche.
- Una nova macro hè stata aghjunta per simplificà a registrazione di i cunduttori di a piattaforma, è hè statu prupostu un novu mudellu di driver genericu.
- Aghjunghje macros per strutture "dev_*".
- Aghjunghjite i metudi "{read,write}*_relaxed" per u tipu IoMem .
- Eliminatu a pruprietà FileOpener per simplificà l'operazioni di u schedariu.
- U paràmetru "ThisModule" hè statu aghjuntu à l'argumenti passati quandu si registra un driver.
- Un mudellu standard per creà moduli di kernel in a lingua Rust hè prupostu.
Source: opennet.ru