LINUX.ORG.RU

GCC 8.1

 , , , ,


1

6

Спустя намеченный год после выхода предыдущего мажорного выпуска «Коллекции компиляторов ГНУ» [0], увидел свет GCC 8.1. Разработчики обещают свежие возможности и более жесткую оптимизацию.

В частности они отмечают:

  • Экспериментальную поддержку отдельный частей черновика стандарта C++2a в компиляторе, а равно и частей С++2a и окончательно всего C++17 [1] — в стандартной библиотеке.
  • Улучшения в выводе диагностической информации в особенности в части позиций (в том числе в формате «от»-«до») и советов по исправлению ошибок; главнейшим образом это коснулось Си++. Новые предупреждения также не забыты.
  • Повышено качество профилированной оптимизации (PGO); так на x86 функции теперь по-умолчанию делятся на «горячие» и «холодные» участки. При оптимизации во время компоновки теперь задействуется новый способ вывода отладочный сведений в DWARF, что делает оптимизированную программу более удобоотлаживаемой. Добавлены новые и улучшены существующие оптимизации для циклов.
  • Компиляция для архитектуры aarch64 теперь умеет в Scalable Vector Extensions, куда входят в частности вектора с определяемой в процессе исполнения длиной.

Интересующимся более глубоко могут быть полезны полный перечень изменений [2], а также актуальный перечень значительных регрессий [3] в новом выпуске.

[0] https://gnu.org/s/gcc
[1] https://gcc.gnu.org/projects/cxx-status.html#cxx17
[2] https://www.gnu.org/software/gcc/gcc-8/changes.html
[3] https://gcc.gnu.org/bugzilla/buglist.cgi?bug_file_loc_type=allwordssubstr&amp...

>>> info-gnu@gnu.org

★★★★★

Проверено: jollheef ()
Ответ на: комментарий от anonymous

Потому что уже C++11 почти никому не интересен

исправил

Таки да, с 6.1 в g++ по умолчанию C++14.

Что ржачно, в C++2a хотят «бекпортировать» designated initializers. А кричали, что «нинужна, есть конструкторы».

KennyMinigun ★★★★★ ()
Последнее исправление: KennyMinigun (всего исправлений: 1)

Появились новые опции командной строки, например,
-Wstringop-truncation
для таких функций как strncat, strncpy,stpncpy
После чего вот такой код
void append (char *buf, size_t bufsize)
{
strncat (buf, ".txt", 3);
}

сгенерит вот такой варнинг:
warning: 'strncat' output truncated copying 3 bytes from a string of length 4

Выравнивание структур:
-Wpacked-not-aligned
Например, для следующего кода
struct __attribute__ ((aligned (8)))
S8 { char a[8]; };

struct __attribute__ ((packed)) A
{
struct S8 s8;
};
будет сгенерирован варнинг
warning: alignment 1 of 'struct S' is less than 8

kto_tama ★★★★★ ()
Ответ на: комментарий от KennyMinigun

https://gcc.gnu.org/wiki/cxx-modules

Что, в 8.1 запилили-таки? УРА! «Ждём ебилдов» (c).

...Ааааа тепееееерь ждём пропозалов по альтернативным синтаксисам. Модули ж позволят. После чего всякие альтернативы типа D станут неактуальными; ну или наоборот, прикрутят его к модульной системе (если это в принципе возможно).

dimgel ()

более жесткую оптимизацию

developers-developers еще к нынешнему уровню не готовы. Ждем новых жалоб на баги в gcc и жабакодеров в нем же.

anonymous ()
Ответ на: комментарий от dimgel

УРА! «Ждём ебилдов» (c).

Даже в Debian уже вчера добавили:

gcc-8 (8.1.0-1) unstable; urgency=medium

  * GCC 8.1.0 release.
  * Stop providing the 8.x.y symlinks in gcc_lib_dir and incluce/c++.
  * Configure powerpcspe with --enable-obsolete, will be gone with GCC 9.
  * Build libmpx libraries when not building the common libs.
  * Update NEWS files for GCC 8.1.

 — Matthias Klose <doko@debian.org>  Wed, 02 May 2018 11:43:46 +0200
gag ★★★★★ ()
 The main version of libfortran has been changed to 5.

Parameterized derived types, a major feature of Fortran 2003, have been implemented.

The maximum rank for arrays has been increased to 15, conforming to the Fortran 2008 standard.

Transformational intrinsics are now fully supported in initialization expressions. 

Что-то мне подсказывает что про это тоже стоило упомянуть, поскольку другие компиляторы фортрана вымерли.

Slackware_user ★★★★★ ()
Ответ на: комментарий от anonymous

жесткую
способ вывода отладочный сведений


лучше писал бы нормальным языком вместо этого

Это каким? Канцеляритом? Или английским?

ну и да... МИНОРЩИНА!!!

Ну что я могу поделать, мажорнее не будет.

Zmicier ★★★★★ ()
Ответ на: комментарий от Slackware_user

Скорее наоборот. Все, кто пользуется Фортраном, берут ICC или специфичный для платформы компилятор. gfortran - это скорее затычка. На случай, если других вариантов нет.

h31 ★★★★ ()
Ответ на: комментарий от anonymous

Не давно, а два года и работает очень плохо.

Вопрос к знатоку. Вроде бы для крестов были две несовместимые реализации модулей: как у майкрософта и как у шланга. В GCC какую в итоге взяли?

EternalNewbie ()
Ответ на: комментарий от hotpil

Может и будет, ага. Новость написана крайне плохо.

Да?

Ну я честно подождал полдня, дав возможность тому, кто интересуется не только мэйнстримчиком, но и всякими Фортранами и Адами и готовил авторскую новость, ее отправить.

Учитывая, что точная дата выхода не была секретом, надо полагать никто этого делать не собирался. Как не сделал и в прошлый раз — с седьмой версией. И вообще, я их тут что-то особо не припомню.

Где ж вы были-то, а?

Ни слова нет про нововведения в тот же фортран, С, Го, Ада.

Поэтому и сделал единственно верное — пересказал то, что разработчики ГКК в лице Якуба Елинека *сами* сочли нужным о своем труде поведать, в порядке отсебятины внеся лишь пару слов.

Zmicier ★★★★★ ()
Ответ на: комментарий от Zmicier

Нормальным русским. Я наблюдаю неуместное выпендрёжничество, оставьте это людям которые занимающимся этим профессионально. Больно глазкам читать.

anonymous ()
Ответ на: комментарий от anonymous

Неа, не знаю, но выглядит немного иронично, что anonymous не знает об отсутсвии в C++ ( С++11 и С++14, по крайней мере) «anonymous union» и «anonymous struct» (не путать «unnamed struct»). Да и Variable Length Arrays, емнип, в те же стандарты не прошли. Может всё это добавили с C++17?

Объявлений вложенных функций нет (если, например, таковыми не считать lambda).

grem ★★★★★ ()