Ricerca nel sito web

GRUB ha un assaggio di ruggine con un nuovo prototipo


Rust arriva in GRUB come esperimento: supporto iniziale per i386-pc e moduli dinamici, promettendo un codice di sistema più sicuro.

Non c'è dubbio che il linguaggio di programmazione Rust stia prendendo piede nel mondo open-source. Stiamo vedendo sempre più progetti che lo adottano, come l'ambiente desktop COSMIC di System76, che è stato costruito interamente in Rust, e Fish Shell 4.

Rust ha persino iniziato a farsi strada nel kernel Linux. Ubuntu ha recentemente annunciato anche l'intenzione di sostituire GNU Coreutils con un'alternativa basata su Rust nella prossima versione 25.10. E ora, un altro componente importante dell'ecosistema Linux si sta unendo al movimento Rust: l'iconico bootloader GRUB.

Uno dei suoi principali sviluppatori, Vladimir Serbinenko, ha iniziato a sperimentare l'integrazione del codice Rust in GRUB. Il suo lavoro iniziale è accessibile attraverso due repository GitHub: uno dedicato a un semplice modulo Rust "hello world" per GRUB e un altro contenente le modifiche corrispondenti all'interno di GRUB stesso.

L'esperimento di Serbinenko si concentra sulla piattaforma i386-pc, un punto di partenza comprensibile, dato che il porting i386-pc di GRUB è stato storicamente una configurazione più utilizzata. Tuttavia, sottolinea che non esiste alcuna barriera tecnica intrinseca che impedisca l'integrazione di Rust in altre architetture.

Solo l'i386-pc è implementato in questo momento, ma non è un limite tecnico, solo altri non sono ancora implementati.

È interessante notare che Serbinenko ha cambiato i moduli di GRUB dall'uso di binari ET_REL (.o) a binari ET_DYN (.so). Questo approccio consente ai moduli basati su Rust di funzionare in modo più naturale in tandem con l'infrastruttura esistente di GRUB.

Un altro dettaglio tecnico degno di nota è la decisione di compilare con panic=abort. Sciogliere il panico richiederebbe l'attuazione di rust_eh_personality, che non è stata affrontata in questo primo prototipo.

In termini pratici, questa limitazione significa che i panic di Rust non si propagano con grazia attraverso l'ambiente GRUB, quindi il codice si basa sull'interruzione dell'esecuzione ogni volta che si verifica un errore grave.

Come previsto, non tutti gli sviluppatori sono completamente d'accordo con l'introduzione di Rust in GRUB. In risposta all'annuncio, un altro sviluppatore, Maxim Fomin, ha condiviso alcune preoccupazioni su questo passaggio:

Ho trovato indicativo che il post sull'introduzione di Rust nel progetto manchi di qualsiasi discussione tecnica sui meriti di farlo. Questo concorda con il punto critico di Rust secondo cui l'introduzione di Rust nel progetto è spesso causata da programmatori che vogliono mettersi in mostra ("io/progetto è figo perché ha Rust") piuttosto che da meriti tecnici.

Tuttavia, la maggior parte dei feedback è stata positiva, con molti sviluppatori che si aspettano che portare Rust in GRUB aumenterà l'affidabilità del software.

Giusto come promemoria, l'audit condotto a febbraio ha rivelato un elenco di vulnerabilità nel codice di GRUB, molte delle quali erano legate alla gestione della memoria. Questo è esattamente il tipo di problema che Rust è progettato per prevenire per impostazione predefinita.

Per ulteriori informazioni, vedere l'annuncio di Serbinenko.