GCC 13 kompiliatoriaus rinkinio išleidimas

Po metų kūrimo buvo išleistas nemokamas GCC 13.1 kompiliatoriaus rinkinys, pirmasis reikšmingas leidimas naujojoje GCC 13.x šakoje. Pagal naują leidimų numeravimo schemą kūrimo metu buvo naudojama 13.0 versija, o prieš pat GCC 13.1 išleidimą jau buvo išsišakojusi GCC 14.0 atšaka, iš kurios bus suformuota kita reikšminga GCC 14.1 versija.

Pagrindiniai pakeitimai:

  • Persijos įlankos bendradarbiavimo tarybos nariai priėmė sąsają, skirtą programoms kurti Modula-2 programavimo kalba. Jis palaiko kūrimo kodą, kuris atitinka PIM2, PIM3 ir PIM4 dialektus, taip pat priimtą ISO standartą šiai kalbai.
  • Į GCC šaltinio medį buvo įtraukta sąsaja su Rust kalbos kompiliatoriaus įdiegimu, parengtu gccrs projekto (GCC Rust). Dabartiniame rodinyje forntend yra pažymėta kaip eksperimentinė ir pagal numatytuosius nustatymus išjungta. Kai sąsaja bus paruošta (tikimasi kitoje laidoje), standartinis GCC įrankių rinkinys gali būti naudojamas Rust programoms kompiliuoti, nereikia diegti rustc kompiliatoriaus, sukurto naudojant LLVM plėtrą.
  • „Link-in-Step Optimization“ (LTO) prideda GNU make projekto palaikomo užduočių serverio (darbo serverio) palaikymą, kad būtų optimizuotas lygiagrečios versijos vykdymas keliose gijose. GCC darbo serveris naudojamas darbui lygiagretinti LTO optimizavimo metu visos programos kontekste (WPA, Whole-program Analysis). Pavadinti vamzdžiai (--jobserver-style=fifo) pagal numatytuosius nustatymus naudojami sąveikai su užduočių serveriu.
  • Statinis analizatorius (-fanalyzer) siūlo 20 naujų diagnostinių patikrinimų, įskaitant "-Wanalyzer-out-of-ribos", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-for-check", "-Wanalyzer- infinite". -recursion" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • Įdiegta galimybė išvesti diagnostiką SARIF formatu, pagrįstu JSON. Naujasis formatas gali būti naudojamas gauti statinės analizės rezultatus (GCC -fanalyzer), taip pat gauti informaciją apie įspėjimus ir klaidas. Įgalinimas atliekamas naudojant parinktį „-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file“, kur parinktys su „json“ sukuria GCC specifinį JSON formato variantą. .
  • Įdiegtos kai kurios C23 C standarte apibrėžtos funkcijos, pvz., nullptr konstanta nulinėms rodyklėms apibrėžti, palengvinanti sąrašų su kintamu skaičiumi argumentų naudojimą (variadic), praplečianti enums galimybes, noreturn atributą, leidžiantį naudoti constexpr ir auto apibrėžiant objektus, typeof ir typeof_unqual, nauji raktiniai žodžiai alignas, alignof, bool, false, static_assert, thread_local ir true, leidžia tuščius skliaustus inicijavimo metu.
  • Įdiegtos kai kurios C++23 standarte apibrėžtos funkcijos, pvz., galimybė dėti žymes sudėtinių reiškinių pabaigoje, suderinamumas su char8_t tipu, #warning išankstinio procesoriaus direktyva, atskirta (\u{}, \o {}, \x{}) ir pavadintos ('\N{LOTINĖS DIDŽIOSIOS RAIDĖS A}') pabėgimo sekos, statinis operatorius(), statinis operatorius[], lygybės operatorius išraiškose, išskyrus kai kuriuos constexpr naudojimo apribojimus , UTF-8 palaikymas šaltinio tekstuose.
  • Patobulintas eksperimentinis C++20 ir C++23 standartų palaikymas programoje libstdc++, pvz., pridėtas antraštės failų palaikymas ir std::format, išplėstinės antraštės failo galimybės , pridėta papildomų slankiojo kablelio tipų, įdiegti antraštės failai Ir .
  • Pridėta naujų funkcijų atributų dokumente, kad failo deskriptorius perduodamas sveikajame kintamajame: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))" ir "__attribute__((fd_arg_write(N)) )) ". Nurodytus atributus galima naudoti statiniame analizatoriuje (-fanalyzer), kad būtų galima aptikti neteisingą darbą su failų deskriptoriais.
  • Pridėtas naujas atributas "__attribute__((sume(EXPR)))", su kuriuo galite pasakyti kompiliatoriui, kad išraiška yra teisinga ir kompiliatorius gali naudoti šį faktą neįvertinęs išraiškos.
  • Pridėta vėliavėlė „-fstrict-flex-arrays=[level]“, kad būtų galima pasirinkti elgseną apdorojant lankstų masyvo elementą struktūrose (Flexible Array Members, neapibrėžto dydžio masyvas struktūros pabaigoje, pvz., „int b[] “).
  • Pridėta žyma „-Wenum-int-mismatch“, kad būtų pateikti įspėjimai, jei yra nesutapimas tarp išvardyto tipo ir sveikojo skaičiaus tipo.
  • „Fortran“ priekinė dalis visiškai palaiko užbaigimą.
  • „Go“ kalbos priekinėje dalyje buvo pridėtas bendrųjų funkcijų ir tipų (bendrųjų) palaikymas, užtikrintas suderinamumas su „Go 1.18“ kalbos paketais.
  • AArch64 backend palaiko CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) ir Arm Neoverse V2 (neoverse -v2) . Argumentų „armv9.1-a“, „armv9.2-a“ ir „armv9.3-a“ palaikymas buvo pridėtas prie parinkties „-march=". Pridėtas FEAT_LRCPC, FEAT_CSSC ir FEAT_LSE2 procesorių plėtinių palaikymas.
  • STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) ir Arm Cortex-M85 (cortex-m85) procesorių palaikymas buvo įtrauktas į ARM architektūros pagrindinę dalį.
  • „Intel Raptor Lake“, „Meteor Lake“, „Sierra Forest“, „Grand Ridge“, „Emerald Rapids“, „Granite Rapids“ ir AMD Zen 86 (znver4) procesorių palaikymas buvo įtrauktas į x4 užpakalinę dalį. Įdiegti „Intel“ procesoriuose pasiūlyti instrukcijų rinkinio architektūros plėtiniai AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT ir AMX-COMPLEX. C ir C++ sistemose su SSE2 pateikiamas __bf16 tipas.
  • AMD Radeon GPU (GCN) kodo generavimo užpakalinė programa įgyvendina galimybę naudoti AMD Instinct MI200 greitintuvus, kad pagerintų OpenMP / OpenACC našumą. Patobulintas vektorizavimas naudojant SIMD instrukcijas.
  • Žymiai išplėstos „LoongArch“ platformos backend galimybės.
  • Pridėtas CPU T-Head XuanTie C906 (thead-c906) palaikymas RISC-V foninėje sistemoje. Įdiegtas vektorinių tvarkyklių, apibrėžtų RISC-V Vector Extension Intrinsic 0.11 specifikacijoje, palaikymas. Pridėtas 30 RISC-V specifikacijų plėtinių palaikymas.
  • Generuojant bendrinamus objektus naudojant „-shared“ parinktį, paleisties kodas nebepridedamas pridėjus slankiojo kablelio aplinką, jei įgalinti „-Ofast“, „-ffast-math“ arba „-funsafe-math-optimizations“ optimizavimai. .
  • DWARF derinimo formato palaikymas įdiegtas beveik visose konfigūracijose.
  • Pridėta parinktis „-gz=zstd“, skirta suspausti derinimo informaciją naudojant Zstandard algoritmą. Pašalintas nebenaudojamo derinimo informacijos glaudinimo režimo „-gz=zlib-gnu“ palaikymas.
  • Pridėtas pradinis OpenMP 5.2 (Open Multi-Processing) palaikymas ir tęsiamas OpenMP 5.0 ir 5.1 standartų diegimas, apibrėžiantis API ir metodus, kaip taikyti lygiagretus programavimo metodus kelių branduolių ir hibridinėse (CPU + GPU / DSP) sistemose su bendrosios atminties ir vektorizacijos vienetai (SIMD).
  • Pasenusio derinimo informacijos saugojimo formato „STABS“ (įgalinamo -gstabs ir -gxcoff), sukurto devintajame dešimtmetyje ir naudoto dbx derinimo priemonėje, palaikymas buvo nutrauktas.
  • Nebenaudojamas Solaris 11.3 palaikymas (kodas, palaikantis šią platformą, bus pašalintas būsimame leidime).

Šaltinis: opennet.ru

Добавить комментарий