Ukukhutshwa kwe-GCC 10 compiler suite

Emva konyaka wophuhliso ipapashiwe ukukhululwa kweseti yasimahla yabaqulunqi GCC 10.1, ukukhutshwa kokuqala okukhulu kwisebe elitsha le-GCC 10.x. Ngokwenxa ye inkqubo entsha amanani okukhululwa, inguqulo ye-10.0 isetyenziswe kwinkqubo yophuhliso, kwaye kungekudala ngaphambi kokukhululwa kwe-GCC 10.1, isebe le-GCC 11.0 lalisele lixutywe, ngesiseko apho ukukhululwa okubalulekileyo okulandelayo, i-GCC 11.1, kuya kwenziwa.

I-GCC 10.1 iphawuleka ekuphunyezweni kwezinto ezininzi ezintsha kulwimi lwe-C ++ oluphuhliselwe umgangatho we-C ++20, uphuculo olunxulumene nomgangatho wolwimi lwe-C wexesha elizayo (C2x), ukulungiswa okutsha kwi-backends yomqambi kunye nenkxaso yovavanyo. imowudi yohlalutyo olusisigxina. Ukongeza, ngexesha lokulungiselela isebe elitsha, iprojekthi yadlulisela indawo yokugcina ukusuka kwi-SVN ukuya kwi-Git.

