Il 3 maggio è stata rilasciata la prima versione pubblica della nona versione di GCC: GCC 9.1.
Contiene numerosi miglioramenti e aggiunte significative rispetto all'ottava
versione.
Modifiche generali
Opzioni
- Le opzioni che accettano dimensioni ora supportano valori a 64 bit e suffissi per indicare la dimensione;
- È stata aggiunta l'opzione -flive-patching, per gestire le ottimizzazioni potenzialmente distruttive per la sostituzione dinamica del codice;
- È stata aggiunta l'opzione —completion per supportare il completamento automatico nella shell;
- Le diagnosi del compilatore ora includono numeri di linea (-fno-diagnostics-show-line-numbers) e
informazioni sui tipi (fno-diagnostics-show-labels); - È stata aggiunta l'opzione -fdiagnostics-format=json per l'output delle diagnosi in formato JSON;
- Opzioni per specificare l'allineamento (-falign-functions, ad esempio) ora possono accettare una coppia di varianti di allineamento;
- Sono state aggiunte opzioni per filtrare l'elenco dei file (-fprofile-filter-files, -fprofile-exclude-files), che vengono sottoposti a strumentazione dal profiler;
- AddressSanitizer ora utilizza un allineamento più compatto per rilevare accessi errati alle variabili nello stack;
- Numerosi miglioramenti nell'output -fopt-info;
- È stata aggiunta l'opzione -fsave-optimization-record per salvare il report delle ottimizzazioni in un file;
- È stata aggiunta l'opzione -fipa-stack-alignment e -fipa-reference-addressable.
Nuove funzioni integrate
Nuovo attributo
- copy.
Altro
Numerosi miglioramenti nella generazione del codice legati a:
- generazione di strutture switch;
- ottimizzazioni inter-procedurali;
- ottimizzazione basata su informazioni di profiling;
- ottimizzazione in fase di linking (LTO);
Inoltre, il formato interno di gcov ora è JSON, e la nuova opzione —use-hotness-colors attiva la colorazione delle righe di codice a seconda della loro frequenza di utilizzo.
Linguaggi
Qualità e completezza dell'implementazione OpenACC nei linguaggi C, C++ e Fortran continuano a migliorare.
Linguaggi simili a C
- È stato implementato un supporto parziale per OpenMP 5.0;
- Funzione aggiunta __builtin_convertvector;
- È stato aggiunto l'avviso -Waddress-of-packed-member;
- Miglioramenti in diversi avvisi esistenti;
- Il messaggio di errore quando si passa un numero errato di argomenti a un macro ora include la dichiarazione stessa del macro;
- Miglioramenti nelle proposte di correzione degli errori di battitura.
C
- Supporto per _Static_assert con un solo argomento per -std=c2x (il futuro standard C);
- Nuovo avviso -Wabsolute-value, che intercetta il tipo di argomento errato per funzioni come abs().
C++
- Nuovi avvisi: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Sono in corso lavori per implementare nuove funzionalità dallo standard futuro C++ 2a;
- Il frontend ora conserva informazioni più precise su diversi elementi del codice sorgente, consentendo di visualizzare informazioni più dettagliate nelle diagnosi;
- Migliorate le diagnosi per funzioni sovraccaricate, operatori binari, chiamate di funzione e stringhe di formato;
- Aggiunti correzioni automatiche supportate da alcuni ambienti di sviluppo per diversi errori comuni (parentesi mancanti, spazi dei nomi, errori di battitura, ecc.).
libstdc++
- L'implementazione di C++17 non è più sperimentale;
- Aggiunti algoritmi paralleli, <execution>, <memory_resource>, e <filesystem> non richiede più -lstdc++fs;
- Migliorata la supporto sperimentale per C++ 2a (<bit>, <version>, std::bind_front, ecc.);
- Supporto per l'apertura di flussi di file su Windows con percorsi contenenti caratteri al di fuori di char;
- Supporto iniziale per <filesystem> su Windows;
- Supporto iniziale per Networking TS.
D
Il linguaggio D versione 2.076 è incluso in GCC.
Fortran
- Supporto completo per input/output asincroni;
- Implementato l'argomento BACK per MINLOC e MAXLOC;
- Implementate le funzioni FINDLOC e IS_CONTIGUOUS;
- Implementata la sintassi di accesso alle componenti di numeri complessi: c%re e c%im;
- Implementata la sintassi str%len e a%kind;
- Implementati descrittori C e intestazione ISO_Fortran_binding.h;
- Allentati i requisiti sui risultati delle funzioni MAX e MIN quando uno degli argomenti è NaN;
- È stata aggiunta l'opzione -fdec-include;
- Direttiva aggiunta BUILTIN.
libgccjit
- Funzione aggiunta gcc_jit_context_add_driver_option.
Altro
Numerosi cambiamenti specifici per architettura e OS.
Fonte: linux.org.ru

