Hoʻokuʻu ʻia ka GCC 13 compiler suite

Ma hope o hoʻokahi makahiki o ka hoʻomohala ʻana, ua hoʻokuʻu ʻia ka hoʻokuʻu ʻia ʻana o ka GCC 13.1 compiler suite manuahi, ka hoʻokuʻu koʻikoʻi mua ma ka lālā GCC 13.x hou. Ma lalo o ke kaʻina helu hoʻokuʻu hou, ua hoʻohana ʻia ka mana 13.0 i ka wā o ka hoʻomohala ʻana, a ma mua koke o ka hoʻokuʻu ʻia ʻana o GCC 13.1, ua wehe mua ʻia ka lālā GCC 14.0, kahi e hoʻokumu ʻia ai ka hoʻokuʻu nui ʻana o GCC 14.1.

Nā hoʻololi nui:

  • Ua ʻae ka GCC i kahi mua no ke kūkulu ʻana i nā papahana ma ka ʻōlelo papahana Modula-2. Kākoʻo ia i ke code kūkulu hale e like me ka PIM2, PIM3, a me PIM4 dialects, a me ka maʻamau ISO i ʻae ʻia no kēlā ʻōlelo.
  • Ua hoʻokomo ʻia kahi ʻaoʻao mua me ka hoʻokō ʻana i ka mea hoʻohui ʻōlelo Rust i hoʻomākaukau ʻia e ka papahana gccrs (GCC Rust) i ka kumu kumu kumu GCC. I ka nānā ʻana i kēia manawa, hōʻailona ʻia ka forntend ma ke ʻano he hoʻokolohua a paʻa ʻole ma ka paʻamau. Ke mākaukau ka frontend (i manaʻo ʻia ma ka hoʻokuʻu aʻe), hiki ke hoʻohana ʻia ka pahu hana GCC maʻamau e hōʻuluʻulu i nā polokalamu Rust me ka ʻole pono e hoʻokomo i ka rustc compiler i kūkulu ʻia me ka hoʻohana ʻana i nā hoʻomohala LLVM.
  • Hoʻohui ka Link-in-Step Optimization (LTO) i ke kākoʻo no kahi kikowaena hana (jobserver) i mālama ʻia e ka GNU make project e hoʻokō i ka hoʻokō ʻana i ka hana like ma waena o nā pae he nui. Ma GCC, hoʻohana ʻia ka mea lawelawe e hoʻohālikelike i ka hana i ka wā o ka loiloi LTO i ka pōʻaiapili o ka papahana holoʻokoʻa (WPA, Whole-program Analysis). Hoʻohana ʻia nā paipu i kapa ʻia (--jobserver-style=fifo) e kamaʻilio me ka mea lawelawe.
  • Hāʻawi ka static analyzer (-fanalyzer) i 20 mau loiloi diagnostic hou, me ka "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer- pau ʻole. -recursion" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • Ua hoʻokō ʻia ka hiki ke hoʻopuka i nā diagnostics ma ka format SARIF e pili ana iā JSON. Hiki ke hoʻohana ʻia ke ʻano hou no ka loaʻa ʻana o nā hopena loiloi static (GCC -fanalyzer), a me ka loaʻa ʻana o ka ʻike e pili ana i nā ʻōlelo aʻo a me nā hewa. Hoʻopau ʻia me ke koho "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", kahi i loaʻa ai nā koho me "json" i ka hoʻopuka ʻana i kahi ʻano kikoʻī GCC o ke ʻano JSON. .
  • Hoʻokō ʻia kekahi mau hiʻohiʻona i wehewehe ʻia i ka maʻamau C23 C, e like me ka nullptr mau no ka wehewehe ʻana i nā kikoʻī null, e maʻalahi ai ka hoʻohana ʻana i nā papa inoa me ka helu ʻokoʻa o nā manaʻo (variadic), e hoʻonui i ka hiki o nā enums, ka ʻano noreturn, e ʻae i ka hoʻohana constexpr a me ka auto i ka wehewehe ʻana i nā mea, ke ʻano a me ka typeof_unqual, nā huaʻōlelo hou alignas, alignof, bool, false, static_assert, thread_local a me ka ʻoiaʻiʻo, e ʻae ana i nā pani hakahaka i ka hoʻomaka.
  • Ua hoʻokō ʻia kekahi mau hiʻohiʻona i wehewehe ʻia ma ka maʻamau C++23, e like me ka hiki ke kau i nā kaha ma ka hope o nā hōʻike hoʻohuihui, kūpono me ke ʻano char8_t, ka #warning preprocessor kuhikuhi, i hoʻokaʻawale ʻia e (\u{}, \o{} , \x{}), a i kapa ʻia ('\N{LATIN CAPITAL LETTER A}') nā kaʻina pakele, static operator(), static operator[], mea hoʻohana kaulike i loko o nā hōʻike, koe naʻe kekahi mau kapu i ka hoʻohana ʻana i constexpr, kākoʻo. no UTF-8 ma nā kikokikona kumu.
  • Ua hoʻomaikaʻi ʻo libstdc++ i ke kākoʻo hoʻokolohua no nā maʻamau C++20 a me C++23, e like me ka hoʻohui ʻana i ke kākoʻo faila poʻo. a me std::format, hiki ke hoʻonui i nā faila poʻomanaʻo , hoʻohui ʻia nā ʻano kiko lana hou, hoʻokō ʻia nā faila poʻomanaʻo A .
  • Hoʻohui ʻia nā hiʻohiʻona hana hou i ka palapala i hāʻawi ʻia kahi wehewehe faila ma kahi ʻano helu helu: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))", a me "__attribute__((fd_arg_write(N)) )) ". Hiki ke hoʻohana ʻia nā hiʻohiʻona i ʻōlelo ʻia i loko o kahi mea ananalyzer static (-fanalyzer) e ʻike i ka hana hewa me nā mea wehewehe faila.
  • Ua hoʻohui ʻia kahi ʻano hou "__attribute__((assume(EXPR)))", kahi e hiki ai iā ʻoe ke haʻi i ka mea hōʻuluʻulu he ʻoiaʻiʻo ka ʻōlelo a hiki i ka mea hōʻuluʻulu ke hoʻohana i kēia ʻoiaʻiʻo me ka ʻole o ka loiloi ʻana i ka ʻōlelo.
  • Hoʻohui ʻia ka hae "-fstrict-flex-arrays=[level]" e koho i ke ʻano i ka wā e hoʻoponopono ai i kahi mea hoʻonohonoho maʻalahi i nā hale (Flexible Array Members, kahi ʻano o ka nui ʻole ma ka hopena o ka hale, no ka laʻana, "int b[] ").
  • Hoʻohui ʻia ka hae "-Wenum-int-mismatch" no ka hoʻopuka ʻana i nā ʻōlelo aʻo inā loaʻa ka like ʻole ma waena o kahi ʻano helu a me kahi ʻano helu helu.
  • Loaʻa i ka Fortran front-end ke kākoʻo piha no ka hoʻopau ʻana.
  • Ua hoʻohui ʻia ke kākoʻo no nā hana maʻamau a me nā ʻano (generics) i ka ʻaoʻao mua no ka ʻōlelo Go, a ua hōʻoia ʻia ka launa pū me nā pūʻolo no ka ʻōlelo Go 1.18.
  • Kākoʻo ʻo AArch64 backend iā CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3), a me Arm Neoverse V2 (neoverse -v2) . Ua hoʻohui ʻia ke kākoʻo no ka "armv9.1-a", "armv9.2-a", a me "armv9.3-a" i ka koho "-march=". Kākoʻo hoʻohui ʻia no FEAT_LRCPC, FEAT_CSSC a me FEAT_LSE2 mea hoʻonui.
  • Kākoʻo no STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c), a me Arm Cortex-M85 (cortex-m85) CPUs ua hoʻohui ʻia i ka ARM architecture backend.
  • Ua hoʻohui ʻia ke kākoʻo no Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids, a me AMD Zen 86 (znver4) kaʻina hana i ka x4 backend. Ua hoʻokō ʻia ka AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT, a me AMX-COMPLEX hoʻonohonoho hoʻonohonoho hoʻonohonoho hoʻonui i manaʻo ʻia ma nā kaʻina hana Intel. No C a me C++ ma nā ʻōnaehana me SSE2, hāʻawi ʻia ke ʻano __bf16.
  • Hoʻohana ka code generation backend no AMD Radeon GPUs (GCN) i ka hiki ke hoʻohana i ka AMD Instinct MI200 accelerators e hoʻomaikaʻi i ka hana OpenMP/OpenACC. Hoʻonui i ka vectorization me ka hoʻohana ʻana i nā ʻōlelo aʻoaʻo SIMD.
  • Hoʻonui nui ʻia nā mana backend no ka platform LoongArch.
  • Hoʻohui i ke kākoʻo no ka CPU T-Head's XuanTie C906 (thead-c906) ma ka RISC-V backend. Hoʻokomo ʻia ke kākoʻo no nā mea hoʻohana vector i wehewehe ʻia ma ka RISC-V Vector Extension Intrinsic 0.11 kikoʻī. Hoʻohui i ke kākoʻo no 30 RISC-V hoʻonui kikoʻī.
  • I ka hana ʻana i nā mea i kaʻana like me ka koho "-shared", ʻaʻole hoʻohui hou ʻia ke code hoʻomaka ma hope o ka hoʻohui ʻana i kahi kaiapuni lana ʻana inā hoʻohana ʻia ka "-Ofast", "-ffast-math", a i ʻole "-funsafe-math-optimizations" optimizations. .
  • Hoʻokomo ʻia ke kākoʻo no ka format debugging DWARF ma kahi o nā hoʻonohonoho āpau.
  • Hoʻohui ʻia ke koho "-gz=zstd" e kaomi i ka ʻike debug me ka hoʻohana ʻana i ka algorithm Zstandard. Wehe ʻia ke kākoʻo no ke ʻano hoʻopiʻi ʻike debug i hoʻopau ʻia "-gz=zlib-gnu".
  • Ua hoʻohui ʻia ke kākoʻo mua no OpenMP 5.2 (Open Multi-Processing) a ua hoʻomau ʻia ka hoʻokō ʻana i nā kūlana OpenMP 5.0 a me 5.1, e wehewehe ana i nā API a me nā ala no ka hoʻohana ʻana i nā ʻano papahana like ʻole ma nā ʻōnaehana multi-core a hybrid (CPU + GPU / DSP) me kaʻana like me ka hoʻomanaʻo a me nā ʻāpana vectorization (SIMD).
  • Ua ho'opau 'ia ke kāko'o no ka ho'okumu 'ikepili debug ho'oilina "STABS" (i ho'ohana 'ia e nā koho -gstabs a -gxcoff), i hana 'ia i ka makahiki 1980 a ho'ohana 'ia i ka dbx debugger.
  • Kākoʻo hoʻopau ʻia no Solaris 11.3 (e wehe ʻia ke code e kākoʻo i kēia kahua i kahi hoʻokuʻu e hiki mai ana).

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka