Dana 3. maja, održano je prvo javno izdanje devete verzije GCC-a: GCC 9.1.
Sadrži mnoga značajna poboljšanja i dodatke u odnosu na osmi
verzija.
Opšte promjene
Opcije
- Naredbe koje prihvaćaju veličinu sada podržavaju 64-bitne vrijednosti i sufikse za određivanje veličine;
- Dodata opcija -flive-patching,za kontrolu optimizacija koje su potencijalno destruktivne za dinamičku zamjenu koda;
- Dodata opcija --completion za podršku automatskog dovršavanja u komandnoj ljusci;
- Dijagnostika kompajlera sada uključuje brojeve redova (-fno-dijagnostika-pokaži-brojeve-linija) i
upišite informacije (fno-diagnostics-show-labels); - Dodata opcija -fdiagnostics-format=json za izlaz dijagnostike u JSON formatu;
- Opcije za određivanje poravnanja (-falign-funkcije, na primjer) sada može prihvatiti nekoliko opcija poravnanja;
- Dodane opcije za filtriranje liste fajlova (-fprofil-filter-datoteke, -fprofil-isključi-datoteke), koje instrumentira profilator;
- AddressSanitizer sada koristi kompaktnije poravnanje za hvatanje nevažećih pristupa varijablama na steku;
- Brojna poboljšanja izlaza -fopt-info;
- Dodata opcija -fsave-optimizacijski-zapis da sačuvate izveštaj o optimizaciji u datoteku;
- Dodata opcija -fipa-stack-alignment и -fipa-referenca-adresira.
Nove ugrađene funkcije
Novi atribut
Ostalo
Brojna poboljšanja generiranja koda vezana za:
- stvaranje sklopnih konstrukcija;
- međuproceduralne optimizacije;
- optimizacija zasnovana na informacijama o profilisanju;
- optimizacija u fazi montaže (LTO);
Također interni format gcov-a je sada JSON i nova opcija --use-hotness-colors uključuje bojenje linija koda na osnovu toga koliko se često koriste.
Jezici
Kvalitet i kompletnost implementacije OpenACC jezici C, C++ i Fortran nastavljaju da se poboljšavaju.
C-slični jezici
- Delimična podrška za OpenMP 5.0 je implementirana;
- Dodata funkcija __builtin_convervector;
- Dodato upozorenje -Saddress-of-packed-member;
- Poboljšanja brojnih postojećih upozorenja;
- Tekst greške prilikom prosljeđivanja pogrešnog broja argumenata makrou sada uključuje deklaraciju samog makroa;
- Poboljšanja prijedloga za ispravku grešaka.
C
- Podrška _Static_assert sa jednim argumentom za -std=c2x (budući C standard);
- Novo upozorenje -Wapsolutna vrijednost, koji hvata pogrešan tip argumenta za funkcije kao što je abs().
C ++
- Nova upozorenja: -Wdeprecated-copy,
-Winit-list-lifetime,
-Nepotreban potez,
-Wpesimizing-move,
-Wclass-conversion; - U toku je rad na implementaciji novih funkcija iz budućeg standarda C++2a;
- Frontend sada pohranjuje preciznije informacije o brojnim elementima izvornog koda, što vam omogućava da prikažete detaljnije informacije u dijagnostici;
- Poboljšana dijagnostika za preopterećene funkcije, binarne operatore, pozive funkcija i format nizove;
- Dodane su automatske ispravke koje podržavaju neka razvojna okruženja za brojne popularne greške (nedostaju zagrade, prostori imena, greške u kucanju, itd.).
libstdc++
- Implementacija C++17 više nije eksperimentalna;
- Dodati paralelni algoritmi, , , A više ne zahtijeva -lstdc++fs;
- Poboljšana eksperimentalna podrška za C++2a ( , , std::bind_front, itd.);
- Podrška za otvaranje tokova datoteka na Windows-u čije putanje sadrže znakove koji nisu char;
- Inicijalna podrška na Windows;
- Početna podrška za Networking TS.
D
Verzija D jezika 2.076 je uključena u GCC.
Fortran
- Potpuna podrška za asinhroni I/O;
- Implementiran argument BACK za MINLOC i MAXLOC;
- Implementirane funkcije FINDLOC i IS_CONTIGOUS;
- Implementirana je sintaksa za pristup komponentama kompleksnih brojeva: c%re i c%im;
- Implementirana sintaksa str%len i a%kind;
- Implementirani C deskriptori i zaglavlje ISO_Fortran_binding.h;
- Opušteni zahtjevi za rezultat funkcija MAX i MIN kada je jedan od argumenata NaN;
- Dodata opcija -fdec-uključiti;
- Dodata direktiva BUILTIN.
libgccjit
- Dodata funkcija gcc_jit_context_add_driver_option.
Ostalo
Mnoge promjene specifične za arhitekturu i OS.
izvor: linux.org.ru