Nella branch linux-next, da cui sarà generata la release del kernel Linux 5.13, è stato incluso un insieme iniziale di componenti per lo sviluppo di driver di dispositivi in linguaggio Rust. È stata pubblicata separatamente la documentazione sull'uso di Rust nel kernel Linux e un esempio di modulo del kernel con un driver di dispositivo a caratteri in linguaggio Rust. Il codice è stato aggiunto da Stephen Rothwell, mantenitore della branch Linux-next. Di solito, la branch linux-next include codice pronto per l'inclusione nel prossimo ciclo di accettazione delle modifiche al kernel, ma non è ancora chiaro se il supporto per Rust sarà accettato da Linus Torvalds nell'ambito di Linux 5.13, poiché il codice non è stato sottoposto a revisione da un ampio gruppo di sviluppatori.
Il supporto per lo sviluppo di driver del kernel Linux in linguaggio Rust è stato ampiamente discusso lo scorso anno, inclusa la partecipazione di Linus Torvalds, che non ha escluso tale possibilità. L'idea è stata sostenuta anche da Greg Kroah-Hartman, responsabile del supporto della branch stabile del kernel Linux. L'uso di Rust per lo sviluppo di driver consentirà di creare driver sicuri e di migliore qualità con sforzi minimi, eliminando problemi come accessi a aree di memoria dopo la loro liberazione, dereferenziazione di puntatori nulli e superamento dei limiti del buffer.
Per attivare il supporto per Rust nella branch linux-next, è stata aggiunta un'opzione CONFIG_RUST in KConfig ("Supporto Rust" nel menu "Impostazioni generali"). Abilitando questa opzione, viene controllata la presenza del compilatore rustc nel sistema e, in caso di presenza, si dà la possibilità di attivare gli altri componenti legati a Rust (ad esempio, nel menu "Kernel hacking" appare la sezione "Rust hacking"). L'uso di Rust è considerato un'opzione, non attiva per impostazione predefinita e non porta all'inclusione di Rust tra le dipendenze di compilazione obbligatorie per il kernel.
La compilazione dei componenti del kernel in Rust è possibile sia utilizzando GCC che tramite la compilazione con Clang. Per utilizzare Rust nel kernel è necessaria l'installazione delle ultime versioni notturne del compilatore rustc, non più vecchie della branch nightly-2021-02-20 (si promette di aggiungere supporto per le branch stabili di Rust, ma al momento c'è un legame con alcune funzionalità sperimentali). È inoltre necessaria la presenza nel sistema delle librerie standard di Rust, fornite nel pacchetto rust-src, e del generatore di binding bindgen. Il supporto è attualmente limitato alle piattaforme x86_64 e ARM64.
Fonte: opennet.ru
