Rust per Linux include diversi miglioramenti da supportare

Negli ultimi mesi Gli sviluppatori di Linux hanno litigato la possibilità di consentire l'uso della lingua Rust per scrivere nuovi driver di dispositivo per il kernel.

L'anno scorso, gli sviluppatori del kernel Linux sembrano aver raggiunto un accordo sulla questione, I sostenitori di Rust hanno citato lavori che mostrano che circa i due terzi delle vulnerabilità del kernel assegnate ai CVE in Android e Ubuntu sono correlati a problemi di sicurezza della memoria.

A seguito di questa affermazione, Linus Torvalds, ingegnere del software, creatore principale e sviluppatore del kernel Linux, ha affermato in un'intervista che le discussioni sull'argomento sarebbero molto più importanti di un lungo post di Google sulla lingua.

Quando gli è stato chiesto del suggerimento per usare Rust, ha indicato che "La soluzione qui è semplice: usa semplicemente C ++ invece di Rust".

Dopo di che a marzo è stato lanciato il primo supportoe che ha permesso di posizionare i driver Rust nell'albero Linux-Next per ulteriori test prima della loro eventuale inclusione nel kernel principale.

Subito dietro c'era una "richiesta di commento" ripubblicata sulla mailing list del kernel sulla prospettiva del codice Rust per il kernel Linux.

Miguel OjedaLo sviluppatore del kernel Linux ha avviato una proposta di richiesta di commenti (RFC) sulla mailing list del kernel Linux.

Il post sulla mailing list ha delineato le convinzioni degli sviluppatori coinvolti nell'aggiunta di codice Rust al kernel, vantaggi come una maggiore sicurezza della memoria e altro ancora.

“Alcuni di voi hanno notato nelle ultime settimane e mesi che si sta facendo un serio tentativo di portare una seconda lingua nel kernel. Finalmente ci siamo, con un RFC che aggiunge il supporto Rust al kernel Linux ", ha affermato Miguel Ojeja. "Sappiamo che l'introduzione di un nuovo linguaggio nel kernel comporta costi e rischi enormi", ha aggiunto.

Il team del progetto Rust per Linux spostato dal compilatore beta di Rust all'utilizzo di versioni stabili, migrando ogni volta che viene rilasciata una nuova versione.

"Vorremmo ringraziare Rust per aver lavorato con noi su queste opzioni in modo che il kernel possa utilizzarle", ha affermato Miguel.

Durante l'aggiornamento del compilatore, il team è stato in grado di rimuovere alcune funzionalità instabili dall'elenco: const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic e try_reserve.

Oltre a ciò, si evidenzia che sono state aggiunte alcune opzioni di modularizzazione more to alloc per disabilitare alcune funzioni non necessarie: no_rc e no_sync.

A monte, affinché il caso d'uso del kernel sia ben supportato, o più precisamente il "mix" di opzioni di cui ha bisogno il kernel, il core Upstream ha anche aggiunto no_fp_fmt_parse.

D'altra parte, Rust ha abilitato una serie di diagnostica aggiuntiva per il compilatore Rust e Clippy. Una differenza rispetto a C è che la diagnostica di Rust è un po' più facile da disabilitare nel codice, il che è più rigoroso nel caso generale.

anche sono state implementate le astrazioni e gli aggiornamenti dei driver. Il team ha aggiunto astrazioni per blocchi di flusso, callback per la gestione dell'alimentazione, memoria io (readX / writeX), chip irq e stream manager di alto livello, chip gpio (inclusi chip irq), periferiche, periferiche amba e driver.

Il supporto di controller è potenziato con un'infrastruttura indipendente dal bus, Oggetti revocabili, mutex revocabili, iteratori di bit efficienti, migliore diagnostica antipanico e wrapper di puntatori semplificati. Inoltre, ha migliorato e semplificato gli oggetti Ref (compatibili con refcount_t) e ha sostituito tutte le istanze di Rust.

E un nuovo driver per i dispositivi gpio PL061 è stato implementato e spedito come patch RFC.

Infine va notato che Il supporto per la ruggine è ancora considerato sperimentale; tuttavia, il supporto è abbastanza buono che gli sviluppatori del kernel si mettono al lavoro nelle astrazioni di Rust per sottosistemi di scrittura e controller e altri moduli. La serie attuale è appena arrivata su Linux-next, quindi la prima esecuzione avrà luogo questa settimana.

fonte: https://lkml.org/lkml


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.