Siseko utshintsho:

  • Yongeziwe indlela yovavanyo yohlalutyo oluzinzileyo "-fanalyzer", eyenza uhlalutyo olunzulu lwemithombo yendlela yokusebenza yekhowudi kunye nokuhamba kwedatha kwinkqubo. Imowudi iyakwazi ukubona iingxaki kwinqanaba lokudibanisa, njengeefowuni eziphindwe kabini kwi-free () umsebenzi wendawo enye yememori, inkcazo yefayile evuzayo, ireferensi kwaye idlulise izikhombisi ezingenanto, ukufikelela kwiibhloko zememori ekhululekileyo, usebenzisa amaxabiso angabonakaliyo, njl. Ukusetyenziswa kwendlela entsha yekhowudi ye-OpenSSL sele yenze ukuba ikwazi ukuchonga ukuba sesichengeni okuyingozi.
  • Uphuculo lweenkqubo eziphuculweyo. IPA-SRA (Interprocedural Scalar Shared Replacement) ipasi iphinde yayilwa ukuze isebenze ngexesha lokudibanisa kwaye, phakathi kwezinye izinto, ngoku isusa ixabiso elibaliweyo kwaye libuyise amaxabiso angasetyenziswanga. Kwimo yokuphucula "-O2", ukhetho "-finline-functions" luvuliwe, olubuyiselwa ukuba luthande ikhowudi ehlangeneyo ngaphezulu kokwenziwa komsebenzi. Umsebenzi we-heuristic wokusasazwa komsebenzi ongaphakathi uye wakhawuleziswa. Ukwandiswa kwe-inline kunye ne-function cloning heuristics ngoku inokusebenzisa ulwazi malunga noluhlu lwexabiso ukuqikelela impumelelo yokuguqulwa komntu ngamnye. Kwi-C ++, ukuchaneka kohlobo lwe-alias parsing kuphuculwe.
  • ULungelelwaniso lweXesha lokuNxibelela (LTO). Yongezwe entsha ephunyeziweyo ukulahla ukuseta ngokutsha ulwazi malunga neefayile zento nge LTO bytecode. I-Parallel LTO idlula ngokuzenzekelayo imisela inani lemisebenzi eyenziwa ngaxeshanye kwaye, ukuba ayinakumiselwa, sebenzisa ulwazi malunga nenani le-CPU cores njengento yokuhambelana. Kongezwe ukukwazi ukucinezela i-bytecode ye-LTO usebenzisa i-algorithm ye-zstd.
  • Indlela yokuphucula esekelwe kwiziphumo zeprofayili yekhowudi (i-PGO-I-Profile-guided optimization) iphuculwe, eyenza ikhowudi ephezulu kakhulu esekelwe kuhlalutyo lweempawu zokwenza ikhowudi. Ukuphuculwa kokugcinwa kweprofayili ngexesha lokuhlanganiswa kunye nokwahlulwa kwekhowudi eshushu / ebandayo. Ngokusebenzisa ukhetho "-fprofile-amaxabisoΒ»ngoku inokubeka iliso ukuya kuthi ga kwiprofayile ye-4, umzekelo kwiifowuni ezingathanga ngqo kunye nokubonelela ngolwazi oluchanekileyo.
  • Ingcaciso yenkqubo enxuseneyo iphunyeziwe kwiilwimi zeC, C++ neFortran I-OpenACC 2.6, echaza izixhobo zokukhuphela imisebenzi kwii-GPU kunye neeprosesa ezikhethekileyo ezifana ne-NVIDIA PTX. Ukuphunyezwa komgangatho sele kuza kugqitywa I-OpenMP 5.0 (Vula i-Multi-Processing), echaza i-API kunye neendlela zokusebenzisa iindlela zeprogram ezifanayo kwiinkqubo ezininzi ezingundoqo kunye ne-hybrid (CPU + GPU / DSP) kunye nememori ekwabelwana ngayo kunye neeyunithi ze-vectorization (SIMD). Iimpawu ezongeziweyo ezifana nemiqathango yokugqibela yabucala, imiyalelo yokuskena kunye nelophu, i-odolo kunye ne-use_device_addr expressions. Kwi-OpenMP kunye ne-OpenACC, inkxaso yongezwe kwimisebenzi yokukhuphela kwisizukulwana sesine (iFiji) kunye nesizukulwana sesihlanu se-AMD Radeon (GCN) GPUs (VEGA 10/VEGA 20).
  • Kwiilwimi zosapho lwe-C, umsebenzi "wokufikelela" wongeziwe ukuchaza ukufikelela komsebenzi kwizinto ezidluliselwe kwireferensi okanye isalathisi, kunye nokudibanisa ezo zinto kunye neengxoxo ezipheleleyo eziqulethe ulwazi malunga nobukhulu bezinto. Ukusebenza ngokubambisana "nokufikelela", uphawu "lohlobo" luphunyezwa ukufumana ukufikelela okungalunganga kwimisebenzi yomsebenzisi, umzekelo, xa ubhala amaxabiso kwindawo engaphandle kwemida yoluhlu. Kwakhona kongezwa uphawu lwe "symver" ukudibanisa iisimboli kwifayile yeELF enamanani athile oguqulelo.
  • Izilumkiso ezitsha zongeziwe:
    • β€œ-Wstring-compare” (enikwe amandla ngo β€œ-Wextra”) - ilumkisa malunga nobukho bamabinzana apho u-zero uthelekiswa nesiphumo sokubiza imisebenzi ye-strcmp kunye ne-strncmp, elingana nokuqhubekayo ngenxa yokuba ubude enye ingxabano inkulu kunobungakanani benkqubo kwimpikiswano yesibini .
    • "-Wzero-length-bounds" (enikwe amandla nge "-Warray-bounds") - ilumkisa malunga nokufikelela kuluhlu lwezinto ezinobude obungu-zero, obunokukhokelela ekubhaleni ngaphezulu enye idatha.
    • "I-Warray-bounds", "-Wformat-overflow", "-Wrestric", "-Wreturn-local-addr" kunye ne "-Wstringop-overflow" izilumkiso ziye zandiswa ukwandisa inani leemeko ezingaphandle kwemida. eziphathwayo.
  • Kuphunyezwe ukukwazi ukucacisa ngokuthe ngqo amagama abanzi kwiziphawuli kusetyenziswa ikhowudi yangoku (UTF-8 ngokungagqibekanga) kunokuba ubhalo lwe-UCN (\uNNNN okanye \UNNNNNNNNN). Umzekelo:

    i-static const Ο€ = 3;
    int get_naΓ―ve_pi() {
    buyisela Ο€;
    }

  • Kulwimi lwe-C, inxalenye yeempawu ezintsha eziphuhliswe ngaphakathi komgangatho we-C2X ziphunyeziwe (yenziwe ngokucacisa -std=c2x kunye -std=gnu2x): inkxaso ye[[]]" isintaksi ivele yokuchaza iimpawu njengaku. C++ (umzekelo, [[gnu ::const]], [[deprecated]], [[fallthrough]] kunye ne [[mhlawumbi_engasetyenziswanga]]. Inkxaso eyongeziweyo ye-"u8" syntax yokuchaza ii-constants ezinobumba be-UTF-8.
    Kongezwe iimakhro ezintsha kwi . Kongezwe "% OB" kunye "% Ob" endaweni yestrftime.

  • Imowudi engagqibekanga ye-C yi "-fno-common", evumela ukufikelela okusebenzayo ngakumbi kwiinguqu zehlabathi kwamanye amaqonga.
  • Kwi-C ++, malunga neenguqu ze-16 kunye nezinto ezintsha eziphunyeziweyo, eziphuhliswe kumgangatho weC ++ 20. Kubandakanya igama elingundoqo elongezelelweyo "constit"
    kunye nenkxaso yokwandiswa kwetemplate iphunyeziwe "iingqiqo". Iingqikelelo zikuvumela ukuba uchaze uluhlu lweemfuno zeparameter yetemplate ethi, ngexesha lokuqokelela, inciphise iseti yeempikiswano ezinokwamkelwa njenge template parameters. Iingcamango zingasetyenziselwa ukuphepha ukungahambelani okunengqiqo phakathi kweempawu zeentlobo zedatha ezisetyenziswe ngaphakathi kwetemplate kunye neempawu zedatha yeeparitha zokufaka.

  • I-G ++ ibonelela ngokubhaqwa kokuziphatha okungachazwanga okubangelwa kukutshintsha izinto rhoqo nge-constexpr. Ukunciphisa ukusetyenziswa kwememori ngumqambi xa ubala i-constexpr. Kongezwe izilumkiso ezitsha "-Wmismatched-tags" kunye "-Wredundant-tags".
  • Iinketho zomgca womyalelo omtsha zicetyiwe:
    • "-fallocation-dce" ukususa izibini ezingeyomfuneko zabasebenzisi "abatsha" kunye "nokucima".
    • "-fprofile-partial-training" ukukhubaza ukulungelelaniswa kwesayizi yekhowudi engenalo uqeqesho.
    • "-fprofile-reproducible ukulawula umgangatho wokuveliswa kweprofayili.
    • "-fprofile-prefix-path" ukuchaza isiseko somthombo wokwakhiwa kwesikhokelo esisetyenziselwa ukuvelisa inkangeleko eyahlukileyo (ye "-fprofile-generate=profile_dir" kunye "-fprofile-use=profile_dir").
  • Kumbhalo olumkisayo malunga nokhetho olukhankanyiweyo, iihyperlink zinikiwe ezikuvumela ukuba uye kuxwebhu lolu khetho. Ukutshintshwa kwe-URL kulawulwa kusetyenziswa "-fdiagnostics-urls" ukhetho.
  • Kongezwe umqhubi weprosesa "__kwakhe_kwakhiwe", enokusetyenziswa ukujonga imisebenzi eyakhelwe-ngaphakathi.
  • Kongezwe umsebenzi omtsha owakhelwe ngaphakathi "__builtin_roundeven" kunye nokuphunyezwa komsebenzi wokujikeleza ochazwe kwi-ISO/IEC TS 18661 inkcazo, efana ne "round", kodwa inxalenye enkulu kuno-0.5 ukuya phezulu (ukuya kwixabiso elikhulu), ngaphantsi kwe-0.5 - phantsi (ukuya kwi-zero), kwaye ilingana no-0.5 - ukuqala kwi-parity yedijithi engaphambili.
  • Kwi-architecture ye-AArch64, inkxaso yokwandiswa kwe-SVE2 yongezwa kwaye inkxaso ye-SVE ​​(i-Scalable Vector Extension) iphuculwe, kubandakanywa inkxaso eyongeziweyo yemisebenzi eyakhelweyo ye-SVE ​​ACLE kunye neentlobo, kunye nokusetyenziswa kwe-vectorization. Inkxaso ye-LSE (Izandiso zeNkqubo enkulu) kunye ne-TME (i-Transactional Memory Extension) iye yandiswa. Kongezwe imiyalelo emitsha ecetywayo kwi-Armv8.5-A kunye ne-Armv8.6-A, kuquka imiyalelo yokwenziwa kwamanani ngokungakhethiyo, ukusondeza, ukubopha ithegi yememori,
    bfloat16 kunye nophindaphindo lwematrix. Inkxaso yeprosesa eyongeziweyo
    IArm Cortex-A77,
    IArm Cortex-A76AE,
    IArm Cortex-A65,
    IArm Cortex-A65AE,
    IArm Cortex-A34 kunye
    Marvell ThunderX3.

  • Inkxaso eyongeziweyo ye-ABI FDPIC (izalathi ze-32-bit function) ye-ARM64. Iyilwe ngokutsha kwaye iphuculwe ukusetyenzwa kwe-64-bit integer. Inkxaso ye-CPU eyongeziweyo
    IArm Cortex-A77,
    IArm Cortex-A76AE kunye
    IArm Cortex-M35P. Inkxaso eyandisiweyo ye-ACLE imiyalelo yokucwangcisa idatha, kubandakanywa i-32-bit SIMD, ukuphindaphinda kwe-16-bit, i-latch arithmetic, kunye nezinye i-algorithms ye-DSP. Inkxaso yovavanyo eyongeziweyo ye-ACLE CDE (i-Custom Datapath Extension) imiyalelo.

  • Ukuphuculwa ngokuphawulekayo kokuveliswa kwekhowudi kunye ne-vectorization kwi-backend ye-AMD GPUs esekwe kwi-GCN microarchitecture.
  • Inkxaso eyongeziweyo yezixhobo ezifana ne-XMEGA kuyilo lwe-AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608mega1609 ATmega3208, ATmega3209, ATmega4808 4809 kunye ne-ATmegaXNUMX.

  • Umyalelo omtsha we-Intel ENQCMD weseti yolwandiso lwezakhiwo (-menqcmd) yongezwe kwi-IA-32/x86-64 yezakhiwo. Inkxaso eyongeziweyo ye-Intel Cooperlake (-march=cooperlake, iquka i-AVX512BF16 ISA extension) kunye ne-Tigerlake (-march=tigerlake, iquka i-MOVDIRI, MOVDIR64B kunye ne-AVX512VP2INTERSECT ISA extensions) CPUs.
  • Ukuphunyezwa kwe-HSAIL (i-Heterogeneous System Architecture Intermediate Language) kwiinkqubo zekhompuyutha ezingafaniyo ezisekelwe kuyilo lwe-HSA iye yarhoxiswa kwaye iya kususwa ekukhutshweni kwexesha elizayo.

umthombo: opennet.ru

Yongeza izimvo