Il parere di Greg Kroah-Hartman e Case Cook su come promuovere Rust nel kernel Linux

Greg Kroah-Hartman, responsabile del supporto della versione stabile del kernel Linux, ha espresso il suo sostegno allo sviluppo di nuovi componenti del kernel in linguaggio Rust. Come figura centrale attraverso cui passano tutte le informazioni sui bug e le vulnerabilità del kernel Linux da 15 anni, sostiene che la maggior parte degli errori nel kernel è causata da caratteristiche del linguaggio C che non vengono considerate (corner case), tutte completamente escluse nel codice scritto in Rust.

Con l'uso di Rust, sarà possibile mettere da parte problemi quali l'accesso alla memoria dopo il suo rilascio, il buffer overflow (in parte), una errata liberazione delle risorse in caso di gestione degli errori e il mancato controllo dei codici di ritorno degli errori, permettendo così ai manutentori di concentrarsi su errori reali come le condizioni di gara e problemi di logica, anziché disperdere l’attenzione sulle piccole questioni durante la revisione.

Il codice esistente in C non andrà da nessuna parte, ma per il nuovo codice e i nuovi driver, l'implementazione di Rust permetterà di migliorare significativamente la qualità. L'adozione di Rust offrirà anche l'opportunità di strutturare le interfacce di programmazione interne del kernel in modo da ridurre al minimo gli errori nell'uso delle API interne; nel kernel si sono accumulate troppe API complesse e confuse, creando un grande onere per i manutentori nel garantire che queste API siano utilizzate correttamente. Con lo sviluppo dei wrapper Rust, i manutentori avranno l'opportunità di ripensare e organizzare le API, portando benefici a tutti, compresi coloro che utilizzano il linguaggio C.

Greg non considera Rust una "soluzione magica" in grado di risolvere tutti i problemi nel kernel, ma sicuramente questo linguaggio sarà utile in un gran numero di situazioni. Il supporto per Rust risponderà anche alla necessità degli sviluppatori di driver, che sperano di avere uno strumento per scrivere codice per il loro hardware, riducendo molti tipi di errori. Per quanto riguarda la combinazione di diversi linguaggi, Greg non vede alcun problema significativo; a suo avviso, in passato gli sviluppatori del kernel hanno affrontato compiti ben più complessi, e non c'è motivo di rifiutare l'introduzione di nuove buone idee nel kernel che possano garantire il successo del progetto per i prossimi 20+ anni.

Alla discussione ha partecipato anche Kees Cook, ex amministratore di sistema di kernel.org e leader del team di sicurezza di Ubuntu. Kees ha chiarito che non si tratta di riscrivere il codice già esistente nel kernel, ma di fornire la possibilità di utilizzare Rust per creare nuovi driver e sottosistemi. L'uso di Rust per il nuovo codice non solo ridurrà il numero di errori nella gestione della memoria, ma accorcerà anche i tempi di sviluppo. La velocità di sviluppo aumenta grazie alla diminuzione degli sforzi necessari per il debug e alla presenza nel linguaggio di garanzie rigorose che permettono di individuare errori in una fase iniziale della scrittura del codice, prima ancora dell'inizio del collaudo del prodotto.

L'efficacia della strategia di utilizzo di Rust per migliorare la qualità del nuovo codice è già stata dimostrata da Google sulla piattaforma Android. È stato dimostrato che la principale fonte di problemi di sicurezza è il nuovo codice, e che la qualità di quest'ultimo merita una particolare attenzione. Per il codice obsoleto si osserva una dipendenza esponenziale della sicurezza dal tempo (ad esempio, il codice di 5 anni ha in media una densità di vulnerabilità 3,4 volte inferiore rispetto al nuovo codice).

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