Den 3. maj fandt den første offentlige udgivelse af den niende version af GCC sted: GCC 9.1.
Den indeholder mange væsentlige forbedringer og tilføjelser i forhold til den ottende
version.
Generelle ændringer
Optioner
- Kommandoer, der accepterer størrelse, understøtter nu 64-bit værdier og suffikser for at angive størrelse;
- Tilføjet mulighed -flive-patching,for at kontrollere optimeringer, der er potentielt ødelæggende for dynamisk, kodeerstatning;
- Tilføjet --completion mulighed for at understøtte autofuldførelse i kommandoskallen;
- Compilerdiagnostik inkluderer nu linjenumre (-fno-diagnostik-vis-linje-numre) Og
type information (fno-diagnostik-vis-etiketter); - Tilføjet mulighed -fdiagnostics-format=json at udlæse diagnostik i JSON-format;
- Indstillinger for at specificere justering (-falign-funktioner, for eksempel) kan nu acceptere et par tilpasningsmuligheder;
- Tilføjede muligheder for at filtrere listen over filer (-fprofile-filter-filer, -fprofile-ekskluder-filer), som er instrumenteret af profileren;
- AddressSanitizer bruger nu mere kompakt justering til at fange ugyldige adgange til variabler på stakken;
- Talrige outputforbedringer -fopt-info;
- Tilføjet mulighed -fsave-optimization-record at gemme optimeringsrapporten i en fil;
- Tilføjet mulighed -fipa-stack-alignment и -fipa-reference-adresserbar.
Nye indbyggede funktioner
Ny egenskab
Andet
Adskillige kodegenereringsforbedringer relateret til:
- generering af switch-konstruktioner;
- inter-procedurelige optimeringer;
- optimering baseret på profileringsoplysninger;
- optimering på montagestadiet (LTO);
Også gcovs interne format er nu JSON, og den nye mulighed --brug-varme-farver involverer farvelægning af kodelinjer baseret på, hvor ofte de bruges.
Sprog
Kvalitet og fuldstændighed af implementering ÅbnACC sprogene C, C++ og Fortran fortsætter med at forbedre sig.
C-lignende sprog
- Delvis understøttelse af OpenMP 5.0 er blevet implementeret;
- Tilføjet funktion __builtin_convertvector;
- Tilføjet advarsel -Vaddress-of-packed-medlem;
- Forbedringer af en række eksisterende advarsler;
- Fejlteksten, når du sender det forkerte antal argumenter til en makro, inkluderer nu erklæringen af selve makroen;
- Forbedringer af forslag til rettelse af stavefejl.
C
- Understøtter _Static_assert med ét argument for -std=c2x (fremtidig C-standard);
- Ny advarsel -Wabsolut-værdi, som fanger den forkerte argumenttype for funktioner som abs().
C + +
- Nye advarsler: -Uforældet-kopi,
- Winit-liste-levetid,
- Overflødigt træk,
-Wpessimizing-move,
-Wclass-konvertering; - Der arbejdes på at implementere nye funktioner fra den fremtidige standard C++2a;
- Frontenden gemmer nu mere præcis information om en række kildekodeelementer, hvilket giver dig mulighed for at vise mere detaljeret information i diagnostik;
- Forbedret diagnostik for overbelastede funktioner, binære operatorer, funktionskald og formatstrenge;
- Tilføjet automatiske rettelser understøttet af nogle udviklingsmiljøer til en række populære fejl (manglende parenteser, navnerum, tastefejl osv.).
libstdc++
- C++17-implementeringen er ikke længere eksperimentel;
- Tilføjet parallelle algoritmer, , , A kræver ikke længere -lstdc++fs;
- Forbedret eksperimentel understøttelse af C++2a ( , , std::bind_front osv.);
- Understøttelse af åbning af filstrømme på Windows, hvis stier indeholder ikke-char-tegn;
- Indledende støtte på Windows;
- Indledende support til Networking TS.
D
D sprogversion 2.076 er inkluderet i GCC.
Fortran
- Fuld understøttelse af asynkron I/O;
- Implementeret BACK argument for MINLOC og MAXLOC;
- Implementeret FINDLOC og IS_CONTIGOUS funktioner;
- Syntaksen til at få adgang til komponenterne i komplekse tal er blevet implementeret: c%re og c%im;
- Implementeret syntaks str%len og a%kind;
- Implementerede C-deskriptorer og ISO_Fortran_binding.h header;
- Lempede krav til resultatet af funktionerne MAX og MIN, når et af argumenterne er NaN;
- Tilføjet mulighed -fdec-inkluderer;
- Direktiv tilføjet INDBYGGET.
libgccjit
- Tilføjet funktion gcc_jit_context_add_driver_option.
Andet
Mange arkitektur- og OS-specifikke ændringer.
Kilde: linux.org.ru