3 траўня адбыўся першы публічны выпуск дзевятай версіі GCC: GCC 9.1.
Ён змяшчае мноства істотных паляпшэнняў і даданняў у параўнанні з восьмай
версіяй.
агульныя змены
Опцыі
- Каманды, якія прымаюць памер, зараз падтрымліваюць 64-бітныя значэнні і суфіксы для ўказання памеру;
- Дададзена опцыя -flive-patching, для кіравання аптымізацыямі, патэнцыйна дэструктыўнымі для дынамічнай замены кода;
- Дададзена опцыя -completion для падтрымкі аўта-дадаткі ў каманднай абалонцы;
- Дыягностыкі кампілятара зараз уключаюць нумары радкоў (-fno-diagnostics-show-line-numbers) І
інфармацыю аб тыпах (fno-diagnostics-show-labels); - Дададзена опцыя -fdiagnostics-format=json для вываду дыягностык у фармаце JSON;
- Опцыі для ўказання выраўноўвання (-falign-functions, напрыклад) зараз могуць прымаць пару варыянтаў выраўноўвання;
- Дададзеныя опцыі для фільтрацыі спісу файлаў (-fprofile-filter-files, -fprofile-exclude-files), якія падвяргаюцца інструментаванню прафіліроўшчыкам;
- AddressSanitizer зараз выкарыстоўвае больш кампактнае выраўноўванне для адлову некарэктных зваротаў да зменных на стэку;
- Шматлікія паляпшэнні ў выснове -fopt-info;
- Дададзена опцыя -fsave-optimization-record для захавання справаздачы аб аптымізацыях у файл;
- Дададзена опцыя -fipa-stack-alignment и -fipa-reference-addressable.
Новыя ўбудаваныя функцыі
Новы атрыбут
Іншая
Шматлікія паляпшэнні кодагенерацыі звязаныя з:
- генерацыяй switch-канструкцый;
- між-працэдурнымі аптымізацыямі;
- аптымізацыяй, заснаванай на інфармацыі аб прафіляванні;
- аптымізацыяй на этапе зборкі (LTO);
Таксама унутраным фарматам gcov зараз з'яўляецца JSON, а новая опцыя -use-hotness-colors уключае размалёўванне радкоў кода ў залежнасці ад частаты іх выкарыстання.
Мовы
Якасць і паўната рэалізацыі OpenACC у мовах C, C++, і Fortran працягваюць паляпшацца.
З-падобныя мовы
- Рэалізавана частковая падтрымка OpenMP 5.0;
- Дададзена функцыя __builtin_convertvector;
- Дададзена папярэджанне -Waddress-of-packed-member;
- Паляпшэнні ў шэрагу існуючых папярэджанняў;
- Тэкст памылкі пры перадачы ў макрас няправільнай колькасці аргументаў зараз уключае аб'яву самога макраса;
- Паляпшэнні ў прапановах аб выпраўленні памылак друку.
C
- Падтрымка _Static_assert з адным аргументам для -std=c2x (будучы стандарт C);
- Новае папярэджанне -Wabsolute-value, Які адлоўлівае няправільны тып аргументу для такіх функцый як abs().
C + +
- Новыя папярэджанні: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-move,
-Wpessimizing-move,
-Wclass-conversion; - Вядзецца праца па рэалізацыі новых магчымасцяў з будучага стандарту C++ 2a;
- Франтэнд зараз захоўвае больш дакладную інфармацыю аб шэрагу элементаў зыходнага кода, што дазваляе адлюстроўваць больш дэталёвую інфармацыю ў дыягностыках;
- Палепшаны дыягностыкі для перагружаных функцый, бінарных аператараў, выклікаў функцый і радкоў, якія задаюць фармат;
- Дададзены падтрымліваюцца некаторымі асяроддзямі распрацоўкі аўтаматычныя выпраўленні для шэрагу папулярных памылак (адсутныя дужкі, прасторы імёнаў, памылкі друку і г.д.).
libstdc++
- Рэалізацыя C++17 больш не з'яўляецца эксперыментальнай;
- Дададзеныя паралельныя алгарытмы, , , а больш не патрабуе -lstdc++fs;
- Палепшана эксперыментальная падтрымка C++ 2a ( , , std::bind_front і г.д.);
- Падтрымка адкрыцця струменяў файлаў на Windows, шляхі да якіх утрымоўваюць знакі, якія выходзяць за рамкі char;
- Пачатковая падтрымка на Windows;
- Пачатковая падтрымка Networking TS.
D
Мова D версіі 2.076 уключаны ў склад GCC.
Fortran
- Поўная падтрымка асінхроннага ўводу/высновы;
- Рэалізаваны аргумент BACK для MINLOC і MAXLOC;
- Рэалізаваны функцыі FINDLOC і IS_CONTIGUOUS;
- Рэалізаваны сінтаксіс доступу да састаўных частак комплексных лікаў: c%re і c%im;
- Рэалізаваны сінтаксіс str%len і a%kind;
- Рэалізаваны дэскрыптары C і загаловак ISO_Fortran_binding.h;
- Аслаблены патрабаванні на вынік функцый MAX і MIN, калі адзін з аргументаў з'яўляецца NaN;
- Дададзена опцыя -fdec-include;
- Дададзена дырэктыва BUILTIN.
libgccjit
- Дададзена функцыя gcc_jit_context_add_driver_option.
Іншая
Мноства архітэктурна-і АС-спецыфічных змен.
Крыніца: linux.org.ru