Lo sviluppo del kernel Linux ha da poco attraversato un’altra piccola polemica, che questa volta interessa il codice relativo a Rust. Nello specifico, Linus Torvalds ha deciso di aggiungere comunque le modifiche nonostante le obiezioni espresse da Christoph Hellwig, ovvero il responsabile per la mappatura DMA e di diverse altre aree del kernel, il quale è stato critico in merito alla decisione intrapresa da Linus.
Linux: critiche a Torvalds per aver deciso di aggiungere le modifiche Rust al kernel
Proprio di recente, è stato pubblicato un nuovo post nella lista mail, dove è stato messo in evidenza che Linus Torvalds avrebbe ignorato le precedenti critiche e i veti, decidendo di aggiungere comunque le modifiche Rust a Linux. Ecco il lungo commento riportato, dove emergono interessanti dettagli riguardo al dissenso di tale scelta:
“Non credo che avere una pagina web in qualsiasi forma sia utile. Se vuoi che sia valida, deve essere nell’albero del kernel e ampiamente condivisa.
Inoltre, riporta informazioni di fatto errate. Ad esempio:
“Alcuni sottosistemi potrebbero decidere di non voler avere codice Rust per il momento, in genere per motivi di larghezza di banda. Questo va bene ed è prevedibile.”
mentre Linus in privato ha detto che avrebbe assolutamente unito il codice Rust nonostante l’obiezione di un manutentore. (Lo ha fatto in privato nel caso in cui tu stia cercando un riferimento).
Quindi da ora in poi, come sviluppatore o manutentore Linux devi avere a che fare con Rust se vuoi o no.
Dove il codice Rust non significa solo codice Rust [1] – i binding non assomigliano per niente al codice Rust idiomatico, sono un tipo di bestia molto diversa che cerca di colmare un enorme divario semantico. E non lo stanno facendo in alcuni punti, perché sono mostrati in ogni piccolo sottosistema e libreria in questo momento.
Quindi avremo questi binding che si insinuano ovunque come un cancro e si stanno spostando molto rapidamente da un progetto software che consente e si sforza di ottenere cambiamenti globali che migliorano il progetto generale a una crescente compartimentazione [2]. Questo trasforma Linux in un progetto scritto in più linguaggi senza linee guida chiare su quale linguaggio deve essere utilizzato per dove [3]. Anche al di fuori dei binding molto codice non sarà Rust molto idiomatico a causa delle strutture dati del kernel che sono strutture dati invasive e autoreferenziali come liste collegate onnipresenti. Non stiamo forse rendendo un disservizio sia a coloro che cercano di portare la base di codice esistente in uno spazio migliore e più sicuro sia alle persone che programmano i sistemi in Rust?”
Il post completo può essere visionato nella pagina dedicata. Il thread è correlato alle regole di Rust per Linux, disponibili invece qui.