Kuburitswa kweiyo GCC 12 compiler suite

Mushure megore rekuvandudzwa, iyo yemahara compiler suite GCC 12.1 yakaburitswa, yekutanga yakakosha kuburitswa mubazi idzva reGCC 12.x. Zvinoenderana nehurongwa hutsva hwekuburitsa nhamba, vhezheni 12.0 yakashandiswa mukuvandudza, uye nguva pfupi isati yaburitswa GCC 12.1, bazi reGCC 13.0 rakanga ratove danho, pahwaro hwekuburitswa kukuru kunotevera, GCC 13.1. umbwa. Musi waChivabvu 23, chirongwa ichi chichapemberera makore makumi matatu nemashanu kubva pakaumbwa chinyorwa chekutanga cheGCC.

Shanduko huru:

  • Yakawedzerwa tsigiro yeCTF (Compact Type Format) debugging fomati, iyo inopa compact chengetedzo yeruzivo nezve C marudzi, kubatana pakati pemabasa uye debugging zviratidzo. Kana yakadzikwa muzvinhu zveELF, iyo fomati inobvumira kushandiswa kweEFL mavara matafura kudzivirira kudzokororwa kwedata.
  • Tsigiro ye "STABS" yekubvisa ruzivo rwekuchengetedza fomati, yakagadzirwa muma1980s, yakabviswa.
  • Basa rinoramba richiwedzera tsigiro yeramangwana C2X uye C++23 zviyero zveC uye C ++ mitauro. Somuenzaniso, tsigiro yeshoko rokuti β€œkana consteval” yawedzerwa; inobvumirwa kushandisa otomatiki munharo dzebasa (β€œf(auto(g()))”); kushandiswa kwezvisizvo zvisizvo zvakasiyana-siyana, goto uye zvinyorwa zvinobvumirwa mumabasa akaziviswa se constexpr; yakawedzera tsigiro yemultidimensional index operators operator[]; mukati kana, nokuda uye kushandura, kukwanisa kwezvivharo zvekutanga zvakawedzerwa ("nokuda (kushandisa T = int; T e: v)").
  • Iyo C ++ Standard Library yakavandudza tsigiro yezvikamu zvekuedza zveC++20 uye C++23 zviyero. Yakawedzera rutsigiro rwe std::move_only_function, , std::basic_string::resize_and_overwrite, , uye std::invoke_r. Inotenderwa kushandisa std::unique_ptr, std::vector, std::basic_string, std::optional uye std::mutsauko mune constexpr mabasa.
  • Iyo Fortran kumberi inopa rutsigiro rwakazara kune iyo TS 29113 yakatarwa, iyo inotsanangura kugona kwekuona kutakurika pakati peFortran neC kodhi.
  • Yakawedzerwa rutsigiro rweiyo __builtin_shufflevector(vec1, vec2, index1, index2, ...) yekuwedzera yakambowedzerwa kuClang, iyo inopa runhare kamwe chete kuita zvakajairika vector shuffle uye shuffle mashandiro.
  • Paunenge uchishandisa "-O2" optimization level, vectorization inogoneswa nekusarudzika (iyo -ftree-vectorize uye -fvect-cost-model=very-cheap modes inogoneswa). Iyo yakanyanya-yakachipa modhi inobvumira vectorization chete kana iyo vector kodhi inogona kutsiva zvachose scalar kodhi iri vectorized.
  • Yakawedzerwa "-ftrivial-auto-var-init" modhi kuti igone kugonesa kutanga kwakajeka kwezvakasiyana-siyana pastack kuronda nyaya uye kuvharira kusakanganiswa kunoenderana nekushandiswa kwezvakasiyana-siyana.
  • Kumitauro yeC neC ++, basa rakavakwa __builtin_dynamic_object_size rakawedzerwa kuti rione ukuru hwechinhu, chinoenderana nebasa rakafanana kubva kuClang.
  • Kune mitauro yeC neC ++, rutsigiro rwe "isipo" hunhu hwawedzerwa (semuenzaniso, unogona kumaka mabasa anoburitsa kukanganisa kana ukaedza kuishandisa).
  • Pamitauro yeC neC ++, rutsigiro rwekugadziridza mirairo "#elifdef" uye "#elifndef" yawedzerwa.
  • Yakawedzerwa "-Wbidi-chars" mureza kuratidza yambiro kana mavara eUTF-8 akashandiswa zvisiri izvo, achichinja marongero anoratidzwa mavara maviri.
  • Yakawedzerwa "-Warray-compare" mureza kuratidza yambiro paunenge uchiedza kuenzanisa maoperand maviri anoreva mitsara.
  • Kuitwa kweiyo OpenMP 5.0 uye 5.1 (Open Multi-Processing) zviyero, izvo zvinotsanangura iyo API uye nzira dzekushandisa dzakafanana nzira dzehurongwa pane akawanda-core uye hybrid (CPU+GPU/DSP) ane yakagovaniswa ndangariro uye vectorization zvikamu (SIMD) , akaenderera mberi.
  • Kuvandudzwa kwekuita kweOpenACC 2.6 parallel programming specification, iyo inotsanangura maturusi ekuburitsa mabasa paGPUs uye mapurosesa akasarudzika akadai seNVIDIA PTX.
  • Tsigiro yemirairo yakawedzerwa Intel AVX86-FP512 uye iyo _Float16 mhando yakawedzerwa kune kodhi chizvarwa backend yeiyo x16 architecture.
  • Kune iyo x86 dhizaini, dziviriro yakawedzerwa kubva pakusagadzikana muma processors anokonzerwa nekufungidzira kuurayiwa kwemirairo mushure mekusaverengeka kumberi kusvetuka mashandiro. Dambudziko rinoitika nekuda kwepre-emptive kugadzirisa kwemirairo nekukasira kuteedzera kuraira kwebazi mundangariro (SLS, Straight Line Speculation). Kugonesa kuchengetedzwa, iyo "-mharden-sls" sarudzo inokurudzirwa.
  • Kuwedzera kucherechedzwa kwekushandiswa kweuninitialized variables kune yekuedza static analyzer. Yakawedzera rutsigiro rwekutanga yekuongorora kodhi yegungano mune inline inoisa. Yakavandudzwa yekutevera yekurangarira. Kodhi yekugadziridza mashandisirwo emazwi yakanyorwa patsva.
  • Yakawedzera makumi matatu mafoni matsva ku libgccjit, raibhurari yakagovaniswa yekumisikidza kodhi jenareta mune mamwe maitiro uye kuishandisa kuJIT kuunganidza bytecode kuita muchina kodhi.
  • Tsigiro yeCO-RE (Gadzira Kamwe - Mhanya Kwese) nzira yakawedzerwa kubackend yekugadzira BPF bytecode, iyo inokutendera kuti utore kodhi ye eBPF zvirongwa zveLinux kernel kamwe chete uye shandisa yakakosha universal loader inogadzirisa iyo yakarodha chirongwa kune yazvino kernel uye BPF Types Format). CO-RE inogadzirisa dambudziko rekutakurika kwemapurogiramu akaunganidzwa eBPF, ayo aimbokwanisa kushandiswa mushanduro yekernel yaakagadzirirwa, sezvo chinzvimbo chezvinhu muzvimiro zvedata chichichinja kubva kushanduro kuenda kune shanduro.
  • Iyo RISC-V backend inowedzera tsigiro kune mitsva yekuraira set architecture edzedzero zba, zbb, zbc uye zbs, pamwe neISA yekuwedzera yevector uye scalar cryptographic mashandiro. Nekusagadzika, rutsigiro rweRISC-V ISA 20191213 runopihwa.The -mtune=thead-c906 mureza wawedzerwa kuitira kuti T-HEAD c906 cores igadziriswe.
  • Tsigiro ye __int128_t/integer(kind=16) mhando yakawedzerwa kune kodhi chizvarwa backend ye AMD GPUs yakavakirwa paGCN microarchitecture. Zvinogoneka kushandisa mapoka ebasa anosvika makumi mana pachikamu checomputing (CU) uye anosvika gumi nematanhatu mirairo yepamberi (wavefront, seti yeshinda dzakaitwa mukuwirirana neSIMD Injini) neboka. Pakutanga, mupendero mumwe chete wekuraira paCU waibvumidzwa.
  • Iyo NVPTX backend, yakagadzirirwa kugadzira kodhi uchishandisa iyo NVIDIA PTX (Parallel Thread Execution) yekuraira set architecture, yakawedzera kugona kushandisa "-march", "-mptx" uye "-march-map" mireza. Yakaitwa tsigiro yePTX ISA sm_53, sm_70, sm_75 uye sm_80. Iyo yekumisikidza dhizaini ndeye sm_30.
  • Mumashure ekumashure kwePowerPC / PowerPC64 / RS6000 processors, maitirwo emabasa akavakirwa-mukati akanyorwa patsva. Mabasa akavakirwa-mukati __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_set_set_builtin
  • Tsigiro yeArm Ampere-64 (-mcpu/-mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) uye Arm Cortex-X710 (cortex- x2). Yakawedzera tsigiro yesarudzo nyowani dzeArMv2 dzekushandisa ne "-march" sarudzo: armv8-a, armv8.7-a, armv8.8-a. Kuwedzerwa kuisirwa kweC mabasa akavakirwa mumubatanidzwa (Intrinsics) yekurodha atomu uye kuchengetedza data mundangariro, zvichibva pakushandiswa kwemirairo yeArM yakawedzerwa (ls9). Yakawedzerwa rutsigiro rwekumhanyisa memcpy, memmove uye memset mabasa uchishandisa mopsoption ARM yekuwedzera.
  • Yakawedzera nzira nyowani yekutarisa "-fsanitize = mumvuri-call-stack" (ShadowCallStack), iyo iripo chete yeArch64 architecture uye inoshanda kana ichivaka kodhi ne "-fixed-r18" sarudzo. Iyo modhi inopa dziviriro kubva pakunyora kero yekudzoka kubva kune basa muchiitiko chekufashukira kwebuffer pane stack. Chinhu chekudzivirira ndechekuchengetedza kero yekudzoka mune imwe "mumvuri" stack mushure mekuendesa kutonga kune basa uye kudzoreredza kero iyi usati wabuda basa.

Source: opennet.ru

Voeg