Rust non era esente dalle critiche di Linus Torvalds

Poche settimane fa le notizie di about alcune implementazioni che sono state fatte in il ramo linux-next, che include un set iniziale di componenti per sviluppare driver di dispositivo nella lingua Rust.

Questa documentazione è stata pubblicata separatamente sull'uso di Rust nel kernel Linux e un esempio di un modulo del kernel con un driver di dispositivo a caratteri nel linguaggio Rust. Il codice è stato aggiunto da Stephen Rothwell, manutentore della filiale.

Successivamente Linus Torvalds ha esaminato la revisione dell'implementazione patch di possibilità per impostare i driver della lingua Rust nel kernel Linux e ha espresso alcune critiche.

Le lamentele maggiori sono state causate da il potenziale di fuga "Il panico dei guasti in fase di esecuzione" in situazioni sbagliate, ad esempio, in una situazione di memoria insufficiente, quando le operazioni di allocazione dinamica della memoria, comprese le operazioni del kernel, potrebbero non riuscire.

Torvald ha affermato che una tale attenzione al kernel è fondamentalmente inaccettabile, E se non capisci questo punto, puoi rifiutare completamente qualsiasi codice che cerchi di utilizzare un tale approccio. D'altra parte, lo sviluppatore della patch era d'accordo con il problema e lo considerava risolvibile.

Un altro problema sono stati i tentativi di utilizzare i tipi in virgola mobile o 128 bit, che non sono validi per ambienti come il kernel Linux.

Potresti non capire le ramificazioni di quando può accadere, quindi forse
è meno un problema di quanto penso, ma fondamentalmente
Penso che se una mappatura Rust può causare panico, questo è semplicemente
_ fondamentalmente_ non accettabile.

Mappatura degli errori in un controller o codice non core, e cioè per
definizione, tutto il nuovo codice Rust, non può MAI causare
panico validamente. Lo stesso vale per «oh, in alcuni casi non ho provato l'uso di
Intero a 128 bit o virgola mobile '.

Quindi se il compilatore Rust causa assegnazioni nascoste che non possono essere
rilevare e restituire come errori, quindi credo seriamente che tutto questo
l'approccio dovrebbe essere completamente NAK'ed e l'infrastruttura Rust,
a livello di compilatore o nei wrapper del kernel, ne hai bisogno di più
lavoro.

Questo si è rivelato un problema più serio., poiché in questo momento La biblioteca centrale di Rust è indivisibile e rappresenta una grande macchia; non c'è modo di richiedere solo alcune delle funzionalità, evitando così l'utilizzo di una o dell'altra funzionalità problematica.

La soluzione al problema potrebbe richiedere modifiche al compilatore e alla libreria rust, sebbene il team non abbia ancora una strategia su come implementare la modularità per le librerie di linguaggio.

Inoltre, Torvalds ha sottolineato che il controller di esempio fornito è inutile e consigliato di allegare come esempio un driver che risolva uno dei problemi reali.

Prima di questo Google ha annunciato la sua partecipazione a un'iniziativa per promuovere il supporto di Rust nel kernel Linux y fornito aspetti tecnici della fattibilità di implementare Rust per combattere i problemi che derivano da errori nel lavorare con la memoria.

Google pensa che Rust sia pronto per entrare a far parte del C come linguaggio di sviluppo Componenti del kernel Linux. L'articolo fornisce anche esempi di utilizzo del linguaggio Rust per sviluppare driver del kernel, nel contesto del suo utilizzo sulla piattaforma Android (Rust è riconosciuto come linguaggio ufficialmente supportato per lo sviluppo Android).

Notare che Google ha preparato un prototipo iniziale di un controller scritto in Rust per il meccanismo di comunicazione tra processi di Binder, che consentirà un confronto dettagliato delle prestazioni e della sicurezza delle implementazioni di Binder in C e Rust.

Nella sua forma attuale, il lavoro non è stato ancora completato, ma per quasi tutte le astrazioni di base delle funzionalità del kernel richieste per il funzionamento di Binder, i livelli sono stati preparati per utilizzare queste astrazioni nel codice Rust.

Infine, se vuoi saperne di più, puoi controllare 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.

  1.   Miguel Rodriguez suddetto

    Tutte le loro critiche sono valide, dato che Rust è un nuovo linguaggio che funziona con un paradigma diverso da quello del C, è comprensibile la preoccupazione per qualsiasi dettaglio nelle librerie o nel compilatore stesso dove, sebbene il codice sia valido, provoca anche il kernel da rompere, come è implementato e costruito. Ecco perché suggerimenti come poter modulare la libreria per richiamare e mantenere attive solo quelle funzioni necessarie al programma (o in questo caso ad un qualsiasi controllore) funzionano correttamente. Né è irragionevole ciò che chiedi, che ti portino un vero prototipo di controller che fa un buon lavoro su un problema attuale (o almeno fa lo stesso lavoro di uno esistente nel kernel e funziona senza panico).

  2.   Sete suddetto

    Di tanto in tanto rileggo articoli di Linux Adictos Ma mi ci vuole davvero poco per disperare quando vedo che, nonostante i contenuti siano molto buoni, il risultato finale è distrutto da un'ortografia orribile.
    L'ortografia e la grammatica saranno così difficili?
    Una vergogna!
    Tirati su!