GCC 12.1 è già stato rilasciato, conoscete le sue novità e il suo 35° anniversario

Logo GNU GCC

Il lancio di la nuova versione del compilatore GCC (Raccolta di compilatori GNU) 12.1 è già stato rilasciato e come con tutte le principali versioni di GCC, questa versione porterà molte aggiunte, miglioramenti, correzioni di bug e nuove funzionalità, inoltre questo mese (23 maggio), il progetto celebrerà i 35 anni dalla formazione della prima versione.

GCC 12 è già il compilatore di sistema per Fedora 36, ​​e GCC 12 sarà disponibile anche su Red Hat Enterprise Linux in Red Hat Developer Toolset (versione 7) o Red Hat GCC Toolset (versioni 8 e 9).

Gli sviluppatori di GCC sono orgogliosi di annunciare un'altra importante versione di GCC, 12.1.

Quest'anno celebriamo il 35° anniversario della prima versione beta di GCC
E questo mese festeggeremo i 35 anni dal rilascio di GCC 1.0!

Questa versione elimina il supporto per il formato di debug STABS e
introduce il supporto per il formato di debug CTF [1]. Il C e il C++
le interfacce continuano ad avanzare con il supporto esteso per le funzionalità
nei prossimi standard C2X e C++23 e nella libreria standard C++
migliora il supporto per le parti sperimentali di C++20 e C++23.
L'interfaccia Fortran è ora completamente conforme a TS 29113 per l'interoperabilità con C.

Cosa c'è di nuovo in GCC 12.1?

In questa nuova versione Sono state implementate diverse proposte, come per le lingue C e C++, aggiunti una funzione incorporata __builtin_dynamic_object_size per determinare la dimensione di un oggetto, compatibile con una funzione simile di Clang.

Aggiunto supporto per l'attributo "non disponibile" per i linguaggi C e C++ (ad esempio, è possibile contrassegnare le funzioni che risulteranno in un errore quando vengono utilizzate), nonché il supporto aggiunto per le direttive di preelaborazione "#elifdef" e "#elifndef" per i linguaggi C e C++.

Si segnala inoltre che Flag "-Wbidi-chars" per avvisare se i caratteri UTF-8 vengono utilizzati in modo improprio, modificando l'ordine di visualizzazione del testo bidirezionale, nonché il flag "-Warray-compare" per emettere un avviso quando si tenta di confrontare due operandi che fanno riferimento a matrici.

Inoltre, l'iImplementazione degli standard OpenMP 5.0 e 5.1 (Open Multi-Processing), che definiscono API e metodi per l'applicazione di metodi di programmazione parallela su sistemi multicore e ibridi (CPU + GPU/DSP) con memoria condivisa e unità di vettorizzazione (SIMD).

Anche il migliore implementazione della specifica di programmazione parallela OpenACC 2.6, definire i mezzi per scaricare le operazioni su GPU e processori specializzati come NVIDIA PTX e aggiungere il supporto per le istruzioni estese Intel AVX512-FP16 e il tipo _Float16 al backend di generazione del codice x86.

Il front-end Fortran fornisce supporto completo per la specifica TS 29113, che descrive le possibilità di garantire la portabilità tra Fortran e il codice C.

Supporto deprecato per il formato di archiviazione delle informazioni di debug "STABS" creato negli anni '1980.

Aggiunto supporto per l'estensione __builtin_shufflevector(vec1, vec2, index1, index2, …) precedentemente aggiunta a Clang, che fornisce un'unica chiamata per eseguire operazioni di shuffle e shuffle vettoriali comuni.

Quando si utilizza il livello di ottimizzazione "-O2", la vettorizzazione è abilitata per impostazione predefinita (le modalità -ftree-vectorize e -fvect-cost-model=very-cheap sono abilitate). Il modello "molto economico" consente la vettorizzazione solo se il codice vettoriale può sostituire completamente il codice scalare vettorializzabile.

Aggiunta la modalità "-ftrivial-auto-var-init". per abilitare l'inizializzazione esplicita delle variabili nello stack per rintracciare i problemi e bloccare le vulnerabilità associate all'uso di variabili non inizializzate.

Aggiunto il implementazione di funzioni C integrate nel compilatore (Intrinseco) per il caricamento atomico e l'archiviazione dei dati in memoria, basato sull'uso di istruzioni ARM estese (ls64). Aggiunto supporto per velocizzare le funzioni memcpy, memmove e memset utilizzando l'estensione ARM mopoption.

Aggiunto una nuova modalità di verifica "-fsanitize=shadow-call-stack" ( ShadowCallStack ), che è attualmente disponibile solo per l'architettura AArch64 e funziona durante la compilazione del codice con l'opzione "-fixed-r18". La modalità fornisce protezione contro la riscrittura dell'indirizzo di ritorno della funzione in caso di overflow del buffer dello stack. L'essenza della protezione è salvare l'indirizzo di ritorno in uno stack "ombra" separato dopo il trasferimento del controllo alla funzione e recuperare questo indirizzo prima di uscire dalla funzione.

fonte: https://gcc.gnu.org/pipermail


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.