GCC 9.1

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 Π±ΠΎΠ»Π΅Π΅ Π½Π΅ являСтся ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, <execution>, <memory_resource>, Π° <filesystem> большС Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ -lstdc++fs;
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° C++ 2a (<bit>, <version>, std::bind_front ΠΈ Ρ‚.Π΄.);
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° открытия ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° Windows, ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ содСрТат символы, выходящиС Π·Π° Ρ€Π°ΠΌΠΊΠΈ char;
  • ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° <filesystem> Π½Π° 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

Π”Ρ€ΡƒΠ³ΠΎΠ΅

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ- ΠΈ ОБ-спСцифичных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