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++ Standard Library
подобрява поддръжката на експерименталните части на C++20 и C++23.
Интерфейсът на Fortran вече е напълно съвместим с TS 29113 за оперативна съвместимост с C.

Какво е новото в GCC 12.1?

В тази нова версия Реализирани са няколко предложения, като например за езиците C и C++, добавени вградена функция __builtin_dynamic_object_size за определяне на размера на обект, съвместим с подобна функция на Clang.

Добавено поддръжка за атрибута "недостъпен" за езиците 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". Режимът осигурява защита срещу презаписване на адреса за връщане на функцията в случай на препълване на буфера на стека. Същността на защитата е да запише адреса за връщане в отделен стек "сянка" след прехвърлянето на контрола към функцията и да извлече този адрес преди излизане от функцията.

Fuente: https://gcc.gnu.org/pipermail


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорник за данните: AB Internet Networks 2008 SL
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.