PÀrast aastast arendustööd on vÀlja antud tasuta GCC 14.1 kompilaatorikomplekt, mis on esimene oluline vÀljalase uues GCC 14.x harus. Uue vÀljalaske nummerdamisskeemi jÀrgi kasutati arenduse kÀigus versiooni 14.0 ja veidi enne GCC 14.1 vÀljaandmist oli juba hargnemine GCC 15.0 haru, millest moodustub jÀrgmine oluline GCC 15.1 vÀljalase.
Peamised muudatused:
- Oluliselt on laiendatud C-keele koodi staatilise analĂŒĂŒsi vĂ”imalusi, mis on saadaval valiku "-fanalyzer" kaudu (C++ keele staatilist analĂŒĂŒsi pole veel Ă”igesse vormi viidud). Tugevdatud on stringidega tehtavate toimingute analĂŒĂŒsi ja stringi lĂ”petava nullmĂ€rgi olemasolu kontrollimist. Lisatud uus hoiatus "-Wanalyzer-infinite-loop", et tuvastada lĂ”pmatu arv silmuseid. Lisatud rida "-Wanalyzer-tainted-*" hoiatusi, et tuvastada sisendi valideerimisega seotud probleeme. Hoiatust "-Wanalyzer-out-of-bounds" on tĂ€iustatud, et tuvastada puhvri ĂŒletĂ€itumist, nĂ€iteks on lisatud vĂ”imalus kuvada diagrammi, mis visualiseerib ĂŒletĂ€itumiseni viivat olekut.

