Con nella prossima versione del kernel Linux 6.1 c’è l’infrastruttura Rust iniziale unita per consentire l’uso del linguaggio di programmazione Rust per i futuri driver del kernel e altro codice del kernel. Ma quello stato in Linux 6.1 è molto basilare e non ancora pratico, mentre ora è stata inviata una seconda spedizione di patch”Rust per Linux”per consentire lo sviluppo di più kernel con Rust.
Miguel Ojeda, che ha guidato lo sforzo di Rust per Linux giovedì, ha inviato una serie di 28 patch che forniscono ulteriori aggiunte al kernel di Rust. Ojeda ha spiegato nella serie di patch questa ultima grande serie di patch:
Questa serie di patch è il primo batch di modifiche a monte del resto del supporto di Rust.
In questo caso, tutte le strutture introdotte fanno parte del”Rust core”. Non interagiscono con il lato C in nuovi modi principali (nessun nuovo tipo C utilizzato; solo `strlen`, `memchr`, codici di errore aggiuntivi e altre stringhe di formato `printk`).
Dopo questa serie, `str.rs` e `print.rs` sono sincronizzati con il downstream e tutte le restanti macro proc sono state aggiunte. Anche `error.rs` è abbastanza completo, anche se alcune altre funzionalità di `pub(crate)` arriveranno in seguito (per evitare di lasciare codice morto tra le serie).
Nota che alcuni attributi temporanei `#[allow(dead_code)]` vengono usati per avere un po’più di libertà nell’organizzazione delle patch mantenendole tutte costruibili senza avvisi/errori, ma alla fine delle serie non ne rimane nessuna (di quelle temporanee).
Praticamente tutto il codice è in linux-next da mesi e faceva parte della serie di patch Rust prima del taglio (cioè fino alla v8).
Ogni patch è stata testata su un `defconfig` abilitato per Rust con `CLIPPY=1` sui target `all`, `rustfmtcheck`, `rustdoc` e `rusttest`.
Dato che questo codice è in linux-next da un po’e ha già visto alcune revisioni come parte della serie di patch originali di Rust per Linux, è del tutto possibile che potremmo vedere questo lavoro pronto in tempo per il Finestra di unione di Linux 6.2 il mese prossimo. Vedremo. In ogni caso il treno Rust per Linux continua a girare.
Una volta che tutta questa infrastruttura di Rust sarà a posto, vedremo quanto tempo ci vorrà prima che i driver più importanti del mondo reale inizino a passare al codice Rust per il nuovo supporto hardware o per la riscrittura del codice del driver C esistente in Rust. Uno dei primi grandi utenti di Rust nel kernel Linux dovrebbe essere il driver DRM per la grafica Apple M1/M2.
Separatamente, ieri la National Security Agency degli Stati Uniti ha pubblicato una guida sulla protezione dai problemi di sicurezza della memoria. La rapporto NSA suggerisce di utilizzare il linguaggio di programmazione Rust o altri linguaggi sicuri per la memoria come Swift, Java, Go, Ruby e C#.