Mwepụta nke GCC 15 compiler suite

Ka otu afọ nke mmepe gachara, ewepụtara GCC compiler suite GCC 15.1 n'efu, ntọhapụ izizi mbụ na ngalaba GCC 15.x ọhụrụ. Dị ka atụmatụ ntọhapụ nọmba , mbipute 15.0 ka e ji mee ihe n'oge mmepe, na obere oge tupu ntọhapụ nke GCC 15.1, a alaka nke GCC 16.0 a na-ama nkedo, nke ga-abụ ihe ndabere nke ọzọ isi ntọhapụ, GCC 16.1.

Isi mgbanwe:

  • Mgbe ị na-achịkọta mmemme C, ọkọlọtọ C23 (Change Summary) yana ndọtị GNU ("-std=gnu23") na-eji ndabara. Na mbụ, a na-eji ọkọlọtọ C17 na ndabara (-std=gnu17). Mgbanwe ahụ nwere ike ịkpata nsogbu mgbe ị na-arụ ọrụ ndị dị ugbu a n'ihi nsonye nke nullptr na-adịgide adịgide, ụdị _BitInt (n), na okwu bool, eziokwu na ụgha, nke nwere ike imegide ihe nchọpụta aha ya bụ akọwapụtara na ngwa.
  • Emejuputala ikike ndị a nke ọkọlọtọ C23:
    • Emebere ntuziaka "#embed" maka itinye akụrụngwa ọnụọgụ abụọ n'ime koodu.
    • Àgwà nke "unsequenced", nke na-egosi na nsonaazụ adịghị adabere n'usoro nke ogbugbu.
    • Àgwà nke "reproducible" na-egosi na ọrụ ahụ na-eweghachite otu nsonaazụ ahụ nyere otu ntinye, ya bụ, adabereghị n'ihe ndị ọzọ.
  • Emejuputala ihe nke ọkọlọtọ C2Y n'ọdịnihu (-std=c2y na -std=gnu2y):
    • Ikike ikwuwapụta mgbanwe na nkwupụta "ọ bụrụ" dị ka "if (int x = get ()) {...}".
    • Nkwado maka aha loops iji zoo aka na ha na koodu. mpụta: maka (int i = 0; i <IK; ++ i) {mgbanwe (i) {ikpe 1: agbaji; // na-awụlikwa elu na CONT1 ikpe 2: gbajie mpụta; // na-amali na CONT2 } // CONT1 } // CONT2
    • Nkwado maka ịkọwapụta ọnụọgụ ọnụọgụ ọnụọgụ n'ụdị okwu, dịka "ikpe 1...10:".
    • Mgbakwunye "i" na "j" iji gosi akụkụ echiche na ọnụọgụ dị mgbagwoju anya.
    • Enwere ike iji ndị ọrụ "++" na "-" nwere ọnụọgụ dị mgbagwoju anya.
    • The "_Generic(ụdị, expr1, expr2, ...)" na-ewu maka ịhọrọ okwu dabere na ụdị operand.
    • Nkwado maka ịnweta usoro byte dị ka ụdị ihe ndị ọzọ, dị ka ihe owuwu na otu.
    • Nkwado maka itinye onye ọrụ "alignof" n'usoro ezughị ezu (ndị ekwuputara na-akọwapụtaghị nha, dị ka "int a[]").
    • Agbakwunyere syntax ọhụrụ maka usoro mgbapụ octal, hexadecimal na agwa ụwa niile. Kama "\u", "\x" na "\nn", a na-atụpụta usoro "\u{}", "\o{}" na "\x{}", nke enwere ike ịkọwa ọnụọgụ ọnụọgụ ọ bụla.
    • Ọrụ arụnyere "__builtin_stdc_rotate_left" na "__builtin_stdc_rotate_right".
    • A na-anabata ịrụ ọrụ ogologo efu na ntụnye NULL (dịka "sizeof(*p)").
  • N'ihu maka asụsụ C++ na-emejuputa atụmatụ ndị a na-emepụta maka ọkọlọtọ C++26 n'ọdịnihu:
    • Onye ọrụ dị iche iche "enyi" ("enyi Ts...").
    • Ikike iji mkpụrụokwu constexpr nwere mgbanwe nke onye ọrụ ọhụrụ (nkwanye ọhụrụ) iji tinye ihe n'ime ebe nchekwa ekenyegoro tupu oge a na-achịkọta.
    • Mwepụta mperi mgbe ị na-ehichapụ ihe nrụtụ aka na ụdị ezughị ezu.
    • Akwụsịla syntax maka ịkọwa paramita variadic na ellipsis na-enweghị rịkọm bu ụzọ (dịka ọmụmaatụ, mgbe ezipụta "void e(int…)" kama "ihe efu e(int, ...)").
    • Na-atụnye ngwungwu paramita na ndebiri.
    • Àgwà maka njide ahaziri ahazi;
    • Syntax'= ihichapụ("ihe kpatara");
    • Ntinye nke "@", "$" na "`" n'ime ntọala agwa.
    • Amachibidoro iji macros kwupụta modul.
    • Ikike iji njide ahaziri ahazi dị ka ọnọdụ ma ọ bụrụ na ịgbanwee nkwupụta.
    • Akwụsịla nkwado maka ntụnyere nhazi kpọmkwem (dịka "int arr1[5]; int arr2 [5]; bool same = arr1 == arr2").
    • Usoro "#embed" maka itinye akụrụngwa ọnụọgụ abụọ.
    • Klas template is_trivial emebiela.
  • Atụmatụ C++23 agbakwunyere:
    • Kwụsị ụfọdụ ojiji nke "mbupu" ntuziaka ma kwe ka ojiji nke "mbupu {}".
    • Nkwado maka ịgbatị ndụ nke ihe nwa oge maka loops na-emegharị n'elu oke.
  • Ọbá akwụkwọ libstdc++ na-emejuputa nkwado nnwale maka modul std na std.compat.
  • Iji mmalite "{0}" maka otu dị na C na koodu C++ anaghịzi ekwe nkwa na ekpochapụrụ ọdịnaya niile, kama ọ na-ebute ihe mbụ nke otu ahụ na-ewepụ. Iji kpochapụ otu niile, jiri okwu "{}" akọwapụtara na nkọwapụta C23, ma ọ bụ kọwaa nhọrọ "-fzero-init-padding-bits=unions" iji weghachi omume ochie.
  • Nkwado etinyere maka njiri mara "musttail" ([gnu :: musttail]] na [[clang:: musttail]]) maka oku ọdụ ejiri n'aka. Àgwà ahụ na-emetụta nlọghachi nkwupụta nke na-eme ka a na-akpọghachi oku na-arụ ọrụ ugbu a, ma hụ na oku dị otú ahụ ga-eji nlọghachi ọdụ, nke na-adịghị ekenye ihe nchekwa ọzọ na nchịkọta (na-ewepụ ihe ize ndụ nke ịgbapụ na ebe nchekwa na ọnụ ọgụgụ dị ukwuu nke oku).
  • Nkwado etinyere maka njirimara flag_enum ([[gnu :: flag_enum]] na [[clang :: flag_enum]]) etinyere na ngụkọ iji gosi na a na-eji ọdịnaya dị na arụ ọrụ bitwise (na-egbochi ịdọ aka ná ntị na -Wswitch mode).
  • Nkwado agbakwunyere maka njirimara "counted_by", nke enwere ike iji kọwapụta mpaghara n'usoro nwere nhazi na-agbanwe agbanwe nke na-ekpebi ọnụọgụ nke ọcha. Enwere ike iji njirimara a kwalite arụmọrụ nke ndenye ego njupụta.
  • Agbakwụnye "nonnull_if_nonzero" àgwà na ọrụ, nke na-akọwapụta na ụfọdụ paramita ọrụ nwere ntụnye nwere ike ịbụ NULL naanị ma ọ bụrụ na ihe ọzọ bụ efu.
  • A na-anabata onye na-agbakọ agbatị agbakwunyere "asm(...)" ọrụ n'èzí. N'ime ntinye ihe nkpọkọta, a na-ahapụ ya ka ọ degharịa ebe nchekwa na mpaghara uhie nke tojupụtara (mpaghara dị n'elu nchịkọta).
  • Mkpokọta koodu C++ na-adị ngwa ngwa maka hashing template emelitere.
  • agbakwunyere nkwalite ọhụrụ. Emejuputa atumatu nkwado maka loops vectorization nwere koodu maka ọpụpụ n'oge (dịka ọmụmaatụ, site na nkwụsịtụ ma ọ bụ oku nloghachi), ọbụlagodi ma ọ bụrụ na loops dị otú ahụ na-emegharị nghazi ma ọ bụ ihe nchekwa ekenye nke ọma nke amaghị oke ya n'oge chịkọta. Mgbe akọwapụtara nhọrọ -O2, a na-eme ka vectorization nke ụfọdụ loops vectorizable dị mfe nke ozi ọnụọgụ na-adịghị maka.
  • Ọnọdụ nkwalite nkwalite agbakwunyere na ọkwa njikọ (LTO, njikarịcha oge njikọ), nke na-ebelata oge nchikota nke ukwuu mgbe ị na-eji LTO n'ọnọdụ ebe obere mgbanwe gbanwere na koodu ahụ (edezie otu ọrụ). Iji mee ka ọnọdụ mmụba, nhọrọ "-flto-incremental" ka atụpụtara.
  • Nchịkọta faịlụ ntinye buru ibu nke ọma. Nleba akara ọnụọgụ kọlụm karịrị 4096. Emelitere izi ezi nke igosi ebe njehie na ịdọ aka ná ntị dị na faịlụ buru ibu.
  • Emelitere visibiliti nke akụkọ mgbe a na-achọpụta nsogbu. Dịka ọmụmaatụ, a na-eme ka ọnọdụ nsogbu ahụ pụta ìhè na akara "⚠️", a gbanwere nhazi nke mmepụta maka njehie na C ++ ndebiri, agbakwunyere ihe ngosi iji mee ka mgbanwe ahụ dị mfe na ọkọlọtọ C23, ma gbanwee agba agba. Agbakwunyere ike iwepụta nchọpụta nchọpụta na usoro Sarif (-fdiagnostics-format=sarif-file).
  • Emejuputala ọba akwụkwọ libgdiagnostics, na-enye gị ohere ijikọ ike GCC metụtara nhazi ozi nyocha n'ime ọrụ gị (dịka ọmụmaatụ, ị nwere ike iji nhota okwu, ịkọwapụta na mgbazi).
  • agbakwunyere ịdọ aka ná ntị "-Wtrailing-whitespace" na "-Wleading-whitespace" iji chọpụta oghere ọcha fọdụrụ na njedebe nke ahịrị yana oghere ọcha na mmalite nke ahịrị.
  • Ịdọ aka ná ntị "-Wheader-guard" agbakwunyere iji kọọ nsogbu na macros nchekwa nkụnye eji isi mee nke na-egbochi itinye faịlụ nkụnye eji isi mee ọzọ.
  • Emelitela ihu ihu maka asụsụ D ka ọ bụrụ ụdị 2.111.0.
  • Agbakwunyela nkwado maka integers na-edebanyeghị aha na Forran frontend.
  • Ngwungwu a gụnyere mkpokọta maka asụsụ COBOL, gcobol, nke na-akwado nyiwe x86-64 na AArch64 na emebereghị ya maka ojiji na sistemụ 32-bit. Onye nchịkọta ahụ na-emejuputa nkọwapụta ISO/IEC 1989:2023 wee gafee ọtụtụ ule NIST CCVS/85.
  • Mmejuputa ụkpụrụ OpenMP 5.0, 5.1, 5.2 na 6.0 (Open Multi-Processing), na-akọwa API na ụzọ maka itinye usoro mmemme yiri ya na sistemu multi-core na ngwakọ (CPU + GPU / DSP) yana ebe nchekwa na-ekekọrịta na ngalaba vectorization (SIMD), gara n'ihu. Nkwado agbakwunyere maka metadirectives na taịlị, mkpọpụta, interop na ihe nrụpụta. Maka ụfọdụ AMD na NVIDIA GPUs, agbakwunyela nkwado maka ebe nchekwa jikọrọ ọnụ (gbanyere site na ịkọwapụta unified_shared_memory na ntuziaka "chọrọ"). agbakwunyere nkwado maka okwu "self_maps".
  • Emelitela azụ azụ maka ihe owuwu AArch64 iji kwado ikpo okwu MinGW (aarch64-w64-mingw32). Emejuputala ihe kariri 20 ARM8 na nkwado maka ndọtị ACLE (Arm C Language Extensions). Emeela ọtụtụ nkwalite na koodu generator. Nkwado CPU agbakwunyere:
    • Apụl A12 (apple-a12)
    • Apụl M1 (apple-m1)
    • Apụl M2 (apple-m2)
    • Apụl M3 (apple-m3)
    • Arm Cortex-A520AE (cortex-a520ae)
    • Arm Cortex-A720AE (cortex-a720ae)
    • Ogwe aka Cortex-A725 (cortex-a725)
    • Arm Cortex-R82AE (cortex-r82ae)
    • Ogwe aka Cortex-X925 (cortex-x925)
    • Arm Neoverse N3 (neoverse-n3)
    • Arm Neoverse V3 (neoverse-v3)
    • Arm Neoverse V3AE (neoverse-v3ae)
    • FUJITSU-MONAKA (fujitsu-monaka)
    • NVIDIA Grace
    • NVIDIA Olympus (Olympus)
    • Qualcomm Oryon-1 (Oryon-1)
  • Emelitela koodu ọgbọ AMD Radeon GPU (GCN) iji kwado ọbá akwụkwọ libstdc++ yana nkwado ọgbọ nnwale agbakwunyere maka gfx9-generic, gfx10-3-generic, na gfx11-generic ngwaọrụ usoro.
  • The x86 backend ugbu a na-akwado ntụziaka Intel setịpụrụ ihe ndọtị ụlọ AVX10.2, AMX-AVX512, AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, MOVRS. Nkwado agbakwunyere maka Intel Diamond Rapids na Xeon Phi CPUs.
  • Ike ịgbasawanye maka nyiwe LoongArch na AVR.
  • Ewepụrụ nkwado maka nios2 target architecture eji na Nios II processors. Nkwado maka ILP32 ABI (-mabi=ilp32) na ọdụ ụgbọ mmiri AArch64 akwụsịla ma a ga-ewepụ ya na ntọhapụ na-esote.

isi: opennet.ru

Zụta nnabata ntụkwasị obi maka saịtị nwere nchekwa DDoS, sava VPS VDS 🔥 Zụta ebe nrụọrụ weebụ a pụrụ ịtụkwasị obi na nchekwa DDoS, sava VPS VDS | ProHoster