- Lisati uus ehitussuvand "âenable-host-pie" kompilaatori kĂ€ivitatavate failide loomiseks reĆŸiimis PIE (Position Independent Executable) ning suvand "âenable-host-bind-now" sidumiseks suvanditega "-Wl" , -z, nĂŒĂŒd."
- Lisatud uus valik "-fhardened", mis sisaldab turvalisuse suurendamiseks lippe (-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -ftrivial-auto-var-init=zero -fPIE -pie -Wl,-z,relro,-z,now -fstack-protector -strong -fstack-clash-protection -fcf-protection=full).
- Lisatud suvand "-fharden-control-flow-redundancy", et lisada koodifunktsioone, et tuvastada teatud mÀÀratlemata kĂ€itumise vorme, mis vĂ”ivad potentsiaalselt viia juhtimisvoogu, mille pĂ”hjustavad Ă€rakasutamine, mis modifitseerivad mĂ€llu salvestatud funktsiooninĂ€itajaid ja viivad juhtimise ĂŒle funktsioonide keskele.
- Lisatud uus "hardbool" tĂŒĂŒpi atribuut, mis vĂ”imaldab alistada tĂ”ese ja vale atribuutidega seotud vÀÀrtused, et muuta teatud tĂŒĂŒpi rĂŒnnakud keerulisemaks.
- Lisati uus strub-tĂŒĂŒpi atribuut, et juhtida funktsiooni ja muutuja andmetega virnaraamide tĂŒhjendamist pĂ€rast funktsiooni vĂ€ljumist vĂ”i erandi tegemist.
- Lisatud suvand -finline-stringops, et vÔimaldada funktsioonide memcmp, memcpy, memmove ja memset laiendamist, isegi kui seda pole optimeerimiseks vaja.
- Lisati uus funktsiooniatribuut null_terminated_string_arg(PARAM_IDX), et mÀrkida parameetreid, mida tuleks kÀsitleda nulllÔpuga stringidena.
- Vektoriseade toetab "break" avaldisi sisaldavate tsĂŒklite vektoriseerimist.
- Lisati esialgne tugi OpenMP 6.0 (Open Multi-Processing) spetsifikatsiooni eelversioonile ja OpenMP 5.0, 5.1 ja 5.2 standardite jĂ€tkuv juurutamine, mis mÀÀratlevad API-d ja meetodid paralleelsete programmeerimismeetodite rakendamiseks mitmetuumalisel ja hĂŒbriidsel (CPU+). GPU/DSP) sĂŒsteemid, millel on jagatud mĂ€lu ja blokeeritud vektoriseerimine (SIMD).
- OpenACC 2.7 ja 3.2 paralleelse programmeerimise spetsifikatsioonide tÀiustatud rakendamine, mis mÀÀratlevad tööriistad GPU-de ja spetsiaalsete protsessorite (nt NVIDIA PTX) toimingute mahalaadimiseks.
- C, C++ ja Objective-C puhul on juurutatud Clangis kasutatavate laienduste â__has_featureâ ja â__has_extensionâ tugi.
- Rakendatakse tulevases C-standardis C23 mÀÀratletud funktsioone, nagu tĂŒĂŒbid â_BitInt (N)â ja âsigned _BitInt (N))â. Struktuure, liite ja loendeid on lubatud mÀÀratleda rohkem kui ĂŒks kord samas ulatuses, mis on nĂ€htavad sama sisu ja korduva sildiga. Lisatud on pĂ€isefaili stdckdint.h tugi. C23 elementide toe lubamiseks soovitatakse kasutada lippe "-std=c23", "-std=gnu23" ja "-Wc11-c23-compat".
- C-keele jaoks on lisatud vĂ€ljend â#pragma GCC novectorâ, mis keelab annoteeritud silmuste vektoriseerimise.
- Lisatud C++23 standardiga seotud funktsioonid. Lisatud on tugi mehhanismile âSelle tuletamineâ, mis vĂ”imaldab mallis kasutada parameetreid atribuudiga âthisâ ja vĂ”imaldab klassifunktsioonist vĂ€lja selgitada avaldise kategooria (nĂ€iteks kas tegemist on konstandiga ), mille jaoks seda funktsiooni kutsutakse. Rakendatud on nĂ”ue, mille kohaselt muutuvad kĂ”ik consteval atribuudiga funktsioone kutsuvad funktsioonid ka consteval, s.t. tĂ€idetakse koostamise ajal. MĂ”ned "constexpri" nĂ”uded on leevendatud.
- Lisatud tulevase C++2c (C++26) standardiga seotud funktsioonid. NĂ€iteks on vĂ”imalik kasutada stringi literaale kontekstis, kus neid ei kasutata mĂ€rgimassiivi initsialiseerimiseks ja need ei satu tekkivasse koodi, vaid neid kasutatakse ainult kompileerimise ajal diagnostikateadete ja eeltöötluse jaoks. Lisati vĂ”imalus kasutada ĂŒhes ulatuses mitut kohatĂ€ite muutujat nimega "_". Loendatud vÀÀrtuste kaudsed teisendused aritmeetilistes arvutustes on aegunud.
- libstdc++ toetab C++20, C++23 ja C++26 standardeid.
- Fortrani kompilaatoris on alustatud tööd Fortran 2023 standardi (-std=f2023) toetamisega.
- GCC laienduse tugi, mis vÔimaldab teil mÀÀrata paindliku massiivielemendi (mÀÀramatu suurusega massiiv, nÀiteks "int b[]"), mis ei ole struktuuri lÔpus (paindlikud massiivi liikmed), on aegunud. MÀÀramatu suurusega massiivi saab siis kasutada ainult struktuuri lÔpus.
- AArch64 arhitektuuri taustaprogramm toetab CPU Ampere-1B (ampere1b), Arm Cortex-A520 (cortex-a520), Arm Cortex-A720 (cortex-a720), Arm Cortex-X4 (cortex-x4) ja Microsoft Cobalt-100 ( koobalt-100). Suvandite "-mcpu=" ja "-mtune=" jaoks on lisatud uued ĂŒldised protsessori identifikaatorid, generic-armv8-a ja generic-armv9-a. Lisatud tugi Arm SME ja SME2 (Streaming Matrix Extensions) jaoks. Rakendatud AArch64 arhitektuurispetsiifilised optimeerimised.
- ARM-arhitektuuri taustaprogrammi on lisatud Cortex-M52 protsessorite tugi (cortex-m52 suvandites â-mcpu=â ja â-mtune=â).
- AMD Radeoni GPU-de (GCN) koodi genereerimise taustaprogramm toetab AMD Radeon gfx90c (GCN5), gfx1030, gfx1036 (RDNA2), gfx1100 ja gfx1103 (RDNA3) GPU-sid. Parem jÔudlus AMD MI100 ja MI200 seeria seadmete jaoks. Vaikimisi on gfx900 (Vega) seadme arhitektuur aktiveeritud.
- Tugi Intel AVX86, Intel APX (osaline), Intel AVX-VNNI-INT10.1, Intel SHA16, Intel SM512, Intel SM3, Intel USER_MSR kÀsukomplekti arhitektuurilaiendustele on lisatud x4 arhitektuuri taustaprogrammi.
Lisatud on tugi Zen 5 tuumal (-march=znver5) pÔhinevatele AMD protsessoritele, samuti Intel Clearwater Forestile (-march=clearwaterforest), Arrow Lake'ile (-march=arrowlake), Arrow Lake S-ile (-march=arrowlake-s) ) protsessorid, Lunar Lake (-march=lunarlake) ja Panther Lake (-march=pantherlake). 512-bitiste vektorite kasutamise juhtimiseks on lisatud valik "-m[no-]evex512" (vaikimisi lubatud AVX512F toetamisel. Intel Xeon Phi protsessori tugi on aegunud.
- Laiendatud on LoongArchi, AVR ja RISC-V platvormide taustaprogrammi vÔimalusi.
- Laiendatud on JSON-il pĂ”hineva SARIF-vormingus diagnostilise vĂ€ljundi vĂ”imalusi. SARIF-vormingut saab kasutada staatilise analĂŒĂŒsi tulemuste saamiseks (GCC -fanalyzer), samuti hoiatuste ja veateabe saamiseks.
- Intel Itaniumi ja Nios II protsessorites kasutatavate ia64 ja nios2 sihtarhitektuuride tugi on aegunud ja see eemaldatakse jÀrgmises GCC vÀljaandes.
Allikas: opennet.ru

