Il progetto GNU ha annunciato il rilascio della versione 15.1 della GNU Compiler Collection, altrimenti nota come GCC. Una release di un certo rilievo in quanto introduce alcune importanti novità, tra cui la più significativa è sicuramente il supporto a COBOL tramite un frontend dedicato. Si tratta della prima volta in assoluto per questo progetto, anche se parliamo di una feature limitata ai sistemi a 64 bit su architetture x86-64 o ARM64.
GCC 15.1 e supporto a COBOL
Il supporto al COBOL, linguaggio ancora ampiamente utilizzato in ambienti mainframe, nasce da un progetto di Cobolworx in collaborazione con il team di GnuCOBOL. Basato sullo standard COBOL-2023, il compilatore GCC COBOL non include ancora le funzionalità orientate agli oggetti. Supporta però estensioni IBM e MicroFocus, oltre al debugger GDB. Secondo i promotori dell'iniziativa, COBOL ha una nicchia unica come linguaggio compilato per l'I/O orientato ai record, motivo per il quale GCC non poteva che colmare una lacuna durata per troppo tempo.
GCC 15.1 introduce anche delle migliorie sul fronte della programmazione parallela. Ciò avviene grazie ad un supporto potenziato a OpenMP, incluso l'uso di memoria condivisa unificata su GPU AMD e Nvidia. È stata inoltre ampliata la compatibilità con CUDA e HIP, entrambe fondamentali per il calcolo eterogeneo.
Novità per C, C++ e Rust
Per quanto riguarda il linguaggio C la versione 15 adotta C23 come standard predefinito. Gli sviluppatori dovranno quindi modificare le opzioni di compilazione qualora utilizzino le versioni precedenti. Presente anche un primo supporto ad alcune funzionalità previste dal futuro standard C2Y.
Relativamente a C++ GCC 15.1 risolve alcune problematiche di vecchia data, implementa funzioni mancanti di C++23 e introduce il supporto iniziale a C++26. Da segnalare anche dei miglioramenti importanti per la libreria di runtime.
GCC compie infine dei progressi nel supporto al linguaggio Rust. Pur essendo ancora in fase iniziale, è stato completato il parser e aggiunte funzionalità come l'operatore ?
, i cicli for
e let-else
. Il prossimo obiettivo è quello di supportare il progetto Rust for Linux indirizzato a portare il linguaggio nel kernel Linux.