Pas një vit zhvillimi, u publikua lëshimi i paketës së lirë të kompilerëve GCC 14.1, lëshimi i parë i rëndësishëm në degën e re GCC 14.x. Sipas skemës së re të numërimit të lëshimeve, versioni 14.0 u përdor gjatë zhvillimit, dhe pak para daljes së GCC 14.1, u ndan një degë e re GCC 15.0, mbi të cilën do të formohet lëshimi i ardhshëm i rëndësishëm GCC 15.1.
Ndryshimet kryesore:
- JanĂ« zgjeruar ndjeshĂ«m mundĂ«sitĂ« pĂ«r analizĂ«n statike tĂ« kodit nĂ« gjuhĂ«n C, tĂ« disponueshme pĂ«rmes opsionit «-fanalyzer» (analiza statike pĂ«r gjuhĂ«n C++ ende nuk Ă«shtĂ« sjellĂ« nĂ« formĂ«n e duhur). ĂshtĂ« forcuar analiza e operacioneve me vargje dhe kontrolli i pranisĂ« sĂ« simbolit zero pĂ«rfundimtar tĂ« vargut. ĂshtĂ« shtuar njĂ« paralajmĂ«rim i ri «-Wanalyzer-infinite-loop» pĂ«r identifikimin e cikleve infinit. ĂshtĂ« shtuar njĂ« sĂ«rĂ« paralajmĂ«rimesh «-Wanalyzer-tainted-*» pĂ«r identifikimin e problemeve me verifikimin e tĂ« dhĂ«nave. JanĂ« zgjeruar mundĂ«sitĂ« e paralajmĂ«rimit «-Wanalyzer-out-of-bounds» pĂ«r identifikimin e mbingarkesave tĂ« tamponit, pĂ«r shembull, Ă«shtĂ« shtuar mundĂ«sia e shfaqjes sĂ« njĂ« diagrami me vizualizimin e gjendjes qĂ« çon nĂ« mbingarkim.

