Релиз набора компиляторов GCC 13
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
После года разработки опубликован релиз свободного набора компиляторов GCC 13.1, первый значительный выпуск в новой ветке GCC 13.x. В соответствии с новой схемой нумерации выпусков, версия 13.0 использовалась в процессе разработки, а незадолго до выхода GCC 13.1 уже ответвилась ветка GCC 14.0, на базе которой будет сформирован следующий значительный релиз GCC 14.1.
Основные изменения:
- В состав GCC принят фронтэнд для сборки программ на языке программирования Modula-2. Поддерживается сборка кода, соответствующего диалектам PIM2, PIM3 и PIM4, а также принятому ISO-стандарту для данного языка.
- В дерево исходных текстов GCC добавлен фронтэнд c реализацией компилятора языка Rust, подготовленного проектом gccrs (GCC Rust). В текущем виде форнтэнд отмечен как экспериментальный и отключён по умолчанию. После доведения фронтэнда до готовности (ожидается в следующем выпуске), штатный инструментарий GCC сможет использоваться для компиляции программ на языке Rust без необходимости установки компилятора rustc, построенного с использованием наработок LLVM.
- В механизм оптимизации на этапе связывания (LTO) добавлена поддержка cервера управления работами (jobserver), поддерживаемого проектом GNU make для оптимизации выполнения параллельной сборки в несколько потоков. В GCC jobserver применяется для распараллеливания работ при LTO-оптимизации в контексте всей программы (WPA, Whole-program Analysis). Для взаимодействия с jobserver по умолчанию применяются именованные каналы (--jobserver-style=fifo).
- В статическом анализаторе (-fanalyzer) предложено 20 новых диагностических проверок, среди которых "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size",
"-Wanalyzer-deref-before-check", "-Wanalyzer-infinite-recursion"
-Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
- Реализована возможность вывода диагностики в формате SARIF, основанном на JSON. Новый формат можно использовать для получения результатов статического анализа (GCC -fanalyzer), а также для получения сведений о предупреждениях и ошибках. Включение производится опцией "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", где опции с "json" приводят к выводу в специфичном для GCC варианте формата JSON.
- Реализованы некоторые возможности, определённые в Си-стандарте C23, такие как константа nullptr для определения нулевых указателей, упрощение использования списков с переменным числом аргументов (variadic), расширение возможностей перечислений, атрибут noreturn, разрешение использования constexpr и auto при определении объектов, операторы typeof и typeof_unqual, новые ключевые слова alignas, alignof, bool, false, static_assert, thread_local и true, разрешение указания пустых скобок при инициализации.
- Реализованы некоторые возможности, определённые в стандарте C++23, такие как возможность размещения меток в конце составных выражений, совместимость с типом char8_t, директива препроцессора #warning, разделённые (\u{}, \o{}, \x{}) и именованные ('\N{LATIN CAPITAL LETTER A}') escape-последовательности, static operator(), static operator[], оператор равенства внутри выражений, исключение некоторых ограничений по использованию constexpr, поддержка UTF-8 в исходных текстах.
- В libstdc++ улучшена экспериментальная поддержка стандартов C++20 и C++23, например, добавлена поддержка заголовочного файла <format> и std::format, расширены возможности заголовочного файла <ranges>, добавлены дополнительные типы с плавающей запятой, реализованы заголовочные файлы <experimental/scope> и <experimental/synchronized_value>.
- Добавлены новые атрибуты функций для документирования того, что в целочисленной переменной передаётся файловый дескриптор:
"__attribute__((fd_arg(N)))",
"__attribute__((fd_arg_read(N)))" и "__attribute__((fd_arg_write(N)))". Указанные атрибуты могут использоваться в статическом анализаторе (-fanalyzer) для выявления некорректной работы с файловыми дескрипторами.
- Добавлен новый атрибут "__attribute__((assume(EXPR)))", при помощи которого можно сообщить компилятору, что выражение истинно и компилятор может использовать данный факт это без вычисления выражения.
- Добавлен флаг "-fstrict-flex-arrays=[level]" для выбора поведения при обработке гибкого элемента-массива в структурах (Flexible Array Members, массив неопределённого размера в конце структуры, например, "int b[]").
- Добавлен флаг "-Wenum-int-mismatch" для вывода предупреждений в случае несоответствия между перечисляемым типом и целым типом.
- Во фронтэнде для языка Fortran полностью реализована поддержка финализации.
- Во фронтэнде для языка Go добавлена поддержка обобщённых функций и типов (дженериков), обеспечена совместимость с пакетами для языка Go 1.18.
- В бэкенде для архитектуры AArch64 реализована поддержка CPU
Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) и Arm Neoverse V2 (neoverse-v2). В опцию "-march=" добавлена поддержка аргументов "armv9.1-a", "armv9.2-a" и "armv9.3-a". Добавлена поддержка процессорных расширений FEAT_LRCPC, FEAT_CSSC и FEAT_LSE2.
- В бэкенд для архитектуры ARM добавлена поддержка CPU
STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) и Arm Cortex-M85 (cortex-m85).
- В бэкенд для архитектуры x86 добавлена поддержка процессоров Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids, а также процессоров AMD Zen 4 (znver4).
Реализованы предложенные в процессорах Intel расширения архитектуры набора команд AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT и AMX-COMPLEX. Для языков C и C++ на системах с SSE2 предоставлен тип __bf16.
- В бэкенде генерации кода для GPU AMD Radeon (GCN) реализована возможность использования ускорителей AMD Instinct MI200 для повышения производительности OpenMP/OpenACC. Улучшена векторизация с использованием инструкций SIMD.
- Значительно расширены возможности бэкенда для платформы LoongArch.
- В бэкенде для архитектуры RISC-V добавлена поддержка CPU T-Head's XuanTie C906 (thead-c906). Реализована поддержка векторных обработчиков, определённых в спецификации RISC-V Vector Extension Intrinsic 0.11. Добавлена поддержка 30 расширений спецификаций RISC-V.
- При формировании разделяемых объектов с указанием опции "-shared" прекращено добавление кода запуска после добавления окружения для вычислений с плавающей запятой, если включены оптимизации "-Ofast", "-ffast-math" или "-funsafe-math-optimizations".
- Поддержка отладочного формата DWARF реализована почти во всех конфигурациях.
- Добавлена опция "-gz=zstd" для сжатия отладочной информации с использованием алгоритма Zstandard. Прекращена поддержка устаревшего режима сжатия отладочной информации "-gz=zlib-gnu".
- Добавлена начальная поддержка OpenMP 5.2 (Open Multi-Processing) и продолжена реализация стандартов OpenMP 5.0 и 5.1, определяющих API и способы применения методов параллельного программирования на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD).
- Прекращена поддержка устаревшего формата хранения отладочной информации "STABS" (включался опциями -gstabs и -gxcoff), созданного в 1980-е годы и применяемого в отладчике dbx.
- Объявлена устаревшей поддержка Solaris 11.3 (код для поддержки данной платформы будет удалён в следующем выпуске).
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://gcc.gnu.org/pipermail/...)
- OpenNews: В состав GCC включена поддержка языка программирования Modula-2
- OpenNews: Фронтэнд для языка Rust доведён до готовности к интеграции в GCC 13
- OpenNews: Релиз набора компиляторов GCC 12
- OpenNews: Проект по добавлению в GCC поддержки распараллеливания процесса компиляции
- OpenNews: Проект GCC разрешил приём изменений без передачи Фонду СПО прав на код
Похожие новости:
- Cheerp 3.0, компилятор C/C++ в JavaScript, переведён на лицензии Apache 2.0 и LLVM
- Проект по написанию виртуальной машины на русифицированном языке Си
- Microsoft открыл CHERIoT, аппаратное решение для повышения безопасности кода на языке Си
- Выпуск системной библиотеки Glibc 2.37
- Выпуск Nuitka 1.3, компилятора для языка Python
- В состав GCC включена поддержка языка программирования Modula-2
- Фронтэнд для языка Rust доведён до готовности для интеграции в GCC 13
- АНБ рекомендует переходить на языки программирования, безопасно работающие с памятью
- Выпуск Nuitka 1.1, компилятора для языка Python
- Выпуск языка программирования Rust 1.64
Теги для поиска: #_gcc, #_compile
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 19:53
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
После года разработки опубликован релиз свободного набора компиляторов GCC 13.1, первый значительный выпуск в новой ветке GCC 13.x. В соответствии с новой схемой нумерации выпусков, версия 13.0 использовалась в процессе разработки, а незадолго до выхода GCC 13.1 уже ответвилась ветка GCC 14.0, на базе которой будет сформирован следующий значительный релиз GCC 14.1. Основные изменения:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 19:53
Часовой пояс: UTC + 5