Пас аз як соли рушд, нашри маҷмӯи компилятори ройгони GCC 14.1 бароварда шуд, ки аввалин нашри муҳим дар филиали нави GCC 14.x. Тибқи нақшаи рақамгузории нави релиз, версияи 14.0 ҳангоми таҳия истифода мешуд ва чанде пеш аз нашри GCC 14.1, филиали GCC 15.0 аллакай ҷудо шуда буд, ки аз он версияи муҳими навбатии GCC 15.1 ташаккул меёбад.
Тағйироти асосӣ:
- Имкониятҳои таҳлили статикии код дар забони Си, ки тавассути опсияи "-fanalyzer" дастрасанд, ба таври назаррас васеъ карда шуданд (таҳлили статикӣ барои забони C++ то ҳол ба шакли дуруст оварда нашудааст). Таҳлили амалиётҳо бо сатрҳо ва санҷиши мавҷудияти сатри хотимаёфтаи аломати нул пурзӯр карда шуд. Огоҳии нави "-Wanalyzer-infinite-loop" барои ошкор кардани ҳалқаҳои беохир илова карда шуд. Барои муайян кардани мушкилот бо тасдиқи вуруд як қатор огоҳиҳои "-Wanalyzer-tainted-*" илова карда шуд. Огоҳии "-Ванализер-берун аз ҳудуди" барои ошкор кардани фаромадани буфер такмил дода шудааст, масалан, қобилияти намоиш додани диаграммаи визуалии ҳолати ба фаромадан овардашуда илова карда шудааст.

