GCC 12.1 уже выпущен, узнайте его новости и 35-летие

Логотип GNU GCC

Запуск новая версия компилятора НКУ (Сборник компиляторов GNU) 12.1 уже вышла и, как и все основные выпуски GCC, этот выпуск принесет множество дополнений, улучшений, исправлений ошибок и новых функций, плюс в этом месяце (23 мая) проекту исполнится 35 лет с момента создания первого выпуска.

GCC 12 уже является системным компилятором для Fedora 36, ​​и GCC 12 также будет доступен в Red Hat Enterprise Linux в Red Hat Developer Toolset (версия 7) или Red Hat GCC Toolset (версии 8 и 9).

Разработчики GCC с гордостью объявляют об еще одном крупном выпуске GCC, 12.1.

В этом году мы отмечаем 35-летие первой бета-версии GCC.
И в этом месяце мы будем отмечать 35 лет с момента выпуска GCC 1.0!

В этом выпуске прекращена поддержка формата отладки STABS и
вводит поддержку формата отладки CTF [1]. С и С++
интерфейсы продолжают развиваться с расширенной поддержкой функций
в будущих стандартах C2X и C++23 и стандартной библиотеке C++
улучшает поддержку экспериментальных частей C++20 и C++23.
Интерфейс Fortran теперь полностью совместим с TS 29113 для взаимодействия с C.

Что нового в GCC 12.1?

В этой новой версии Реализовано несколько предложений, например, для языков C и C++, добавлены встроенная функция __встроенный_динамический_объект_размер для определения размера объекта, совместимый с аналогичной функцией Clang.

Добавлено поддержка атрибута «недоступен» для языков C и C++ (например, можно пометить функции, использование которых приведет к ошибке), а также добавлена ​​поддержка директив препроцессора "#elifdef" и "#elifndef" для языков C и C++.

Также отмечается, что Флаг "-Wbidi-chars" для предупреждения о неправильном использовании символов UTF-8., изменение порядка отображения двунаправленного текста, а также флаг "-Warray-compare" для выдачи предупреждения при попытке сравнить два операнда, ссылающихся на массивы.

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

Так же улучшенная реализация спецификации параллельного программирования OpenACC 2.6, определение средств для разгрузки операций на графических процессорах и специализированных процессорах, таких как NVIDIA PTX, а также добавление поддержки расширенных инструкций Intel AVX512-FP16 и типа _Float16 в серверную часть генерации кода x86.

Внешний интерфейс Fortran обеспечивает полную поддержку спецификации TS 29113, которая описывает возможности обеспечения переносимости между Fortran и кодом C.

Устарела поддержка формата хранения отладочной информации «STABS», созданного в 1980-х годах.

Добавлена ​​поддержка расширения __builtin_shufflevector(vec1, vec2, index1, index2, …), ранее добавленного в Clang, которое обеспечивает один вызов для выполнения общих операций перемешивания и перемешивания векторов.

При использовании уровня оптимизации "-O2" векторизация включена по умолчанию (включены режимы -ftree-vectorize и -fvect-cost-model=very-cheap). «Очень дешевая» модель допускает векторизацию только в том случае, если векторный код может полностью заменить векторизуемый скалярный код.

Добавлен режим "-ftribute-auto-var-init". включить явную инициализацию переменных в стеке для отслеживания проблем и блокировки уязвимостей, связанных с использованием неинициализированных переменных.

Добавлен реализация функций C, встроенных в компилятор (Intrinsics) для атомарной загрузки и хранения данных в памяти на основе использования расширенных инструкций ARM (ls64). Добавлена ​​поддержка ускорения функций memcpy, memmove и memset с помощью расширения ARM mopoption.

Добавлено новый режим проверки "-fsanitize=shadow-call-stack" ( ShadowCallStack ), который в настоящее время доступен только для архитектуры AArch64 и работает при компиляции кода с опцией "-fixed-r18". Режим обеспечивает защиту от перезаписи адреса возврата функции в случае переполнения буфера стека. Суть защиты заключается в сохранении адреса возврата в отдельном «теневом» стеке после передачи управления функции и извлечении этого адреса перед выходом из функции.

источник: https://gcc.gnu.org/pipermail


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.