Il dibattito su Rust nel Kernel Linux si infiamma nuovamente, tra sviluppatori entusiasti e maintainer oppositori

Non più tardi di una settimana fa avevamo raccontato di come, tra le numerosissime novità che ci saranno nel Kernel Linux 6.14, fosse stato predisposto l’ambiente necessario a poter vedere il primo driver scritto interamente nel linguaggio Rust, almeno secondo Greg Kroah-Hartman, il maintainer della versione stable del Kernel.

La cosa per quanto non avesse stupito sembrava in controtendenza con le notizie dello scorso anno, tra le dimissioni lo scorso settembre di Wedson Almeida Filho, uno dei maintainer dell’apparato Rust nel Kernel, le quali seguivano le dichiarazioni di Linus Torvalds, il quale affermava come il dibattito intorno a Rust stesse assumendo toni quasi religiosi.

All’ultimo FOSDEM, Miguel Ojeda, che supervisiona l’introduzione di Rust nel Kernel, ha parlato in toni entusiastici dello stato dei lavori e dei progressi, riportando anche i risultati di un sondaggio interno al progetto nel quale quasi tutti sembrano essere favorevoli a collaborare per fare sì che Rust diventi un nuovo linguaggio usabile nel Kernel Linux.

Il problema è che le cose sono precipitate piuttosto in fretta.

A gettare una quantità esagerata di benzina sul fuoco in merito alla questione ci ha pensato un altro maintainer del Kernel Linux, Christoph Hellwig, il quale senza mezzi termini ha definito l’introduzione di Rust nel Kernel come dannosa per l’intero progetto, bocciando una patch proposta con un semplice:

No rust code in kernel/dma, please.

Niente codice rust all’interno di kernel/dma, per favore.

Scatenando una discussione nella quale si è trovato ad offrire ulteriori indicazioni a proposito della sua avversione:

Don’t force me to deal with your shiny language of the day, maintaining multi-language projects is a pain I have no interest in dealing with. If you want to use something that’s not C, be that assembly or Rust, you write to C interfaces and deal with the impedance mismatch yourself as far as I’m concerned.

Non costringermi ad avere a che fare con il tuo linguaggio scintillante del momento, gestire progetti multi-linguaggio è una seccatura con cui non ho alcun interesse a occuparmi. Se vuoi usare qualcosa che non sia C, che sia assembly o Rust, scrivi su interfacce C e gestisci tu stesso la discrepanza di impedenza, per quanto mi riguarda.

E, ancor di più, con le successive affermazioni:

Every additional bit that the another language creeps in drastically reduces the maintainability of the kernel
as an integrated project. The only reason Linux managed to survive so long is by not having internal boundaries, and adding another language complely breaks this. You might not like my answer, but I will do everything I can do to stop this. This is NOT because I hate Rust.
While not my favourite language it’s definitively one of the best new ones and I encourage people to use it for new projects where it fits.
I do not want it anywhere near a huge C code base that I need to maintain.

Ogni bit aggiuntivo che un altro linguaggio insinua riduce drasticamente la manutenibilità del kernel come progetto integrato. L’unica ragione per cui Linux è riuscito a sopravvivere così a lungo è perché non ha confini interni, e l’aggiunta di un altro linguaggio rompe completamente questo aspetto. Potresti non apprezzare la mia risposta, ma farò tutto il possibile per fermarlo. E NON perché odio Rust.
Sebbene non sia il mio linguaggio preferito, è sicuramente uno dei migliori nuovi e incoraggio le persone a usarlo per nuovi progetti in cui si adatta.
Non lo voglio minimamente vicino all’enorme base di codice C che devo mantenere.

Quindi per quanto poi si possa scendere in dettagli molto specifici, la posizione di Hellwig (e non solo la sua) è semplice: un Kernel, un linguaggio. Cioè C.

Come questo si sposerà con le aziende che vorrebbero la sua introduzione oltre che con Torvalds e Kroah-Hartman che sono sicuramente favorevoli è tutto da vedere, la questione è certamente ben lontana dall’essere conclusa.


Update 12/02/2025 – 12:00: in coda a questa discussione sono arrivate le dimissioni come maintainer del supporto ai processori Apple Silicon nel Kernel Linux del lead developer di Asahi Linux, Hector Martin, mediante parole molto, molto dure:

I no longer have any faith left in the kernel development process or community management approach.

Non credo più nel processo di sviluppo del Kernel o nell’approccio di gestione community.

Il messaggio arriva dopo un acceso scambio di opinioni culminato in un messaggio di Linus Torvalds che accusa Martin di utilizzare un atteggiamento sbagliato nell’approcciarsi al problema, con un lapidario “forse il problema sei tu“.

Come indica Phoronix, un altro co-maintainer è già stato inserito al posto di Martin, in una patch già mergiata da Torvalds.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

