Релиз набора компиляторов GCC 14

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 2656
Зарегистрирован: 20.08.2022

#

Релиз набора компиляторов GCC 14
Дата публикации:Tue, 07 May 2024 13:55:16 +0300




После года разработки опубликован релиз свободного набора компиляторов GCC 14.1, первый значительный выпуск в новой ветке GCC 14.x. В соответствии с новой схемой нумерации выпусков, версия 14.0 использовалась в процессе разработки, а незадолго до выхода GCC 14.1 уже ответвилась ветка GCC 15.0, на базе которой будет сформирован следующий значительный релиз GCC 15.1.



Основные изменения:
  • Значительно расширены возможности для статического анализа кода на языке Си, доступные через опцию "-fanalyzer" (статический анализ для языка С++ пока не доведён до должного вида). Усилен анализ операций со строками и проверка наличия завершающего строку нулевого символа. Добавлено новое предупреждение "-Wanalyzer-infinite-loop" для выявления бесконечных циклов. Добавлена серия предупреждений "-Wanalyzer-tainted-*" для выявления проблем с проверкой входных данных. Расширены возможности предупреждения "-Wanalyzer-out-of-bounds" для выявления переполнений буфера, например, добавлена возможность отображения диаграммы с визуализацией состояния, приводящего к переполнению.
    Изображение
    Добавлена новая сборочная опция "--enable-host-pie" для сборки исполняемых файлов компилятора в режиме PIE (Position Independent Executable), а также опция "--enable-host-bind-now" для связывания с опциями "-Wl,-z,now".

    Добавлена новая опция "-fhardened", включающая флаги для усиления безопасности (-D_FORTIFY_SOURCE=3
    -D_GLIBCXX_ASSERTIONS
    -ftrivial-auto-var-init=zero
    -fPIE -pie -Wl,-z,relro,-z,now
    -fstack-protector-strong
    -fstack-clash-protection
    -fcf-protection=full).


    Добавлена опция "-fharden-control-flow-redundancy" для добавления в конец функций кода для выявления некоторых форм неопределённого поведения, которые потенциально могут привести к нарушению нормального порядка выполнения (control flow) в результате применения эксплоитов, изменяющих хранимые в памяти указатели на функции и передающих управление в середину функций.


    Добавлен новый атрибут типов "hardbool", позволяющий переопределить значения, сопоставленные с признаками true и false для затруднения некоторых видов атак.

    Добавлен новый атрибут типов strub для управление обнулением кадров стека с данными функций и переменных после выхода из функции или срабатывания исключения.

    Добавлена опция -finline-stringops для включения inline-раскрытия функций memcmp, memcpy, memmove и memset, даже когда это не нужно для оптимизации.
    Добавлен новый атрибут функций null_terminated_string_arg(PARAM_IDX) для пометки параметров, которые следует трактовать как строки, заканчивающиеся нулевым символом.

    В векторизаторе реализована поддержка векторизации циклов, содержащих выражения "break".

    Добавлена начальная поддержка предварительной версии спецификации OpenMP 6.0 (Open Multi-Processing) и продолжена реализация стандартов OpenMP 5.0, 5.1 и 5.2, определяющих API и способы применения методов параллельного программирования на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD).

    Улучшена реализация спецификаций параллельного программирования OpenACC 2.7 и 3.2, определяющих средства для выноса операций (offloading) на GPU и специализированные процессоры, такие как NVIDIA PTX.

    Для C, C++ и Objective-C реализована поддержка расширений "__has_feature" и "__has_extension", применяемых в Clang.

    Реализованы возможности, определённые в будущем Си-стандарте C23, такие как типы "_BitInt (N)" и "unsigned _BitInt (N))". Структуры, объединения и перечисления разрешено определять более одного раза в одной области видимым с одним и тем же содержимым и повторяющимся тегом. Добавлена поддержка заголовочного файла stdckdint.h. Для включения поддержки элементов C23 предложены флаги "-std=c23", "-std=gnu23" и "-Wc11-c23-compat".

    Для языка Си добавлено выражение "#pragma GCC novector", отключающее векторизацию анотированных циклов.

    Добавлены возможности, связанные со стандартом C++23. Добавлена поддержка механизма "Deducing this", позволяющего использовать в шаблоне параметры с признаком "this" и дающего возможность из функции класса узнать категорию выражения (например, является ли константой), для которого эта функция вызвана. Реализовано требование, в соответствии с которым все функции, вызывающие функции с признаком consteval тоже становятся consteval, т.е. выполняются при компиляции. Ослаблены некоторые требования к "constexpr".

    Добавлены возможности, связанные с будущим стандартом C++2с (C++26). Например, предоставлена возможность использования строковых литералов в контексте, в котором они не используются для инициализации массива символов и не попадают в результирующий код, а применяются только во время компиляции для диагностических сообщений и препроцессинга. Добавлена возможность использования сразу нескольких переменных-заполнителей с именем "_" в одной области видимости. Переведено в разряд устаревших выполнение неявных преобразований перечисляемых значений в арифметических вычислениях.

    В libstdc++ улучшена поддержка стандартов C++20, C++23 и C++26.

    В компиляторе для языка Fortran началась работа над поддержкой стандарта Fortran 2023 (-std=f2023).
    Объявлена устаревшей поддержка расширения GCC, позволяющего указывать гибкий элемент-массив (массив неопределённого размера, например, "int b[]") не в самом конце структуры (Flexible Array Members). Массив неопределённого размера в дальнейшем можно будет использовать только в конце структуры.


    В бэкенде для архитектуры AArch64 реализована поддержка CPU
    Ampere-1B (ampere1b), Arm Cortex-A520 (cortex-a520),
    Arm Cortex-A720 (cortex-a720), Arm Cortex-X4 (cortex-x4) и
    Microsoft Cobalt-100 (cobalt-100). Для использования в опциях "-mcpu=" и "-mtune=" добавлены новые идентификаторы CPU generic, generic-armv8-a и generic-armv9-a. Добавлена поддержка расширений Arm SME и SME2 (Streaming Matrix Extensions). Реализованы специфичные для
    архитектуры AArch64 оптимизации.
    В бэкенде для архитектуры ARM добавлена поддержка CPU Cortex-M52 (cortex-m52 в опциях "-mcpu=" и "-mtune=").


    В бэкенде генерации кода для GPU AMD Radeon (GCN) реализована поддержка GPU AMD Radeon gfx90c (GCN5), gfx1030, gfx1036 (RDNA2), gfx1100 и gfx1103 (RDNA3). Повышена производительность для устройств AMD серий MI100 и MI200. По умолчанию активирована архитектура устройств gfx900 (Vega).

    В бэкенд для архитектуры x86 добавлена поддержка расширений архитектуры набора команд Intel AVX10.1, Intel APX (частично), Intel AVX-VNNI-INT16, Intel SHA512, Intel SM3, Intel SM4, Intel USER_MSR.



    Добавлена поддержка CPU AMD на базе ядра Zen 5 (-march=znver5), а также процессоров Intel Clearwater Forest (-march=clearwaterforest), Arrow Lake (-march=arrowlake), Arrow Lake S (-march=arrowlake-s), Lunar Lake (-march=lunarlake) и Panther Lake (-march=pantherlake).
    Добавлена опция "-m[no-]evex512" для управления задействованием 512-битных векторов (по умолчанию включается при поддержке AVX512F. Объявлена устаревшей поддержка CPU Intel Xeon Phi.


    Расширены возможности бэкендов для платформ LoongArch, AVR и RISC-V.


    Расширены возможности вывода диагностики в формате SARIF, основанном на JSON. Формат SARIF можно использовать для получения результатов статического анализа (GCC -fanalyzer), а также для получения сведений о предупреждениях и ошибках.



    Переведена в разряд устаревших и будет удалена в следующем релизе GCC поддержка целевых архитектур ia64 и nios2, применяемых в процессорах Intel Itanium и Nios II.


Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=61132

Жизнь за Нер'зула!

igor
Аватара пользователя
Сообщения: 45
Зарегистрирован: 16.08.2022

#

имеем проблему со сборкой некоторых пакетов. решение
sudo downgrade gcc-libs gcc
vall
Аватара пользователя
Администрация
Сообщения: 561
Зарегистрирован: 09.08.2022

#

Здесь могут и пропустить информацию.

С конкретными примерами проблем можно сделать публикацию в Дефектных обновлениях viewtopic.php?t=3
Ответить