Pe 3 mai a avut loc prima lansare publică a celei de-a noua versiuni a GCC: GCC 9.1.
Conține multe îmbunătățiri și completări semnificative în comparație cu a opta
versiune.
Modificări generale
Opțiuni
- Comenzile care acceptă dimensiunea acceptă acum valori pe 64 de biți și sufixe pentru a specifica dimensiunea;
- Opțiune adăugată -flive-patching,pentru a controla optimizările care sunt potențial distructive pentru înlocuirea dinamică a codului;
- A fost adăugată opțiunea --completion pentru a suporta completarea automată în shell-ul de comandă;
- Diagnosticarea compilatorului include acum numere de linie (-fno-diagnostic-arata-line-numerele) Și
informații de tip (fno-diagnostics-show-labels); - Opțiune adăugată -fdiagnostics-format=json pentru a scoate diagnostice în format JSON;
- Opțiuni pentru specificarea alinierii (-falign-funcții, de exemplu) poate accepta acum câteva opțiuni de aliniere;
- Opțiuni adăugate pentru filtrarea listei de fișiere (-fprofile-filter-files, -fprofile-exclude-fișiere), care sunt instrumentate de profiler;
- AddressSanitizer folosește acum o aliniere mai compactă pentru a captura accesele nevalide la variabilele din stivă;
- Numeroase îmbunătățiri ale producției -fopt-info;
- Opțiune adăugată -fsave-optimization-record pentru a salva raportul de optimizare într-un fișier;
- Opțiune adăugată -fipa-stack-alignment и -fipa-referință-adresabilă.
Noi funcții încorporate
Atribut nou
Alte
Numeroase îmbunătățiri ale generării de cod legate de:
- generarea de constructii comutatoare;
- optimizări inter-procedurale;
- optimizare bazată pe informații de profilare;
- optimizare la faza de asamblare (LTO);
De asemenea, formatul intern al gcov este acum JSON și noua opțiune --utilizați-culori-fierbinți implică colorarea liniilor de cod în funcție de cât de des sunt utilizate.
Limbi
Calitatea și completitudinea implementării OpenACC limbajele C, C++ și Fortran continuă să se îmbunătățească.
Limbi asemănătoare C
- A fost implementat suport parțial pentru OpenMP 5.0;
- Funcție adăugată __builtin_convertvector;
- Avertisment adăugat -Adresa-de-membrul-ambalat;
- Îmbunătățiri ale unui număr de avertismente existente;
- Textul de eroare la transmiterea unui număr greșit de argumente unei macrocomenzi include acum declarația macrocomenzii în sine;
- Îmbunătățiri ale sugestiilor de corectare a greșelilor de scriere.
C
- Suportă _Static_assert cu un argument pentru -std=c2x (viitorul standard C);
- Avertisment nou -Valoare-Wabsolută, care prinde tipul de argument greșit pentru funcții precum abs().
C ++
- Avertismente noi: -Wdeprecat-copie,
-Wit-list-lifetime,
-Mișcare-wredundant,
-Wpesimizing-mutare,
-Wclass-conversie; - Se lucrează la implementarea de noi caracteristici din viitorul standard C++2a;
- Interfața stochează acum informații mai precise despre un număr de elemente de cod sursă, ceea ce vă permite să afișați informații mai detaliate în diagnosticare;
- Diagnosticare îmbunătățită pentru funcții supraîncărcate, operatori binari, apeluri de funcții și șiruri de format;
- S-au adăugat remedieri automate acceptate de unele medii de dezvoltare pentru o serie de erori populare (lipsă paranteze, spații de nume, greșeli de tipar etc.).
libstdc++
- Implementarea C++17 nu mai este experimentală;
- S-au adăugat algoritmi paraleli, , , A nu mai necesită -lstdc++fs;
- Suport experimental îmbunătățit pentru C++2a ( , , std::bind_front etc.);
- Suport pentru deschiderea fluxurilor de fișiere pe Windows ale căror căi conțin caractere non-car;
- Sprijin inițial pe Windows;
- Suport inițial pentru Networking TS.
D
Limba D versiunea 2.076 este inclusă în GCC.
Fortran
- Suport complet pentru I/O asincron;
- Argumentul BACK implementat pentru MINLOC și MAXLOC;
- Implementarea funcțiilor FINDLOC și IS_CONTIGOUS;
- A fost implementată sintaxa de accesare a componentelor numerelor complexe: c%re și c%im;
- Sintaxa implementată str%len și a%kind;
- Implementați descriptori C și antetul ISO_Fortran_binding.h;
- Cerințe relaxate pentru rezultatul funcțiilor MAX și MIN atunci când unul dintre argumente este NaN;
- Opțiune adăugată -fdec-include;
- A fost adăugată directiva INCORPORAT.
libgccjit
- Funcție adăugată gcc_jit_context_add_driver_option.
Alte
Multe modificări specifice arhitecturii și sistemului de operare.
Sursa: linux.org.ru