GCC 12.1 вже вийшов, знайте його новини та його 35-річчя

Логотип GNU GCC

Запуск нова версія компілятора 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]. C і C++
Інтерфейси продовжують розвиватися з розширеною підтримкою функцій
в майбутніх стандартах C2X і C++23 і стандартній бібліотеці C++
покращує підтримку експериментальних частин C++20 і C++23.
Інтерфейс Fortran тепер повністю відповідає TS 29113 для взаємодії з C.

Що нового в GCC 12.1?

У цій новій версії Було реалізовано декілька пропозицій, наприклад для мов C і C++, додано вбудована функція __builtin_dynamic_object_size для визначення розміру об'єкта, сумісний з подібною функцією Clang.

Додано підтримка атрибута "unavailable" для мов C і C++ (наприклад, ви можете позначити функції, використання яких призведе до помилки), а також додану підтримку директив попередньої обробки "#elifdef" і "#elifndef" для мов C і C++.

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

Крім того, iРеалізація стандартів 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=дуже дешево). «Дуже дешева» модель дозволяє векторизацію лише в тому випадку, якщо векторний код може повністю замінити векторизований скалярний код.

Додано режим "-ftrivial-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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.