Il comitato che gestisce lo sviluppo del set di compilatori GCC (GCC Steering Committee) ha approvato l'inclusione nel nucleo di GCC dell'implementazione del compilatore del linguaggio Rust, realizzata dal progetto gccrs (GCC Rust). Dopo l'integrazione del frontend, gli strumenti standard di GCC potranno essere utilizzati per compilare programmi in Rust senza la necessità di installare il compilatore rustc, costruito utilizzando le tecnologie LLVM.
Agli sviluppatori di gccrs è stato consigliato di iniziare a lavorare con i team responsabili della revisione delle modifiche e della preparazione delle release di GCC, per effettuare il controllo finale e approvare le patch in base alla conformità ai requisiti tecnici per il codice aggiunto a GCC. Nel caso in cui lo sviluppo di gccrs continui secondo il programma previsto e non vengano riscontrati problemi imprevisti, il frontend per il linguaggio Rust verrà integrato nella release di GCC 13, prevista per maggio del prossimo anno. L'implementazione di Rust in GCC 13 avrà lo status di beta, finché non sarà inclusa per impostazione predefinita.
Il linguaggio Rust è focalizzato sulla gestione sicura della memoria e fornisce strumenti per raggiungere un elevato parallelismo nell'esecuzione delle attività. La gestione sicura della memoria, che esclude errori come l'accesso alla memoria dopo che è stata liberata, l'indirizzamento di puntatori nulli e l'uscita dai limiti del buffer, viene raggiunta in Rust durante la compilazione attraverso il controllo dei riferimenti, il tracciamento della proprietà degli oggetti, la gestione del ciclo di vita degli oggetti (scope) e la valutazione della correttezza dell'accesso alla memoria durante l'esecuzione del codice. Rust fornisce inoltre strumenti per proteggere da overflow interi, richiede l'inizializzazione obbligatoria dei valori delle variabili prima dell'uso, gestisce meglio gli errori nella libreria standard, applica il concetto di riferimenti e variabili immutabili per impostazione predefinita e offre una forte tipizzazione statica per minimizzare gli errori logici.
Fonte: opennet.ru
