GCC 11.1 шығарылды, бұл оның маңызды жаңалықтары және өзгертулері

Бір жыл дамығаннан кейін, GCC 11.1 компилятор жинағының жаңа нұсқасы шықты, жаңа 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-matching).

Аппараттық жеделдетуге қолдау қосылды босатылған жад аумақтарына қол жеткізу, бөлінген буфер шектерінен асу фактілерін анықтауға мүмкіндік беретін AddressSanitizer құралының және жадпен жұмыс істеу кезіндегі кейбір басқа қателіктердің түрлері. Қазіргі уақытта аппараттық жеделдету тек AArch64 архитектурасы үшін қол жетімді және оны Linux ядросын құрастыру кезінде қолдануға бағыттайды.

Ұсынылатын тағы бір жаңалық - бұл процедуралар арасындағы оңтайландыру және жетілдіру, өйткені жаңа IPA-modref өтуі қосылды (-fipa-modref) функционалдық шақырулардағы жанама әсерлерді бақылау және талдаудың дәлдігін жақсарту. Сонымен қатар а IPA-ICF өтуін жетілдіру (-fipa-icf), бұл компиляция жадының шығынын азайтады және кодтың бірдей блоктары біріктірілген бірыңғай функциялар санын көбейтеді.

El профильді басқаратын оңтайландыру қозғалтқышы (PGO), «-fprofile-values» режимі жетілдірілген жанама қоңыраулардың қосымша параметрлерін қадағалау арқылы.

Сондай-ақ OpenMP 5.0 стандартының жалғасуы атап өтілді (Ашық көп өңдеу), онда тағайындау директивасына бастапқы қолдау және біркелкі емес ілмектерді қолдану мүмкіндігі қосылды OpenMP құрастыруларында. OMP_TARGET_OFFLOAD ортасының айнымалысына енді қолдау көрсетіледі.

Графикалық процессорлар мен NVIDIA PTX сияқты мамандандырылған процессорларға түсіру операцияларын жүргізуге арналған құралдарды анықтайтын C, C ++ және Fortran тілдеріне арналған OpenACC 2.6 параллель бағдарламалау спецификасын енгізу жетілдірілді.

C тобының тілдері үшін жаңа «no_stack_protector» атрибуты енгізілді, Стек қорғанысын қосуға болмайтын функцияларды белгілеуге арналған («-fstack-protector»). «Malloc» атрибуты жадыны бөлуге және босатуға арналған қоңыраулар жұбын анықтауға қолдау көрсете отырып кеңейтілді, ол статикалық талдаушыда жадтың әдеттегі қателерін анықтау үшін қолданылады (жадтың ағуы, бос болғаннан кейін пайдалану, бос функцияға қосарланған қоңыраулар және т.б.) және «-Wmismatched-dealloc», «-Wmismatched- new-delete» және «компилятор ескертулері -Whree-nonheap-object «есеп беруі сәйкес келмейтін дислокастау және дислокация операциялары.

Түзету туралы ақпаратты құру кезінде DWARF 5 форматы әдепкі бойынша қолданылады, ол алдыңғы нұсқалармен салыстырғанда 25% ықшам күйге келтіру деректерін жасауға мүмкіндік береді. DWARF 5 толық қолдауы үшін кем дегенде 2.35.2 нұсқасы қажет.

Жақсартылған ThreadSanitizer режимінің мүмкіндіктері (-fsanitize = жіп), иә болғандықтане жұмыс уақыты мен орталарына балама қолдауды қосады, Linux ядросындағы жарыс жағдайларын динамикалық түрде анықтау үшін Kernel Concurrency Sanitizer (KCSAN) күйін келтіру құралын қолдау. «-Param tsan-differents-volatile» және «-param tsan-instrument-func-entry-exit» жаңа опциялары қосылды.

Векторизатор функцияның барлық мазмұнын есепке алуды және басқару ағынының кестесінде (CFG) қиылыстармен және алдыңғы блоктарға сілтемелермен байланысты мүмкіндіктердің қосымша өңделуін қамтамасыз етеді.

Оптимизатор шартты амалдар қатарын өзгермелі өрнекке түрлендіре алады, сол айнымалы салыстырылады. Болашақта өзгерту өрнегін биттік тестілеу нұсқауларын қолданып кодтауға болады (осы түрлендіруді басқару үшін «-fbit-test» параметрі қосылды).

C ++ үшін C ++ 20 стандартында ұсынылған өзгерістер мен жаңартулардың бір бөлігі, соның ішінде вирустық функциялар, «konsteval virtual», объектілердің өмірлік циклын тоқтату үшін псевдо-деструкторлар, enum класын қолданып, есептеу «жаңа» өрнегіндегі массивтің өлшемі.

Егер сіз бұл туралы көбірек білгіңіз келсе, егжей-тегжейін тексере аласыз келесі сілтеме. 


Мақаланың мазмұны біздің ұстанымдарымызды ұстанады редакторлық этика. Қате туралы хабарлау үшін нұқыңыз Мұнда.

Бірінші болып пікір айтыңыз

Пікіріңізді қалдырыңыз

Сіздің электрондық пошта мекен-жайы емес жарияланады. Міндетті өрістер таңбаланған *

*

*

  1. Деректерге жауапты: Мигель Анхель Гатан
  2. Деректердің мақсаты: СПАМ-ны басқару, түсініктемелерді басқару.
  3. Заңдылық: Сіздің келісіміңіз
  4. Деректер туралы ақпарат: заңды міндеттемелерді қоспағанда, деректер үшінші тұлғаларға жіберілмейді.
  5. Деректерді сақтау: Occentus Networks (ЕО) орналастырған мәліметтер базасы
  6. Құқықтар: Сіз кез-келген уақытта ақпаратты шектей, қалпына келтіре және жоя аласыз.