9 risposte a “Il dibattito su Rust nel Kernel Linux si infiamma nuovamente, tra sviluppatori entusiasti e maintainer oppositori”

  1. Avatar JustATiredMan
    JustATiredMan

    Non sono un super esperto di C. Pur usandolo per alcune cose non ho mai lavorato su progetti grandi come può essere il kernel. Ma sono in linea di principio d'accordo. Se si comincia ad integrare codice di un nuovo linguaggio, poi si crea il precedente, e quello che varrebbe oggi per Rust, perchè non per un qualsiasi nuovo linguaggio domani ?
    In tanti anni ho visto arrivare molti linguaggi e solo un paio (o poco più) diventare di uso comune, e non sempre sono i migliori. Tutti gli altri poi sono diventati di nicchia.
    Stè robe alla lunga poi diventano ingestibili e introducono complessità e forse anche creano maggiori problemi che quelli che volgiono risolvere. Che C sia un linguaggio imperfetto, credo sia noto non da oggi. Che però sia un linguaggio, pur con tutti i suoi limiti, che resterà in giro ancora per un bel pezzo, credo sia altrettanto condivisibile. Un progetto come il kernel di Linux, credo sia meglio venga portato avanti con il solo linguaggio nativo C, poi per tutto il resto, si usi pure qualcos'altro.
    L'unica cosa che poi mi piacerebbe approfondire è cosa intende il buon Hellwig con "by not having internal boundaries…"

  2. Avatar Raoul Scarazzini

    Se uno ha voglia di tornare negli anni '90 e ricostruire la vicenda nella mailing list (è a tutti gli effetti un incubo consultarla online) si sente qualsiasi ragione, da Hellwig che ha definito "cancro" l'introduzione di altri linguaggi nel Kernel a quelli che dicono che è inevitabile. Io dopo un po' ho smesso perché i tecnicismi non sono in grado di capirli, gli insulti mi infastidiscono e i messaggi fiume in stile "rant" poi diventano la norma (vedi qua https://lore.kernel.org/lkml/208e1fc3-cfc3-4a26-98c3-a48ab35bb9db@marcan.st/ ).
    Il bello è che non si può neanche dire che la verità è nel mezzo, perché qua la scelta è radicale: o sì, o no, e, IN TEORIA, hanno tutti detto sì (Torvalds e Kroah-Hartman in primis), ma poi quando Ojeda ha postato la patch Hellwig gli ha detto semplicemente "qui no, grazie".
    Quindi… Boh!

  3. Avatar JustATiredMan
    JustATiredMan

    il "caro leader" all'inizio avrà anche detto di si, ma leggendo il thread:
    https://lore.kernel.org/lkml/CAHk-=wi=ZmP2=TmHsFSUGq8vUZAOWWSK1vrJarMaOhReDRQRYQ@mail.gmail.com/
    Mi pare che alla fine, anche se nascoste frà le righe, dia ragione a Hellwig…
    A ok, l'avevi anche riportato in calce all'articolo…

  4. Avatar Valerio
    Valerio

    Il C ha i suoi pericoli, in spazio user ormai con i code sanitizer inclusi nei compilatori moderni è impossibile introdurre doppie free, sconfinamenti di vettori, missed free, puntatori erratici ecc…. Però capisco che in spazio kernel per ora solo l'attenzione degli sviluppatori ti salva. Spero che possano trovare una soluzione funzionante anche lì, e non usare Rust, ma chissà

  5. Avatar AndreaZ
    AndreaZ

    Hai ragione ma rust è diverso da tutti i linguaggi usciti negli ultimi 30 anni e apporta benefici sotto molti punti di vista (… se non usi mai panic ovviamente). Se insisti sul solo c nel kernel prima o poi avrai problemi di trovare persone allenate a mettere mano in quel codice e sarà sempre meno conveniente lavorarci sopra. Anche fare il mantainer e accettare patch diventerà più facile con rust.

  6. Avatar Graziano Falcone
    Graziano Falcone

    Sono reduce di un progetto che era iniziato con C e C++ ed é andato tutto bene il problema é nato quando hanno iniziato a scrivere librerie in altri linguaggi, rust compreso, le librerie avevano bugs e quelli bravi in C non erano in grado di mantenere codice scritto in rust quindi ľazienda é fallita per una grossa falla di sicurezza dove ha sborsato parecchi soldini per coprire i danni, il codice é stato ceduto a un altra azienda che ha riscritto tutte le librerie in C e il software sta funzionando senza problemi.

    Io ho visto il kernel con molte parti scritte in Rust e per quanto sia affidabile il linguaggio rust ancora non ce abbastanza gente che riesce a fare lo stesso lavoro che é stato fatto in C
    Avra le sue pecche ma ti impone determinate regole che garantiscono ľefficenza.
    inoltre trovi sempre qualcuno che ha piu esperienza e ti suggerisce soluzioni a cui non avevi pensato, Rust beh aiuta i neo programmatori a evitare sbagli sulla gestione delle variabili, memoria ecc.
    Ma poi sei talmente abituato alle correzioni che quando hai una funzione grande allo a capire dove sbagli.

  7. Avatar Marco
    Marco

    Tra l'altro anche per queste difficoltà ha dato le dimissioni da project leader di Asahi linux
    https://marcan.st/2025/02/resigning-as-asahi-linux-project-lead/

  8. Avatar carlo coppa
    carlo coppa

    Secondo me sarebbe sufficiente un chiarimento, magari direttamente da Linus T., se il codice rust viene accettato, occorre specificare per quali parti del kernel è possibile e quali no o no a priori. Perché io cerco di mettermi anche nei panni di chi il codice lo deve mantenere e assicurarsi che non generi regressioni.
    Il kernel è scritto in C, alcuni driver in C++, ma da sempre si scoraggia a scriverli in un linguaggio diverso da C.
    Io non sono un esperto…ma non stiamo parlando di un lettore musicale, ma di un kernel che ha un codice enorme.

  9. Avatar Raoul Scarazzini

    Da quel che interpreto io, la posizione di Hellwig oltre che a voler tutelare il proprio lavoro si immedesima anche negli altri e non mi sento di dargli torto. Certo è che la questione a livello politico, almeno finora, è stata gestita particolarmente male…

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *