La seconda versione delle patch per il supporto dei driver Rust su Linux è già stata distribuita

A marzo di quest'anno sul ramo linux-next in cui all'epoca funzionava per il kernel Linux 5.13, È stato incluso un set iniziale di componenti per sviluppare driver di dispositivo in la lingua Rust e ora è stata fatta la richiesta di includere una seconda edizione di patch per aggiungere il supporto Rust al kernel Linux.

La persona che ha inviato la richiesta agli sviluppatori Linux è Miguel Ojeda, autore del progetto Rust-for-Linux e di cui abbiamo parlato anche qualche giorno fa, poiché è stato assunto per farsi carico del progetto "Prossimo" che sostanzialmente si concentra sul coordinamento degli sforzi per spostare l'infrastruttura software critica su un codice sicuro per proteggere la memoria del kernel Linux con Rust (se vuoi saperne di più sul progetto, puoi consultare postando al link sottostante.)

Driver Rust su Linux
Articolo correlato:
Prossimo, un progetto ISRG per proteggere la memoria del kernel Linux con Rust

La richiesta inviata da Miguel Ojeda è una seconda versione aggiornata dei componenti per lo sviluppo dei device driver in linguaggio Rust e in cui vengono cancellati i commenti fatti durante la discussione della prima versione delle patch e ai quali Linus Torvalds si era già unito alla discussione e suggerito di cambiare la logica per elaborare alcune operazioni sui bit.

Dentro i vantaggi che sono menzionati sono che la gestione sicura della memoria è garantita in Rust in fase di compilazione controllando i riferimenti, tenendo traccia della proprietà dell'oggetto e della durata dell'oggetto, nonché valutando la correttezza dell'accesso alla memoria in fase di esecuzione.

Ruggine fornisce anche protezione da overflow intero, richiede l'inizializzazione obbligatoria dei valori delle variabili prima dell'uso, gestisce meglio gli errori nella libreria standard, adotta il concetto di riferimenti e variabili immutabili per impostazione predefinita e offre una forte scrittura statica per ridurre al minimo gli errori logici.

Dei cambiamenti che risaltano di questa nuova versione delle patch si menziona:

  • Il codice di allocazione della memoria impedisce la possibilità di generare un panico quando si verificano errori come memoria insufficiente.
  • È incluso una variante della libreria Rust alloc, in cui il codice è stato rielaborato per gestire le serrature, ma l'obiettivo finale è portare tutte le funzionalità necessarie per il kernel nell'edizione principale di alloc (le modifiche sono già state preparate e trasferite alla libreria Rust standard).
  • Invece delle build notturne, ora è possibile utilizzare le versioni beta e stabili Rustc compilatore per compilare un kernel abilitato per Rust. Attualmente rustc 1.54-beta1 viene utilizzato come compilatore di riferimento, ma dopo il rilascio 1.54 alla fine del mese, sarà supportato come compilatore di riferimento.
  • Aggiunto il supporto per la scrittura di test utilizzando l'attributo Rust standard "# [test]" e la possibilità di utilizzare doctests per utilizzare il codice di esempio dalla documentazione come test.
  • È stato aggiunto il supporto per le architetture ARM32 e RISCV oltre a x86_64 e ARM64 precedentemente supportati.
    Implementazioni GCC migliorate Rust (il frontend GCC per Rust) e rustc_codegen_gcc (il backend rustc per GCC), che ora supera tutti i benchmark.
  • UN nuovo livello di astrazione affinché i programmi Rust utilizzino meccanismi del kernel scritti in C, come alberi, oggetti di conteggio dei riferimenti, creazione di descrittori di file, attività, file e vettori di I/O.
  • I componenti di sviluppo del driver hanno migliorato il supporto per il modulo "file_operations", il "module!" Macro, registrazione macro e driver rudimentali (sonda ed elimina).
  • Binder supporta il passaggio di descrittori di file e collegamenti LSM.
  • Un esempio più funzionale di un driver Rust, bcm2835-rng, è proposto per un generatore di numeri casuali hardware per schede Raspberry Pi.

Infine, se sei interessato a saperne di più, puoi consultare i dettagli nel seguente link


Lascia un tuo commento

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

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  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.