Anche systemd apre a Rust e chissà se, come per il Kernel Linux, arriveranno le polemiche

0

#Rust è riuscito a entrare nel #Kernel #Linux, e ora bussa anche alla porta di #systemd. Per il momento gli sviluppatori gli hanno concesso soltanto una stanzetta, con regole rigidissime e senza nemmeno Cargo. Ma siamo proprio sicuri che i puristi del C resteranno in silenzio?

Ormai da qualche tempo, la presenza di componenti Rust nel Kernel Linux non è più una notizia e l’avanzata di questo linguaggio, oltre ad essere stata ufficialmente sdoganata, appare decisamente inarrestabile. Ma le qualità che fanno di Rust un linguaggio adatto al Kernel Linux sono adattabili anche ad altri contesti, per così dire, “di sistema”. Contesti in cui le applicazioni governano aspetti critici delle distribuzioni Linux, dove la sicurezza implicita di Rust costituisce un vantaggio che sarebbe sciocco non sfruttare.

Insomma, avrete capito che questo lungo e borioso preambolo apre il campo all’applicazione che, dopo il Kernel, ricopre per Linux un ruolo cruciale su (quasi) tutte le distribuzioni: systemd. Bene, anche la creatura di Lennart Poettering ha ufficialmente integrato il supporto per lo sviluppo di programmi scritti nel linguaggio che promette maggiore sicurezza nella gestione della memoria.

Potranno mancare le discussioni a proposito? Quando si parla di systemd, ovviamente no.

La notizia, riportata da Slashdot e approfondita da It’s FOSS, riguarda una pull request di 19 commit che introduce il supporto a Rust nel ramo principale di systemd, in vista della versione 263.

Attenzione, però: non si tratta di una riscrittura del progetto. Gli sviluppatori hanno stabilito che Rust potrà essere utilizzato esclusivamente per nuovi programmi autonomi, dai quali non dipendano altri componenti. Quindi, per essere chiari: il codice C esistente non verrà portato nel nuovo linguaggio.

Il primo programma a sfruttare questa novità sarà systemd-keyring-setup, un’utility che permette di installare nel Kernel i certificati digitali X.509, utilizzati da funzionalità come dm-verity e fs-verity per verificare l’integrità dei dati durante l’avvio del sistema.

Ma l’apertura a Rust presenta alcune precise limitazioni. Gli sviluppatori hanno scelto di non utilizzare Cargo, il sistema standard di gestione dei pacchetti Rust, affidando invece la compilazione a Meson, già utilizzato da systemd. Anche le librerie ammesse sono ridotte all’essenziale: niente libreria standard di Rust e niente strumenti per la gestione dinamica della memoria forniti dal linguaggio. Queste funzionalità vengono sostituite da implementazioni messe a disposizione direttamente da systemd.

L’obiettivo è mantenere il controllo sulle risorse utilizzate e fare in modo che eventuali problemi di allocazione della memoria vengano gestiti attraverso errori espliciti, anziché causare un arresto improvviso del programma. Questo però significa, come evidenzia It’s FOSS, che anche le distribuzioni dovranno adeguarsi: chi compila systemd con tutte le funzionalità abilitate, come Arch e openSUSE OBS, dovrà installare la toolchain Rust oppure disabilitarne il supporto.

Ma perché tanta cautela? Il problema principale riguarda libsystemd-shared, la libreria condivisa che rimane scritta in C. Rust non dispone ancora di un ABI stabile e presenta limitazioni nella gestione delle librerie condivise. Ci sono inoltre questioni legate all’accesso sicuro al filesystem, per il quale systemd utilizza file descriptor anziché affidarsi alla normale gestione dei percorsi.

E qui, come anticipato, arriviamo alle polemiche.

Ricorderete le tensioni nate intorno a Rust nel Kernel. Nel settembre 2024, il dibattito aveva assunto toni quasi religiosi, come osservato dallo stesso Linus Torvalds. Nel febbraio 2025, lo scontro tra sostenitori e oppositori si era ulteriormente acceso, con Christoph Hellwig particolarmente contrario all’introduzione di un secondo linguaggio in una base di codice C così complessa.

Systemd potrebbe essere un terreno meno problematico: i componenti Rust saranno isolati e non andranno a modificare il codice esistente. Eppure, considerando la storia del progetto e le sue già note controversie architetturali, non è difficile immaginare nuove critiche.

La domanda è quindi inevitabile: assisteremo a un’altra guerra di religione tra puristi del C e sostenitori di Rust?

In fondo, la questione dovrebbe essere semplice: non conta quale linguaggio si utilizza, ma la qualità del software che si produce e la sua manutenibilità nel tempo. Purché, naturalmente, nessuno dimentichi che anche Rust può avere le proprie vulnerabilità.

Vuoi vedere che, per una volta, andrà tutto liscio?

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.

Iscriviti
Notificami
guest
0 Comments