Nuova versione dei patch per il kernel Linux con supporto per il linguaggio Rust

Miguel Ojeda, autore del progetto Rust-for-Linux, ha proposto agli sviluppatori del kernel Linux di considerare il rilascio della v5 dei componenti per lo sviluppo di driver per dispositivi in linguaggio Rust. Si tratta della sesta edizione delle patch tenendo conto della prima versione, pubblicata senza numero di versione. Il supporto per Rust è considerato sperimentale, ma è già incluso nel ramo linux-next ed è sufficientemente sviluppato per iniziare a lavorare sulla creazione di layer di astrazione sopra le sottosistemi del kernel, oltre a scrivere driver e moduli. Lo sviluppo è finanziato da Google e dall'organizzazione ISRG (Internet Security Research Group), che è il fondatore del progetto Let's Encrypt e promuove l'adozione di HTTPS e lo sviluppo di tecnologie per migliorare la sicurezza di Internet.

Ricordiamo che le modifiche proposte consentono di utilizzare Rust come secondo linguaggio per lo sviluppo di driver e moduli del kernel. Il supporto per Rust è presentato come un'opzione, non attiva per impostazione predefinita e non comporta l'inclusione di Rust tra le dipendenze di build obbligatorie per il kernel. L'utilizzo di Rust per la creazione di driver permetterà di realizzare driver sicuri e di maggiore qualità con un minimo sforzo, eliminando problemi come l'accesso alla memoria dopo che è stata liberata, la dereferenzazione di puntatori nulli e il superamento dei limiti del buffer.

La gestione sicura della memoria in Rust viene garantita durante la compilazione tramite il controllo dei riferimenti, il tracciamento della proprietà degli oggetti e la gestione del tempo di vita degli oggetti (scope), nonché tramite la valutazione della correttezza dell'accesso alla memoria durante l'esecuzione del codice. Rust fornisce anche strumenti per proteggere contro i sovraccarichi numerici, richiede l'inizializzazione obbligatoria dei valori delle variabili prima dell'uso, gestisce meglio gli errori nella libreria standard, applica il concetto di riferimenti e variabili immutabili (immutable) per impostazione predefinita e offre una forte tipizzazione statica per minimizzare gli errori logici.

Nella nuova versione delle patch continua l'eliminazione delle osservazioni espresse durante la discussione della prima, seconda, terza, quarta e quinta edizione delle patch. Nella nuova versione:

  • Gli strumenti sono stati aggiornati alla versione Rust 1.59.0. Con la nuova versione di Rust è stato sincronizzato anche il modulo alloc, eliminando la possibilità di generare stati di "panic" in caso di errori, come l'esaurimento della memoria. È stata stabilizzata la possibilità di utilizzare inserti di assembly ("feature(global_asm)").
  • Aggiunta il supporto per la creazione di programmi host in linguaggio Rust utilizzati nel processo di compilazione del kernel.
  • Invece di fornire file precreati con la specifica delle piattaforme di destinazione, è garantita la loro generazione dinamica basata sulla configurazione del kernel.
  • Aggiunto il parametro del kernel HAVE_RUST, attivato per le architetture che supportano Rust.
  • Fornite astrazioni per l'uso nel codice Rust di un generatore di numeri pseudocasuali hardware.
  • Consentito l'uso di codici di errore senza il prefisso "Error::" (ad esempio, "return Err(EINVAL)") per avvicinarsi alla gestione dei codici di errore in C.
  • Aggiunto il tipo "CString" per le stringhe C native. Unificati i tipi Formatter e Buffer.
  • Aggiunti i trait Bool e LockInfo.
  • Semplificata l'implementazione dei lock spin.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster