Il linguaggio Rust non si ferma al Kernel, usato per compilare Coreutils rende tutto più veloce

1

Negli ultimi anni la definizione e applicazioni di linguaggi sicuri e performanti, con cui sostituire C e C++, è stata molto serrata. Evitare problemi di sicurezza – come l’ultimo per container su Kernel recenti – è cosa sempre gradita. E proprio per il Kernel da un po’ di tempo si parla di Rust, ma l’ultima notizia potrebbe rappresentare l’allungo finale anche per lo userspace.

Con l’arrivo della pandemia, lo sviluppatore di Mozilla Sylvestre Ledru – come molti di noi – ha cominciato a passare molto più tempo a casa, e quindi ha deciso di impiegare questo tempo ricompilando Debian con LLVM come compilatore principale, al posto di GCC. Tra i pacchetti in cui si è imbattuto, ovviamente, c’è anche coreutils, che contiene tutti i principali comandi che usiamo tutti i giorni: ls, grep, find, ps…

Ha anche pensato fosse l’occasione utile per imparare un nuovo linguaggio, magari proprio quello nato in seno a Mozilla: Rust. E cosa c’è di meglio che imparare seguendo un caso reale, come la riscrittura di coreutils?
Ha quindi iniziato a collaborare con un progetto nato nel 2013 che ha proprio questo come obbiettivo.

Non vogliamo dire che il suo intervento sia stato determinante, ma lui stesso raccontava di poter avere un’installazione di Debian base (ma con GNOME e Firefox) funzionante dopo pochi mesi, segno che il progetto era sulla buona strada.

Settimana scorsa Sylvestre ha fornito un update sul lavoro, nel quale sottolinea come il grosso sia ormai completato. Infatti, di tutte le utility presenti nel pacchetto solo “stty” è ancora da riscrivere, mentre il resto ha già una sua versione in Rust, funzionante e (quasi sempre) completa.

Questo non vuol dire che funzioni tutto come aspettato: la validazione automatica mostra ancora circa il 25% di test falliti, ma il miglioramento è stato molto rapido, con un’accelerazione nelle ultime settimane. E, per alcuni casi, ci sono notizie anche migliori:

Performances. Now, some binaries are significantly faster than GNU (ex: head, cut, etc)

Le performance. Ora, alcuni binari sono significativamente più veloci delle controparti GNU (per esempio: head, cut, etc…)

Non sono stati pubblicati benchmark comparativi, quindi dobbiamo fidarci della parola. Ma anche senza prestazioni mirabolanti, la sola sicurezza data dall’uso di Rust potrebbe giustificare l’adozione del pacchetto come standard. O no?

Ho coltivato la mia passione per l’informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.