Sembra che quest'anno non sarà l'anno di Linux, perché anche se nell'ultimo trimestre dell'anno scorso tutto sembrava indicare che Linux e i desktop avrebbero preso piede nel 2025, le cose non sono sempre come sembrano.
E solo pochi giorni fa, Christoph Hellwig, figura di spicco nella manutenzione di sottosistemi critici come DMA, KVM, Slab Allocator e PowerPC nel kernel Linux , ha chiarito il suo rifiuto di supportare patch che facilitano lo sviluppo di driver in Rust.
Christoph Hellwig menziona che le patch in questione proponevano di includere wrapper attorno alle funzioni del sottosistema DMA per consentire ai driver scritti in Rust di utilizzarlo. Tuttavia, sostiene che questa strategia complica la manutenzione del codice e che la chiarezza delle interfacce C dovrebbe essere preservata , evitando l'estensione di astrazioni che potrebbero ostacolare l'integrazione con il resto del kernel.
I problemi di mescolanza delle lingue in un progetto
Secondo Hellwig, il problema principale risiede nel fatto che l'integrazione del codice Rust crea dipendenze che costringono gli sviluppatori del sottosistema C a considerare l'impatto delle loro modifiche sul codice di collegamento Rust. Ciò significa che qualsiasi modifica alle strutture o funzioni interne del codice C potrebbe richiedere modifiche parallele al codice Rust, creando uno scenario difficile da gestire nel lungo periodo.
Per evitare questa situazione, Hellwig ha raccomandato che i driver in Rust accedano direttamente all'API DMA nativa in C, invece di ricorrere a wrapper aggiuntivi che, a suo parere, comprometterebbero la manutenibilità del kernel.
Gli sviluppatori che proposero le patch sostennero che avrebbero mantenuto il codice Rust e, a tal fine, avevano organizzato i collegamenti in una sottocartella specifica (rust/kernel/dma.rs). Tuttavia, Hellwig pose il veto a queste proposte, avvertendo che non era sua intenzione assumersi la responsabilità di integrare codice di altri linguaggi nei sottosistemi principali.
Inoltre, ha affermato con forza che se si vuole trasformare il kernel in un mosaico di più linguaggi, si dovrebbe iniziare con i driver Rust invece di imporre questa complessità in aree fondamentali.
La controversia si è intensificata quando figure come Jason Gunthorpe, responsabile di TPM, VFIO e Infiniband presso NVIDIA, hanno condiviso esempi di come le modifiche ai sottosistemi di memoria, pur essendo corrette dal punto di vista del codice C, causassero problemi durante la compilazione del kernel con il supporto per Rust. Questi episodi hanno dimostrato che i collegamenti tra C e Rust possono introdurre dipendenze aggiuntive che ostacolano lo sviluppo coordinato.
Vale la pena menzionare che la discussione non si è limitata agli aspetti tecnici. Héctor Martín ha suggerito che la soluzione potrebbe essere quella di adottare il collegamento direttamente tramite Linus Torvalds, bypassando il responsabile del sottosistema DMA. Tuttavia, questo approccio potrebbe sconvolgere la tradizionale struttura gerarchica dello sviluppo del kernel.
Hector ha inoltre segnalato comportamenti che considerava tossici, menzionando persino le critiche di Hellwig, che aveva paragonato Rust a un "tumore canceroso", e che avevano contribuito alla sua frustrazione e, in definitiva, alla sua decisione di dimettersi dal ruolo di manutentore della piattaforma ARM/Apple nel kernel principale. Nonostante le sue dimissioni, la piattaforma continuerà a essere supportata da Sven Peter, che si è impegnato a proseguire la sua manutenzione.
Linus Torvalds si è unito alla conversazione , sottolineando che il processo di sviluppo del kernel , sebbene imperfetto, sta funzionando e che le discussioni tecniche dovrebbero concentrarsi sulle patch , senza essere influenzate da pressioni esterne o molestie sui social media. Per Torvalds , l'attenzione dovrebbe essere puramente tecnica, lasciando da parte le dispute personali.
Il rifiuto di Christoph Hellwig di incorporare i wrapper Rust nel sottosistema DMA evidenzia le tensioni tra gli sviluppatori del kernel Linux. Mentre alcuni vedono Rust come uno strumento potente per creare nuovi progetti, altri temono che l'integrazione di più linguaggi possa ostacolare la manutenibilità e la coerenza della base di codice.
La situazione rimane oggetto di dibattito e potrebbe avere implicazioni significative per il futuro del supporto di Rust nel kernel. In ogni caso, quel che è certo è che la comunità di sviluppo Linux continua ad affrontare sfide complesse, per le quali le decisioni tecniche devono essere attentamente ponderate al fine di garantire la sostenibilità a lungo termine del progetto.