Sakin GCC 13 compiler suite

Bayan shekara guda na haɓakawa, an fitar da GCC 13.1 mai haɗawa kyauta, babban sakin farko a sabon reshe na GCC 13.x. Dangane da sabon tsarin lambar lambar saki, an yi amfani da sigar 13.0 a cikin tsarin ci gaba, kuma jim kaɗan kafin a fito da GCC 13.1, reshen GCC 14.0 ya riga ya rabu, wanda daga ciki za a samar da babban sakin na gaba, GCC 14.1.

Babban canje-canje:

  • GCC ya haɗa da gaba don haɗa shirye-shirye a cikin harshen shirye-shirye na Modula-2. Ana goyan bayan taron lambar da ta yi daidai da yarukan PIM2, PIM3 da PIM4, da ma'aunin ISO da aka yarda da shi don yaren da aka bayar.
  • Ƙarshen gaba tare da aiwatar da mai tara harshe na Rust wanda aka shirya ta aikin gccrs (GCC Rust) an ƙara shi zuwa itacen tushen GCC. A cikin sigar sa na yanzu, ƙarshen gaba ana yiwa alama alama azaman gwaji kuma an kashe shi ta tsohuwa. Da zarar an shirya gaba (wanda ake tsammanin a cikin sakin gaba), ana iya amfani da daidaitattun kayan aikin GCC don haɗa shirye-shirye a cikin yaren Rust ba tare da buƙatar shigar da mai tara rustc ba, wanda aka gina ta amfani da ci gaban LLVM.
  • Injin Haɓaka Lokacin Haɗin (LTO) ya ƙara tallafi ga uwar garken aikin da GNU ke tallafawa don haɓaka aiwatar da ginin layi ɗaya a kan zaren da yawa. A cikin GCC, ana amfani da uwar garken aiki don daidaita aiki yayin haɓaka LTO a cikin mahallin gabaɗayan shirin (WPA, Analysis na Duk-shirin). Don yin hulɗa tare da uwar garken aiki, ana amfani da bututu mai suna ta tsohuwa (-jobserver-style=fifo).
  • Mai nazari a tsaye (-fanalyzer) yana ba da sabbin gwaje-gwajen bincike guda 20, gami da "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer- mara iyaka. -recursion" -Wanalyzer-tsalle-ta-null", "-Wanalyzer-va-list-leak".
  • An aiwatar da ikon fitar da bincike a cikin tsarin SARIF, dangane da JSON. Ana iya amfani da sabon tsarin don samun sakamakon bincike a tsaye (GCC -fanalyzer), da kuma samun faɗakarwa da bayanan kuskure. Ana yin kunnawa tare da zaɓi "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", inda zaɓuka tare da "json" ke haifar da fitarwa a cikin wani takamaiman GCC na tsarin JSON. .
  • Aiwatar da wasu fasalulluka da aka ayyana a cikin ma'aunin C23 C, kamar su nullptr akai-akai don ayyana ma'anar null, sauƙaƙe amfani da lissafin bambance-bambancen, faɗaɗa ƙarfin ƙididdigewa, sifa ta noreturn, ba da damar amfani da constexpr da auto lokacin ayyana abubuwa, nau'in nau'in. da typeof_unqual, sababbin kalmomi masu daidaitawa, daidaitawa, bool, ƙarya, static_assert, thread_local da gaskiya, yana barin bakunan baka da aka ƙayyade yayin farawa.
  • An aiwatar da wasu fasalulluka da aka ayyana a cikin ma'aunin C++23, kamar ikon sanya alamomi a ƙarshen maganganun mahaɗa, dacewa da nau'in char8_t, umarnin mai gabatarwa na #gargadi, ƙayyadaddun (\u{}, \o{}, \x{}) kuma mai suna ('\N{LATIN CAPITAL LETER A}') jerin tserewa, mai aiki a tsaye(), mai aiki a tsaye[], ma'aikacin daidaito a cikin maganganun, kawar da wasu hani kan amfani da constexpr, goyan bayan UTF -8 a cikin rubutun tushe.
  • libstdc++ ya inganta tallafin gwaji don ma'aunin C++20 da C++23, misali, ƙara tallafin fayil na kai da std :: tsari, faɗaɗa damar fayil ɗin taken , ƙarin nau'ikan maki masu iyo, an aiwatar da fayilolin kan kai Kuma .
  • An ƙara sabon sifofin aiki don rubuta cewa an ƙaddamar da mai siffanta fayil a cikin madaidaicin lamba: "__ sifa __((fd_arg(N)))", "__siffar__((fd_arg_read(N)))" da "__ sifa__((fd_arg_write(N))" )" Ana iya amfani da ƙayyadaddun sifofi a cikin na'urar tantancewa (-fanalyzer) don gano aikin da ba daidai ba tare da masu siffanta fayil.
  • An ƙara sabon sifa "__ sifa __((zaton (EXPR)))", wanda tare da shi za ku iya gaya wa mai tarawa cewa furcin gaskiya ne kuma mai tarawa zai iya amfani da wannan gaskiyar ba tare da kimanta magana ba.
  • Ƙara "-fstrict-flex-arrays=[level]" tuta don zaɓar hali lokacin da ake sarrafa abubuwa masu sassauƙa a cikin tsari (Membobin Array masu sassauƙa, tsararru na girman mara iyaka a ƙarshen tsari, misali, "int b[]" ).
  • An ƙara "-Wenum-int-mismatch" tuta don faɗakarwa idan akwai rashin daidaituwa tsakanin nau'in enum da nau'in lamba.
  • Gaban gaba don yaren Fortran yana goyan bayan kammalawa.
  • A ƙarshen gaba don yaren Go, an ƙara tallafi ga ayyuka da nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau`ikan nau`ikan nau`ikan nau`ikan”.
  • Baya ga gine-ginen AArch64 yana goyan bayan CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) da Arm Neoverse V2 (neoverse). -v2). Ƙara goyon baya ga "armv9.1-a", "armv9.2-a" da "armv9.3-a" muhawara zuwa "-march=" zaɓi. Ƙarin tallafi don FEAT_LRCPC, FEAT_CSSC da FEAT_LSE2 masu sarrafawa.
  • Taimako don CPU STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) da Arm Cortex-M85 (cortex-m85) an ƙara su zuwa baya don gine-ginen ARM.
  • Gidan baya don gine-ginen x86 yana ƙara tallafi ga Intel Raptor Lake, Lake Meteor, Saliyo Forest, Grand Ridge, Emerald Rapids, Granite Rapids processors, da AMD Zen 4 (znver4). An aiwatar da ƙa'idodin ƙa'idodin gine-ginen AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT da AMX-COMPLEX, waɗanda aka gabatar a cikin na'urori na Intel. Don harsunan C da C++ akan tsarin SSE2, an samar da nau'in __bf16.
  • Ƙwararrun ƙarni na baya don AMD Radeon GPUs (GCN) ya haɗa da ikon yin amfani da AMD Instinct MI200 accelerators don haɓaka aikin OpenMP/OpenACC. Inganta vectorization ta amfani da umarnin SIMD.
  • An faɗaɗa ƙarfin baya ga dandalin LoongArch sosai.
  • A cikin baya don gine-ginen RISC-V, an ƙara tallafi ga T-Head's XuanTie C906 (thead-c906) CPU. An aiwatar da goyan bayan na'urori masu sarrafa vector da aka ayyana a cikin ƙayyadaddun RISC-V Vector Extension Intrinsic 0.11. Ƙara tallafi don haɓaka 30 zuwa ƙayyadaddun RISC-V.
  • Ƙirƙirar abubuwan da aka raba tare da zaɓin-shared yana dakatar da ƙara lambar farawa bayan ƙara mahalli mai iyo idan an kunna -Ofast, -ffast-math, ko -funsafe-math-math.
  • Ana aiwatar da goyan bayan tsarin gyara kuskuren DWARF a kusan duk saiti.
  • Ƙara wani zaɓi "-gz=zstd" don damfara bayanin gyara kuskure ta amfani da algorithm na Zstandard. An daina goyan bayan gadon "-gz=zlib-gnu" yanayin matsawa na gyara kuskure.
  • Ƙara goyon baya na farko don OpenMP 5.2 (Buɗe Multi-Processing) da ci gaba da aiwatar da ka'idodin OpenMP 5.0 da 5.1, waɗanda ke ayyana APIs da hanyoyin yin amfani da hanyoyin shirye-shirye na layi daya akan tsarin multi-core da matasan (CPU + GPU / DSP) tare da ƙwaƙwalwar ajiya. da kuma na'urorin vectorization (SIMD).
  • Taimako ga gadon “STABS” na gyara tsarin adana bayanai (an kunna tare da zaɓuɓɓukan -gstabs da -gxcoff), waɗanda aka ƙirƙira a cikin 1980s kuma ana amfani da su a cikin debugger dbx, an daina.
  • Taimakon Solaris 11.3 an soke shi (za a cire lambar don tallafawa wannan dandamali a cikin sakin gaba).

source: budenet.ru

Add a comment