- Илова кардани варианти нави сохтани "—enable-host-pie" барои сохтани файлҳои иҷрошавандаи компилятор дар режими PIE (Position Independent Executable) ва инчунин опсияи "—enable-host-bind-now" барои пайвастшавӣ бо имконоти "-Wl" , -з, ҳоло."
- Варианти нави "-fhardened" илова карда шуд, ки парчамҳоро барои баланд бардоштани амният дар бар мегирад (-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -ftrivial-auto-var-init=zero -fPIE -pie -Wl,-z,relro,-z,now -fstack-protector -қавӣ -fstack-clash-protection -fcf-protection = пурра).
- Опсияи "-fharden-control-flow-redundancy" барои замима кардани функсияҳои рамзӣ барои ошкор кардани баъзе шаклҳои рафтори номуайян, ки эҳтимолан ба ҷараёни назорат оварда мерасонад, ки аз эксплойтҳо, ки нишондиҳандаҳои функсияи захирашударо дар хотира тағир медиҳанд ва назоратро ба мобайни функсияҳо интиқол медиҳанд, оварда шудааст.
- Аттрибути нави "hardbool" илова карда шуд, ки ба шумо имкон медиҳад, ки арзишҳои марбут ба атрибутҳои ҳақиқӣ ва бардурӯғро бекор кунед, то намудҳои муайяни ҳамлаҳоро душвортар созед.
- Барои назорат кардани тозакунии чаҳорчӯбаҳои стек бо функсия ва додаҳои тағирёбанда пас аз баромадани функсия ё партофтани истисно як атрибути нави навъи strub илова карда шуд.
- Опсияи иловашудаи -finline-stringops барои имкон додани тавсеаи дохилии функсияҳои memcmp, memcpy, memmove ва memset, ҳатто вақте ки барои оптимизатсия лозим нест.
- Барои қайд кардани параметрҳое, ки бояд ҳамчун сатрҳои бо нул қатъшуда баррасӣ карда шаванд, атрибути нави функсияи null_terminated_string_arg(PARAM_IDX) илова карда шуд.
- Векторизатор векторизатсияи ҳалқаҳоеро, ки ифодаҳои "танаффус" доранд, дастгирӣ мекунад.
- Дастгирии ибтидоӣ барои версияи пешакии мушаххасоти OpenMP 6.0 (Open Multi-Processing) ва татбиқи идомаи стандартҳои OpenMP 5.0, 5.1 ва 5.2, ки APIҳо ва усулҳои татбиқи усулҳои барномасозии параллелӣ дар бисёр ядроӣ ва гибридӣ (CPU+)-ро муайян мекунанд, илова карда шуд. GPU/DSP) системаҳои дорои хотираи муштарак ва блокҳои векторизатсия (SIMD).
- Татбиқи беҳтаршудаи OpenACC 2.7 ва 3.2 мушаххасоти барномасозии параллелӣ, ки асбобҳоро барои амалиёти борфарорӣ дар GPU ва протсессори махсус ба монанди NVIDIA PTX муайян мекунад.
- Барои C, C++ ва Objective-C, дастгирии васеъкуниҳои "__has_feature" ва "__has_extension", ки дар Clang истифода мешаванд, амалӣ карда шудааст.
- Хусусиятҳое, ки дар ояндаи C-стандарти C23 муайян карда мешаванд, ба монанди намудҳои "_BitInt (N)" ва "imsigned _BitInt (N))" амалӣ карда мешаванд. Сохторҳо, иттиҳодияҳо ва рӯйхатҳо иҷозат дода мешаванд, ки дар як миқёс зиёда аз як маротиба муайян карда шаванд, ки бо ҳамон мундариҷа ва тегҳои такроршаванда намоёнанд. Дастгирии иловашуда барои файли сарлавҳаи stdckdint.h. Барои фаъол кардани дастгирӣ барои унсурҳои C23, парчамҳои "-std=c23", "-std=gnu23" ва "-Wc11-c23-compat" пешниҳод карда мешаванд.
- Барои забони C, ифодаи "#pragma GCC novector" илова карда шудааст, ки векторизатсияи ҳалқаҳои эзоҳро ғайрифаъол мекунад.
- Илова хусусиятҳои марбут ба стандарти C ++ 23. Дастгирии иловагии механизми "Тарҳи ин", ки ба шумо имкон медиҳад параметрҳоро бо атрибути "ин" дар қолаб истифода баред ва имкон медиҳад, ки аз функсияи синф категорияи ифодаро муайян кунед (масалан, он доимӣ аст ё не. ) барои он ин функсия даъват карда мешавад. Талабот амалӣ карда шуд, ки мувофиқи он ҳама функсияҳое, ки функсияҳоро бо атрибути констевалӣ даъват мекунанд, низ констевалӣ мешаванд, яъне. хангоми тартиб додан ичро карда мешаванд. Баъзе талаботҳо барои "constexpr" сабук карда шуданд.
- Хусусиятҳои иловагии марбут ба стандарти ояндаи C++2c (C++26). Масалан, мумкин аст, ки литералҳои сатрро дар контекст истифода бурдан мумкин аст, ки дар он онҳо барои оғоз кардани массиви аломатҳо истифода намешаванд ва дар коди натиҷавӣ хотима намеёбанд, балки танҳо дар вақти тартибдиҳӣ барои паёмҳои ташхисӣ ва коркарди пешакӣ истифода мешаванд. Имконияти истифодаи якчанд тағирёбандаҳои ҷойнишин бо номи "_" дар як миқёс илова карда шуд. Табдилдиҳии номуайяни арзишҳои номбаршуда дар ҳисобҳои арифметикӣ бекор карда шудааст.
- libstdc++ дастгирии стандартҳои C++20, C++23 ва C++26-ро беҳтар кардааст.
- Дар компилятори Fortran кор оид ба дастгирии стандарти Fortran 2023 (-std=f2023) оғоз шудааст.
- Дастгирии тамдиди GCC, ки ба шумо имкон медиҳад, ки унсури массиви чандирро (массиви андозаи номуайян, ба мисли "int b[]") дар охири сохтор на дар охири сохтор (Аъзоёни массиви чандир) муайян кунед, бекор карда шудааст. Массиви андозаи номуайянро танҳо дар охири сохтор истифода бурдан мумкин аст.
- Дар пушти меъмории AArch64 CPU Ampere-1B (ampere1b), Arm Cortex-A520 (kortex-a520), Arm Cortex-A720 (cortex-a720), Arm Cortex-X4 (cortex-x4) ва Microsoft Cobalt-100 (кортекс-x100) дастгирӣ мекунад. кобальт-8). Идентификаторҳои нави генералии CPU, generic-armv9-a ва generic-armv2-a, барои истифода дар имконоти "-mcpu =" ва "-mtune =" илова карда шуданд. Дастгирии иловашуда барои Arm SME ва SME64 (Extensions Streaming Matrix). Оптимизатсияи мушаххаси меъмории AArchXNUMX амалӣ карда шуд.
- Дар пуштибонии меъмории ARM, дастгирӣ барои CPUs Cortex-M52 илова карда шудааст (cortex-m52 дар имконоти "-mcpu =" ва "-mtune =").
- Насли код барои AMD Radeon GPUs (GCN) GPU-ҳои AMD Radeon gfx90c (GCN5), gfx1030, gfx1036 (RDNA2), gfx1100 ва gfx1103 (RDNA3) -ро дастгирӣ мекунад. Иҷрои беҳтаршуда барои дастгоҳҳои силсилаи AMD MI100 ва MI200. Бо нобаёнӣ, меъмории дастгоҳи gfx900 (Vega) фаъол аст.
- Дастгирии Intel AVX86, Intel APX (қисман), Intel AVX-VNNI-INT10.1, Intel SHA16, Intel SM512, Intel SM3, васеъшавии маҷмӯи дастурҳои Intel USER_MSR ба меъмории x4 замима карда шудааст.
Дастгирии иловашуда барои CPU-ҳои AMD дар асоси Zen 5 (-march=znver5), инчунин Intel Clearwater Forest (-march=clearwaterforest), Arrow Lake (-march=arrowlake), Arrow Lake S (-march=arrowlake-s) ) коркардкунандагон, кӯли Лунар (-марш=лунаркӯл) ва кӯли Пантера (-марш=пантерлейк). Опсияи "-m[no-]evex512" барои назорати истифодаи векторҳои 512-бит илова карда шуд (бо нобаёнӣ ҳангоми дастгирии AVX512F фаъол карда шудааст. Дастгирии CPU Intel Xeon Phi бекор карда шудааст.
- Имкониятҳои пуштибонӣ барои платформаҳои LoongArch, AVR ва RISC-V васеъ карда шуданд.
- Имкониятҳои баромади ташхис дар формати SARIF, ки ба JSON асос ёфтааст, васеъ карда шуданд. Формати SARIF метавонад барои ба даст овардани натиҷаҳои таҳлили статикӣ (GCC -fanalyzer), инчунин барои гирифтани маълумоти огоҳӣ ва хатогӣ истифода шавад.
- Дастгирии меъмории ҳадафи ia64 ва nios2, ки дар протсессори Intel Itanium ва Nios II истифода мешаванд, бекор карда шудааст ва дар нашри навбатии GCC хориҷ карда мешавад.
Манбаъ: opennet.ru

