Miguel Ojeda, l'autore di u prughjettu Rust-for-Linux, hà prupostu una quinta versione di cumpunenti per u sviluppu di driver di u dispositivu in a lingua Rust per cunsiderà i sviluppatori di u kernel Linux. U supportu Rust hè cunsideratu sperimentale, ma hè digià inclusu in u ramu linux-next è hè abbastanza sviluppatu 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, seconda, terza è quarta edizione di i parche. In a nova versione:
- A prova di cumpunenti per u supportu di Rust hè stata aghjunta à u sistema di integrazione cuntinuu basatu annantu à u bot 0DAY / LKP supportatu da Intel è a publicazione di rapporti di prova hè stata cuminciata. Avemu preparatu per integrà u supportu Rust in u sistema di teste automatizatu KernelCI. A prova basata nantu à GitHub CI hè stata trasferita à l'usu di cuntenituri.
- I moduli di u kernel Rust sò liberati da a necessità di definisce l'attributi crate "#! [no_std]" è "#! [caratteristica (...)]".
- Aghjunghje supportu per i miri di assemblea unicu (.o, .s, .ll è .i).
- E linee guida di u codice definiscenu e regule per a separazione di i cumenti ("//") è u codice di documentazione ("///").
- U script is_rust_module.sh hè statu ritruvatu.
- Aggiuntu supportu per primitivi di sincronizazione statica (variabile cumuna globale) basatu annantu à l'implementazione "CONFIG_CONSTRUCTORS".
- A gestione di serratura hè simplificata: Guard è GuardMut sò cumminati è un tipu parametrizzatu.
- Hè pussibule definisce paràmetri supplementari quandu si registranu i dispositi.
- Aggiunta l'astrazione "RwSemaphore", chì agisce cum'è un wrapper nantu à a struttura C rw_semaphore.
- Per utilizà mmap, un novu modulu mm è una astrazione VMA sò stati aghjuntu (un wrapper sopra a struttura vm_area_struct).
- U driver GPIO PL061 hè stata cambiata per utilizà a macro "dev_*!".
- Una pulizia generale di u codice hè stata realizata.
Source: opennet.ru