- Ă«shtĂ« shtuar njĂ« opsion i ri ndĂ«rtimi «âenable-host-pie» pĂ«r ndĂ«rtimin e skedareve ekzekutivĂ« tĂ« kompilerit nĂ« modin PIE (Position Independent Executable), si dhe opsioni «âenable-host-bind-now» pĂ«r lidhjen me opsionet «-Wl,-z,now».
- është shtuar një opsion «-fhardened», që përfshin flamuj për forcimin e sigurisë (-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).
- është shtuar opsioni «-fharden-control-flow-redundancy» për të shtuar në fund të funksioneve kodin për identifikimin e disa formave të sjelljes së paqartë, të cilat mund të çojnë në shkeljen e rendit normal të ekzekutimit (control flow) si rezultat i aplikimeve të eksploitiveve që ndryshojnë treguesit e ruajtur në memorie për funksionet dhe kalojnë kontrollin në mes të funksioneve.
- është shtuar një atribut i ri tipash «hardbool», që lejon përcaktimin e vlerave të asociuara me atributet true dhe false, për të vështirësuar disa lloje sulmesh.
- është shtuar një atribut i ri tipash strub për menaxhimin e zerozimit të kadrove të stack me të dhëna funksionesh dhe variablash pas daljes nga funksioni ose pas ndodhisë së një përjashtimi.
- është shtuar opsioni -finline-stringops për të përfshirë inline-shkëputjen e funksioneve memcmp, memcpy, memmove dhe memset, edhe kur kjo nuk është e nevojshme për optimizim.
- është shtuar një atribut i ri funksionesh null_terminated_string_arg(PARAM_IDX) për të shënuar parametrat që duhet të interpretohen si vargje që përfundojnë me simbolin zero.
- Në vektorizues është zbatuar mbështetje për vektorizimin e cikleve që përmbajnë shprehje «break».
- është shtuar mbështetje fillestare për versionin paraprak të specifikimit OpenMP 6.0 (Open Multi-Processing) dhe është vazhduar realizimi i standardeve OpenMP 5.0, 5.1 dhe 5.2, që përcaktojnë API dhe mënyrat e aplikimit të metodave të programimit paralel në sisteme me shumë bërthama dhe hibrid (CPU+GPU/DSP) me memorie të përbashkët dhe blloqe vektorizimi (SIMD).
- është përmirësuar realizimi i specifikimeve të programimit paralel OpenACC 2.7 dhe 3.2, që përcaktojnë mjete për vendosjen (offloading) të operacioneve në GPU dhe procesorë të specializuar, si NVIDIA PTX.
- Për C, C++ dhe Objective-C është realizuar mbështetje për zgjerimet «__has_feature» dhe «__has_extension», që përdoren në Clang.
- JanĂ« zbatuar mundĂ«sitĂ« e pĂ«rcaktuara nĂ« standardin e ardhshĂ«m C23, siç janĂ« tipet «_BitInt (N)» dhe «unsigned _BitInt (N)». Strukturat, bashkĂ«sitĂ« dhe enumerimet Ă«shtĂ« lejuar tĂ« pĂ«r definihen mĂ« shumĂ« se njĂ« herĂ« nĂ« njĂ« zonĂ« tĂ« dukshme me tĂ« njĂ«jtin pĂ«rmbajtje dhe etiketĂ« tĂ« pĂ«rsĂ«ritur. ĂshtĂ« shtuar mbĂ«shtetje pĂ«r skedarin e titujve stdckdint.h. PĂ«rfshirja e mbĂ«shtetjes pĂ«r elementĂ«t C23 Ă«shtĂ« propozuar me flamuj «-std=c23», «-std=gnu23» dhe «-Wc11-c23-compat».
- Për gjuhën C është shtuar shprehja «#pragma GCC novector», që çaktivizon vektorizimin e cikleve të anotuara.
- JanĂ« shtuar mundĂ«si qĂ« lidhen me standardin C++23. ĂshtĂ« shtuar mbĂ«shtetje pĂ«r mekanizmin «Deducing this», qĂ« lejon pĂ«rdorimin nĂ« template tĂ« parametrave me atributin «this» dhe u jep mundĂ«sinĂ« funksioneve tĂ« klasĂ«s tĂ« dinĂ« kategorinĂ« e shprehjes (pĂ«r shembull, nĂ«se Ă«shtĂ« konstant), pĂ«r tĂ« cilĂ«n kjo funksion Ă«shtĂ« thirrur. ĂshtĂ« realizuar njĂ« kĂ«rkesĂ«, sipas sĂ« cilĂ«s tĂ« gjitha funksionet qĂ« thĂ«rrasin funksione me atributin consteval gjithashtu bĂ«hen consteval, pra ekzekutohen gjatĂ« kompilimit. JanĂ« zbutur disa kĂ«rkesa pĂ«r «constexpr».
- JanĂ« shtuar funksione tĂ« lidhura me standardin e ri C++2c (C++26). PĂ«r shembull, Ă«shtĂ« mundĂ«suar pĂ«rdorimi i literalĂ«ve string nĂ« kontekste ku ata nuk pĂ«rdoren pĂ«r inicializimin e njĂ« vargu karakteresh dhe nuk i pĂ«rkasin kodit pĂ«rfundimtar, por vetĂ«m pĂ«rdoren gjatĂ« kompilimit pĂ«r mesazhe diagnostike dhe parapĂ«rpunim. ĂshtĂ« mundĂ«suar pĂ«rdorimi i disa variablave mbushĂ«s me emrin â_â nĂ« njĂ« ambient tĂ« vetĂ«m. Ekzekutimi i konvertimeve implicit tĂ« vlerave tĂ« enumeruara nĂ« llogaritje aritmetike Ă«shtĂ« shpallur i skaduar.
- Në libstdc++ është përmirësuar mbështetje për standardet C++20, C++23 dhe C++26.
- Në kompilerin për gjuhën Fortran është nisur puna për mbështetje të standardit Fortran 2023 (-std=f2023).
- ĂshtĂ« shpallur e skaduar mbĂ«shtetje pĂ«r zgjerimin GCC, qĂ« lejon caktimin e njĂ« elementi fleksibĂ«l tĂ« vargut (varg me madhĂ«si tĂ« pacaktuar, pĂ«r shembull, âint b[]â) jo nĂ« fund tĂ« strukturĂ«s (Flexible Array Members). Vargu me madhĂ«si tĂ« pacaktuar do tĂ« mund tĂ« pĂ«rdoret vetĂ«m nĂ« fund tĂ« strukturĂ«s.
- NĂ« backend pĂ«r arkitekturĂ«n AArch64 Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r CPU Ampere-1B (ampere1b), Arm Cortex-A520 (cortex-a520), Arm Cortex-A720 (cortex-a720), Arm Cortex-X4 (cortex-x4) dhe Microsoft Cobalt-100 (cobalt-100). PĂ«r pĂ«rdorim nĂ« opsionet â-mcpu=â dhe â-mtune=â janĂ« shtuar identifikues tĂ« rinj tĂ« CPU generic, generic-armv8-a dhe generic-armv9-a. ĂshtĂ« realizuar mbĂ«shtetje pĂ«r zgjerimet Arm SME dhe SME2 (Streaming Matrix Extensions). Optimizime specifike pĂ«r arkitekturĂ«n AArch64 janĂ« realizuar.
- NĂ« backend pĂ«r arkitekturĂ«n ARM Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r CPU Cortex-M52 (cortex-m52 nĂ« opsionet â-mcpu=â dhe â-mtune=â).
- Në backend për gjenerimin e kodit për GPU AMD Radeon (GCN) është realizuar mbështetje për GPU AMD Radeon gfx90c (GCN5), gfx1030, gfx1036 (RDNA2), gfx1100 dhe gfx1103 (RDNA3). Performanca për pajisjet AMD të serive MI100 dhe MI200 është përmirësuar. Arkitektura e pajisjeve gfx900 (Vega) është aktivizuar si standard.
- Në backend për arkitekturën x86 është shtuar mbështetje për zgjerimet e arkitekturës së setit të komandave Intel AVX10.1, Intel APX (për pjesërisht), Intel AVX-VNNI-INT16, Intel SHA512, Intel SM3, Intel SM4, Intel USER_MSR.
ĂshtĂ« shtuar mbĂ«shtetje pĂ«r CPU AMD tĂ« bazuar nĂ« bĂ«rthamat Zen 5 (-march=znver5), si dhe pĂ«r procesorĂ« Intel Clearwater Forest (-march=clearwaterforest), Arrow Lake (-march=arrowlake), Arrow Lake S (-march=arrowlake-s), Lunar Lake (-march=lunarlake) dhe Panther Lake (-march=pantherlake). ĂshtĂ« shtuar opsioni â-m[no-]evex512â pĂ«r tĂ« menaxhuar angazhimin e vektorĂ«ve 512-bitĂ« (ndryshe aktivizohet me mbĂ«shtetje AVX512F). MbĂ«shtetje pĂ«r CPU Intel Xeon Phi Ă«shtĂ« shpallur e skaduar.
- Janë zgjeruar mundësitë e backend për platformat LoongArch, AVR dhe RISC-V.
- Janë zgjeruar mundësitë e daljes së diagnostikës në formatin SARIF, i bazuar në JSON. Formati SARIF mund të përdoret për të marrë rezultate të analizës statike (GCC -fanalyzer), si dhe për të marrë informacion për paralajmërimet dhe gabimet.
- Mbështetje për arkitekturat e objektivave ia64 dhe nios2, që përdoren në procesorët Intel Itanium dhe Nios II, është shpallur e skaduar dhe do të hiqet në versionin e ardhshëm të GCC.
Burimi: opennet.ru

