Il supporto Rust per il kernel Linux deve affrontare le critiche di Torvalds

Linus Torvalds ha esaminato le patch che implementavano la possibilità di creare driver nel linguaggio Rust per il kernel Linux e ha formulato alcuni commenti critici.

Le maggiori lamentele sono state causate dalla potenziale possibilità di panico() in situazioni di errore, ad esempio, in una situazione di memoria insufficiente, quando le operazioni di allocazione dinamica della memoria, anche all'interno del kernel, potrebbero fallire. Torvalds ha affermato che un simile approccio nel kernel è fondamentalmente inaccettabile e, se non si capisce questo punto, può completamente NAKed qualsiasi codice che tenti di utilizzare un simile approccio. D'altra parte, lo sviluppatore della patch è d'accordo con questo problema e lo considera risolvibile.

Un altro problema erano i tentativi di utilizzare tipi a virgola mobile o a 128 bit, che non sono accettabili per ambienti come il kernel Linux. Questo si è rivelato un problema più serio, poiché al momento la libreria principale di Rust è indivisibile e rappresenta un grande blob: non è possibile richiedere solo alcune funzionalità, impedendo l'uso dell'una o dell'altra funzionalità problematica. La risoluzione del problema potrebbe richiedere modifiche al compilatore e alle librerie di Rust, anche se al momento il team non ha ancora una strategia su come implementare la modularizzazione delle librerie linguistiche.

Inoltre, Torvalds ha notato che l'esempio del driver fornito era inutile e ci ha consigliato di utilizzare come esempio un driver che risolva uno dei problemi reali.

Aggiornamento: Google ha annunciato la sua partecipazione all'iniziativa per inserire il supporto Rust nel kernel Linux e ha fornito ragioni tecniche per introdurre Rust per combattere i problemi derivanti da errori di memoria. Google ritiene che Rust sia pronto ad unirsi al C come linguaggio per lo sviluppo dei componenti del kernel Linux. L'articolo fornisce anche esempi di utilizzo del linguaggio Rust per sviluppare driver del kernel, nel contesto del loro utilizzo nella piattaforma Android (Rust è riconosciuto come linguaggio ufficialmente supportato per lo sviluppo Android).

Si segnala che Google ha preparato un prototipo iniziale di un driver scritto in Rust per il meccanismo di comunicazione interprocesso Binder, che consentirà un confronto dettagliato delle prestazioni e della sicurezza delle implementazioni Binder in C e Rust. Nella sua forma attuale, il lavoro non è ancora completo, ma per quasi tutte le astrazioni di base delle funzionalità del kernel necessarie affinché Binder funzioni, sono stati preparati dei livelli per utilizzare queste astrazioni nel codice Rust.

Fonte: opennet.ru

Aggiungi un commento