GCC 13 kompilatoru komplekta izlaišana

Pēc gada izstrādes ir izlaists bezmaksas GCC 13.1 kompilatoru komplekts, kas ir pirmais nozīmīgais laidiens jaunajā GCC 13.x atzarā. Saskaņā ar jauno laidienu numerācijas shēmu izstrādes laikā tika izmantota versija 13.0, un īsi pirms GCC 13.1 izlaišanas jau tika izveidots GCC 14.0 atzars, no kura tiks veidots nākamais nozīmīgais GCC 14.1 laidiens.

Galvenās izmaiņas:

  • GCC pieņēma priekšgalu programmu veidošanai programmēšanas valodā Modula-2. Tā atbalsta būvniecības kodu, kas atbilst PIM2, PIM3 un PIM4 dialektiem, kā arī pieņemtajam ISO standartam šai valodai.
  • GCC avota kokam ir pievienots priekšgals ar Rust valodas kompilatora ieviešanu, ko sagatavojis projekts gccrs (GCC Rust). Pašreizējā skatā forntend ir atzīmēts kā eksperimentāls un pēc noklusējuma atspējots. Kad priekšgals ir gatavs (paredzams nākamajā laidienā), standarta GCC rīku komplektu var izmantot Rust programmu kompilēšanai bez nepieciešamības instalēt rustc kompilatoru, kas izveidots, izmantojot LLVM izstrādes.
  • Saites-in-Step optimizācija (LTO) pievieno atbalstu darba serverim (darba serverim), ko uztur GNU make projekts, lai optimizētu paralēlas būves izpildi vairākos pavedienos. GCC darba serveris tiek izmantots, lai paralēli veiktu darbu LTO optimizācijas laikā visas programmas kontekstā (WPA, Whole-program Analysis). Nosauktās caurules (--jobserver-style=fifo) pēc noklusējuma tiek izmantotas, lai mijiedarbotos ar darba serveri.
  • Statiskais analizators (-fanalyzer) piedāvā 20 jaunas diagnostikas pārbaudes, tostarp "-Wanalyzer-out-off-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer- infinite -recursion" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • Ir ieviesta iespēja izvadīt diagnostiku SARIF formātā, pamatojoties uz JSON. Jaunajā formātā var iegūt statiskās analīzes rezultātus (GCC -fanalyzer), kā arī iegūt informāciju par brīdinājumiem un kļūdām. Iespējošana tiek veikta ar opciju "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", kur opcijas ar "json" nodrošina izvadi GCC specifiskā JSON formāta variantā. .
  • Ieviestas dažas C23 C standartā definētās funkcijas, piemēram, nullptr konstante nulles rādītāju definēšanai, atvieglojot sarakstu lietošanu ar mainīgu argumentu skaitu (variadic), paplašinot enums iespējas, noreturn atribūtu, ļaujot izmantot constexpr un auto, definējot objektus, typeof un typeof_unqual, jauni atslēgvārdi alignas, alignof, bool, false, static_assert, thread_local un true, inicializācijas laikā pieļauj tukšas iekavas.
  • Ieviestas dažas C++23 standartā definētās funkcijas, piemēram, iespēja ievietot atzīmes salikto izteiksmju beigās, saderība ar char8_t tipu, #warning preprocessor direktīva, ko norobežo (\u{}, \o{} , \x{}) un ar nosaukumu ('\N{LATĪŅU LIELAIS BURTS A}') atsoļa secības, statiskais operators(), statiskais operators[], vienādības operators izteiksmēs, izņemot dažus constexpr lietošanas ierobežojumus, atbalsts UTF-8 avota tekstos.
  • Uzlabots eksperimentālais atbalsts C++20 un C++23 standartiem programmā libstdc++, piemēram, pievienojot galvenes failu atbalstu un std::format, paplašinātas galvenes faila iespējas , pievienoti papildu peldošā komata veidi, ieviesti galvenes faili Un .
  • Pievienoti jauni funkciju atribūti dokumentam, ka faila deskriptors ir nodots veselā skaitļa mainīgajā: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))" un "__attribute__((fd_arg_write(N)) )) ". Norādītos atribūtus var izmantot statiskajā analizatorā (-fanalyzer), lai noteiktu nepareizu darbu ar failu deskriptoriem.
  • Ir pievienots jauns atribūts "__attribute__((assume(EXPR)))", ar kuru jūs varat pateikt kompilatoram, ka izteiksme ir patiesa un kompilators var izmantot šo faktu, neizvērtējot izteiksmi.
  • Pievienots karodziņš "-fstrict-flex-arrays=[level]", lai atlasītu uzvedību, apstrādājot elastīgu masīva elementu struktūrās (Flexible Array Members, nenoteikta izmēra masīvs struktūras beigās, piemēram, "int b[] ").
  • Pievienots karodziņš "-Wenum-int-mismatch", lai sniegtu brīdinājumus, ja ir neatbilstība starp uzskaitīto tipu un vesela skaitļa veidu.
  • Fortran priekšgalam ir pilns pabeigšanas atbalsts.
  • Go valodas priekšgalam ir pievienots atbalsts vispārīgām funkcijām un tipiem (generics), un ir nodrošināta saderība ar Go 1.18 valodas pakotnēm.
  • AArch64 aizmugure atbalsta CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) un Arm Neoverse V2 (neoverse -v2). . Opcijai "-march=" ir pievienots atbalsts argumentiem "armv9.1-a", "armv9.2-a" un "armv9.3-a". Pievienots atbalsts procesoru paplašinājumiem FEAT_LRCPC, FEAT_CSSC un FEAT_LSE2.
  • ARM arhitektūras aizmugursistēmai ir pievienots atbalsts STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) un Arm Cortex-M85 (cortex-m85) CPU.
  • X86 aizmugursistēmai ir pievienots Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids un AMD Zen 4 (znver4) procesoru atbalsts. Ir ieviesti Intel procesoros piedāvātie AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT un AMX-COMPLEX instrukciju kopas arhitektūras paplašinājumi. C un C++ sistēmās ar SSE2 tiek nodrošināts tips __bf16.
  • AMD Radeon GPU (GCN) koda ģenerēšanas aizmugursistēma ievieš iespēju izmantot AMD Instinct MI200 paātrinātājus, lai uzlabotu OpenMP/OpenACC veiktspēju. Uzlabota vektorizācija, izmantojot SIMD instrukcijas.
  • Ievērojami paplašinātas LoongArch platformas aizmugursistēmas iespējas.
  • Pievienots atbalsts CPU T-Head XuanTie C906 (thead-c906) RISC-V aizmugursistēmā. Ieviests atbalsts vektoru apdarinātājiem, kas definēti RISC-V Vector Extension Intrinsic 0.11 specifikācijā. Pievienots atbalsts 30 RISC-V specifikāciju paplašinājumiem.
  • Ģenerējot koplietotus objektus ar opciju "-shared", starta kods vairs netiek pievienots pēc peldošā komata vides pievienošanas, ja ir iespējota optimizācija "-Ofast", "-ffast-math" vai "-funsafe-math-optimizations". .
  • Atbalsts DWARF atkļūdošanas formātam ir ieviests gandrīz visās konfigurācijās.
  • Pievienota opcija "-gz=zstd", lai saspiestu atkļūdošanas informāciju, izmantojot Zstandarta algoritmu. Novecojušā atkļūdošanas informācijas saspiešanas režīma "-gz=zlib-gnu" atbalsts ir noņemts.
  • Ir pievienots sākotnējais OpenMP 5.2 (Open Multi-Processing) atbalsts un ir turpināta OpenMP 5.0 un 5.1 standartu ieviešana, definējot API un metodes paralēlās programmēšanas metožu pielietošanai daudzkodolu un hibrīda (CPU + GPU / DSP) sistēmās ar koplietotās atmiņas un vektorizācijas vienības (SIMD).
  • Ir pārtraukts atbalsts mantotajam atkļūdošanas informācijas glabāšanas formātam "STABS" (ko iespējo opcijas -gstabs un -gxcoff), kas izveidots 1980. gados un izmantots dbx atkļūdotājs.
  • Novecojis Solaris 11.3 atbalsts (kods šīs platformas atbalstam tiks noņemts nākamajā laidienā).

Avots: opennet.ru

Pievieno komentāru