gccrs è un'implementazione alternativa completa del linguaggio Rust su GCC
È stato recentemente annunciato che il progetto "gccrs" , che mira a fornire un'interfaccia per il linguaggio Rust verso GCC (GNU Compiler Collection), è sulla buona strada per essere integrato in GCC 13. Alla conferenza per sviluppatori FOSDEM, tenutasi all'inizio di questo mese, l'ingegnere Arthur Cohen ha presentato gccrs, illustrando lo stato attuale dei lavori.
Per chi non avesse familiarità con il progetto gccrs, si tratta di un'implementazione alternativa completa del linguaggio Rust basata su GCC, con l'obiettivo di integrarsi completamente nella toolchain GNU.
L'origine di questo progetto è uno sforzo della comunità diversi anni fa, quando Rust era ancora alla versione 0.9; il linguaggio creato da Mozilla è stato soggetto a così tanti cambiamenti che è diventato difficile per uno sforzo della comunità recuperare il ritardo.
Ora che il linguaggio è stabile, è il momento di creare compilatori alternativi:
“Iniziato nel 2014 (e rilanciato nel 2019), lo sforzo è in corso dal 2020 e abbiamo fatto molti sforzi e molti progressi. Abbiamo caricato la prima versione di gccrs all'interno di GCC. Quindi la prossima volta che installi GCC 13, avrà gccrs all'interno.
Puoi usarlo e puoi iniziare ad hackerarlo, puoi segnalare i problemi quando inevitabilmente si blocca e muore in modo orribile. Una cosa importante che stiamo facendo è lavorare per far funzionare la suite di test rustc ", ha affermato Arthur Cohen durante la sua presentazione alla conferenza FOSDEM all'inizio di questo mese.
La capacità di eseguire con successo la suite di test del compilatore rustc rimane un obiettivo. Secondo Cohen, l'interfaccia GCC di Rust supporta anche la vecchia versione 1.49 di Rust libcore.
Le FAQ del progetto gccrs evidenziano che tutte le tecnologie di compilazione LLVM, utilizzate da Rust, "sono prive di alcuni backend compatibili con GCC, pertanto un'implementazione di gccrs può colmare queste lacune per l'utilizzo nello sviluppo integrato ".
Si noti, tuttavia, che il compilatore Rust-GCC (gccrs) è ancora in una fase iniziale e non può ancora essere utilizzato per compilare veri e propri programmi Rust.
Lo scorso luglio il team di GCC ha votato per approvare l'integrazione di gccrs come suite di compilazione. L'importanza di questo progetto risiede nel suo significato per il kernel Linux. Infatti, il kernel Linux viene tipicamente compilato con GCC, ma i piani per consentire l'utilizzo del linguaggio Rust insieme al C per il codice del kernel, per motivi di sicurezza della memoria, stanno procedendo a ritmo sostenuto.
Il progetto "Rust for Linux" si è ufficialmente unito all'albero Git principale di Linux 6.1 lo scorso ottobre, rendendo Rust il secondo linguaggio dedicato allo sviluppo di Linux, dopo 31 anni di sviluppo esclusivamente basato su C.
“Vogliamo che gccrs sia un vero compilatore Rust e non un progetto giocattolo o qualcosa che compili un linguaggio che assomigli a Rust ma non sia Rust; stiamo davvero cercando di far funzionare questa suite di test ", ha aggiunto. Durante la presentazione, Cohen ha anche affermato che mentre l'interfaccia Rust di GCC 13 è partita bene, c'è ancora molto lavoro da fare. Il codice di verifica preso in prestito è vistosamente assente al momento, il supporto per i moduli integrati e intrinseci è ancora in corso e l'importante pietra miliare della compilazione del codice Rust per Linux deve ancora essere raggiunta.
Ricordiamo che il progetto Rust for Linux mira a introdurre un nuovo linguaggio di programmazione di sistema nel kernel Linux. Secondo gli esperti, Rust possiede una caratteristica fondamentale che lo rende molto interessante come secondo linguaggio per il kernel Linux: garantisce che non si verifichino comportamenti indefiniti (a condizione che il codice non sicuro sia corretto).
Ciò include l'assenza di errori come l'uso post-libero, i doppi liberi, le gare di dati, ecc. I dibattiti correlati ruotano attorno alla possibilità di abbandonare C a favore del linguaggio Rust. Ma Linus Torvalds, il creatore di Linux, ha detto che non è l'obiettivo dichiarato del progetto Rust for Linux.
Infine, vale la pena menzionare che, sebbene l'interfaccia gccrs sia stata integrata nella prossima versione di GCC 13, non è ancora in uno stato tale da consentire alla maggior parte degli sviluppatori Rust di utilizzarla come alternativa al compilatore LLVM ufficiale di Rust.
Non dovrebbe essere fino al prossimo anno, almeno con GCC 14 almeno.
Fonte: https://fosdem.org/