Il 3 maggio ha avuto luogo il primo rilascio pubblico della nona versione di GCC: GCC 9.1.
Contiene molti miglioramenti e aggiunte significativi rispetto all'ottavo
versione.
Modifiche generali
Opzioni
- I comandi che accettano la dimensione ora supportano valori a 64 bit e suffissi per specificare la dimensione;
- Opzione aggiunta -aggiornamento rapido, per controllare le ottimizzazioni potenzialmente distruttive per la sostituzione dinamica del codice;
- Aggiunta l'opzione --completion per supportare il completamento automatico nella shell dei comandi;
- La diagnostica del compilatore ora include i numeri di riga (-fno-diagnostics-mostra-numeri-di-riga) E
digitare le informazioni (fno-diagnostics-show-etichette); - Opzione aggiunta -fdiagnostics-format=json per generare la diagnostica in formato JSON;
- Opzioni per specificare l'allineamento (-funzioni-false, ad esempio) ora può accettare un paio di opzioni di allineamento;
- Aggiunte opzioni per filtrare l'elenco dei file (-ffile-filtro-profilo, -fprofile-esclude-file), che sono strumentati dal profiler;
- AddressSanitizer ora utilizza un allineamento più compatto per individuare gli accessi non validi alle variabili nello stack;
- Numerosi miglioramenti dell'output -fopt-info;
- Opzione aggiunta -fsave-optimization-record per salvare il report di ottimizzazione in un file;
- Opzione aggiunta -allineamento-stack-fipa и -fipa-riferimento-indirizzabile.
Nuove funzionalità integrate
Nuovo attributo
Altro
Numerosi miglioramenti alla generazione del codice relativi a:
- generazione di costrutti di interruttori;
- ottimizzazioni interprocedurali;
- ottimizzazione basata su informazioni di profilazione;
- ottimizzazione in fase di assemblaggio (LTO);
Inoltre, il formato interno di gcov ora è JSON e la nuova opzione --usa-colori-caldi implica colorare le righe di codice in base alla frequenza con cui vengono utilizzate.
Lingue
Qualità e completezza di realizzazione Apri ACC i linguaggi C, C++ e Fortran continuano a migliorare.
Linguaggi simili al C
- È stato implementato il supporto parziale per OpenMP 5.0;
- Funzione aggiunta __builtin_convertvettore;
- Aggiunto avviso -Waddress-of-packed-member;
- Miglioramenti a una serie di avvisi esistenti;
- Il testo dell'errore quando si passa il numero sbagliato di argomenti a una macro ora include la dichiarazione della macro stessa;
- Miglioramenti ai suggerimenti per la correzione degli errori di battitura.
C
- Supporta _Static_assert con un argomento per -std=c2x (futuro standard C);
- Nuovo avvertimento -Wvalore assoluto, che rileva il tipo di argomento sbagliato per funzioni come abs().
C++
- Nuovi avvisi: -Wcopia-deprecata,
-Winit-list-a vita,
-Mossa ridondante,
-Wpessimizzazione-mossa,
-Conversione Wclass; - Sono in corso i lavori per implementare le nuove funzionalità dello standard futuro C++2a;
- Il frontend ora memorizza informazioni più accurate su una serie di elementi del codice sorgente, il che consente di visualizzare informazioni più dettagliate nella diagnostica;
- Diagnostica migliorata per funzioni sovraccaricate, operatori binari, chiamate di funzione e stringhe di formato;
- Aggiunte correzioni automatiche supportate da alcuni ambienti di sviluppo per una serie di errori comuni (parentesi mancanti, spazi dei nomi, errori di battitura, ecc.).
libstdc++
- L'implementazione C++17 non è più sperimentale;
- Aggiunti algoritmi paralleli, , , UN non richiede più -lstdc++fs;
- Supporto sperimentale migliorato per C++2a ( , , std::bind_front, ecc.);
- Supporto per l'apertura di flussi di file su Windows i cui percorsi contengono caratteri non caratteri;
- Supporto iniziale Su Windows;
- Supporto iniziale per Networking TS.
D
La versione in linguaggio D 2.076 è inclusa in GCC.
Fortran
- Supporto completo per I/O asincrono;
- Argomento BACK implementato per MINLOC e MAXLOC;
- Funzioni FINDLOC e IS_CONTIGOUS implementate;
- Implementata la sintassi per accedere alle componenti dei numeri complessi: c%re e c%im;
- Sintassi implementata str%len e a%kind;
- Descrittori C implementati e intestazione ISO_Fortran_binding.h;
- Requisiti rilassati per il risultato delle funzioni MAX e MIN quando uno degli argomenti è NaN;
- Opzione aggiunta -fdec-include;
- Direttiva aggiunta COSTRUZIONE.
libgccjit
- Funzione aggiunta gcc_jit_context_add_driver_option.
Altro
Molte modifiche specifiche dell'architettura e del sistema operativo.
Fonte: linux.org.ru