GCC 11.1 вече е издаден, това са най-важните новини и промени

След една година на развитие, Пусната нова версия на GCC 11.1 compiler suite, първата значима версия в новия клон на GCC 11.x. Съгласно новата схема за номериране на версиите, версия 11.0 беше използвана по време на разработката и малко преди пускането на GCC 11.1, клон на GCC 12.0 вече беше раздвоен, за да формира следващата основна версия на GCC 12.1.

GCC 11.1 се отличава с прехода към файла за отстраняване на грешки по подразбиране DWARF 5, включването по подразбиране на стандарта C ++ 17 ("-std = gnu ++ 17"), значителни подобрения в съвместимостта със стандарта C ++ 20, експериментална поддръжка за C ++ 23, подобрения, свързани с бъдещия стандарт на езикът C (C2x), нови оптимизации на производителността.

GCC 11.1 Основни нови функции

Режимът по подразбиране за езика C ++ се променя, за да използва стандарта C ++ 17, вместо предложената по-рано C ++ 14. Възможно е селективно да деактивирате новото поведение на C ++ 17, когато обработвате шаблони, които използват други шаблони като параметър (-fno-new-ttp-match).

Добавена поддръжка за хардуерно ускорение на инструмента AddressSanitizer, който ви позволява да определите фактите за достъп до освободени области на паметта, надхвърлящи лимитите на разпределения буфер и някои други видове грешки при работа с памет. В момента хардуерното ускорение е достъпно само за архитектурата AArch64 и се фокусира върху използването му при компилиране на ядрото на Linux.

Друга новост, която се представя са оптимизации и подобрения между процедурите, тъй като беше добавен нов пропуск IPA-modref (-fipa-modref) за проследяване на странични ефекти при извиквания на функции и подобряване на точността на анализа. Освен това а подобрено изпълнение на прохода IPA-ICF (-fipa-icf), което намалява консумацията на памет за компилация и увеличава броя на унифицираните функции, за които се обединяват идентични блокове код.

El двигател за оптимизация, управляван от профили (PGO), подобрен режим "-fprofile-values" чрез проследяване на повече параметри за непреки повиквания.

също Постоянното прилагане на стандарта OpenMP 5.0 е подчертано (Open Multi-Processing), в който добавена първоначална поддръжка за директива за присвояване и възможност за използване на неравномерни цикли в компилации на OpenMP. Вече се поддържа променливата на средата OMP_TARGET_OFFLOAD.

Подобрено е изпълнението на спецификацията за паралелно програмиране OpenACC 2.6, предвидена за езиците C, C ++ и Fortran, която дефинира инструменти за разтоварване на операции към графични процесори и специализирани процесори като NVIDIA PTX.

За езиците от семейство C е реализиран нов атрибут "no_stack_protector", предназначен да маркира функции, за които защитата на стека не трябва да бъде активирана ("-fstack-protector"). Атрибутът "malloc" е разширен с поддръжка за идентифициране на двойки повиквания за разпределяне и освобождаване на памет, който се използва в статичния анализатор за откриване на типични грешки в паметта (изтичане на памет, използване след безплатно, двойни извиквания на безплатна функция и т.н.) и предупреждения на компилатора "-Wmismatched-dealloc", "-Wmismatched- new-delete" и " -Wfree-nonheap-object "отчитане на противоречиви операции по освобождаване и освобождаване.

Когато се генерира информация за отстраняване на грешки, форматът DWARF 5 се използва по подразбиране, което в сравнение с предишните версии позволява генерирането на данни за отстраняване на грешки, които са с 25% по-компактни. Пълната поддръжка на DWARF 5 изисква binutils поне версия 2.35.2.

Подобрени възможности на режима ThreadSanitizer (-fsanitize = нишка), тъй като даe добавя поддръжка за алтернативни времена на изпълнение и среда, както и поддръжка на инструмента за отстраняване на грешки на Kernel Concurrency Sanitizer (KCSAN) за динамично откриване на състезателни условия в ядрото на Linux. Добавени са нови опции „–param tsan-разграничаване-летливи“ и „–param tsan-instrument-func-влизане-изход“.

Векторизаторът осигурява отчитане на цялото съдържание на функцията и допълнителна обработка на възможностите, свързани с пресичанията и препратки към предишни блокове в контролната схема (CFG).

Оптимизаторът има способността да преобразува поредица от условни операции в израз за промяна, в който се сравнява същата променлива. В бъдеще изразът за промяна може да бъде кодиран с помощта на инструкции за битов тест (за управление на това преобразуване е добавена опцията "-fbit-tests").

За C ++ са внедрени част от промените и иновациите, предложени в стандарта C ++ 20, включително виртуалните функции "consteval virtual", псевдоразрушители за прекратяване на жизнения цикъл на обектите, използване на класа enum и изчисляване размера на масив в израза "нов".

Ако искате да научите повече за това, можете да проверите подробностите в следната връзка. 


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

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

*

*

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