Pagpagawas sa GCC 13 compiler suite

Pagkahuman sa usa ka tuig nga pag-uswag, gipagawas ang libre nga GCC 13.1 compiler suite, ang una nga hinungdanon nga pagpagawas sa bag-ong sanga sa GCC 13.x. Ubos sa bag-ong iskema sa pag-numero sa pagpagawas, ang bersyon 13.0 gigamit sa panahon sa pag-uswag, ug sa wala pa ang pagpagawas sa GCC 13.1, ang sanga sa GCC 14.0 na-forked na, diin ang sunod nga hinungdanon nga pagpagawas sa GCC 14.1 maporma.

Panguna nga mga pagbag-o:

  • Gisagop sa GCC ang frontend alang sa pagtukod og mga programa sa Modula-2 programming language. Gisuportahan niini ang kodigo sa pagtukod nga nahiuyon sa PIM2, PIM3, ug PIM4 nga mga diyalekto, ingon man ang gidawat nga sumbanan sa ISO alang sa kana nga lengguwahe.
  • Usa ka frontend nga adunay pagpatuman sa Rust language compiler nga giandam sa gccrs project (GCC Rust) gidugang sa GCC source tree. Sa kasamtangan nga pagtan-aw, ang forntend gimarkahan isip eksperimento ug gibabagan pinaagi sa default. Kung andam na ang frontend (gipaabot sa sunod nga pagpagawas), ang standard nga toolkit sa GCC mahimong magamit sa pag-compile sa mga programa sa Rust nga dili kinahanglan nga i-install ang rustc compiler nga gitukod gamit ang mga pag-uswag sa LLVM.
  • Link-in-Step Optimization (LTO) nagdugang suporta para sa usa ka job server (jobserver) nga gimintinar sa GNU make project aron ma-optimize ang parallel build execution sa daghang mga thread. Sa GCC, ang jobserver gigamit sa pag-parallelize sa trabaho atol sa LTO optimization sa konteksto sa tibuok nga programa (WPA, Whole-program Analysis). Ginganlan nga mga tubo (--jobserver-style=fifo) gigamit nga default aron makigkomunikar sa jobserver.
  • Ang static analyzer (-fanalyzer) nagtanyag ug 20 ka bag-ong diagnostic checks, apil ang "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer- infinite -recursion" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • Ang abilidad sa pag-output sa mga diagnostic sa SARIF nga format base sa JSON gipatuman. Ang bag-ong format mahimong gamiton aron makakuha og static nga mga resulta sa pagtuki (GCC -fanalyzer), ingon man usab sa pagkuha og impormasyon mahitungod sa mga pasidaan ug mga sayop. Ang pagpagana gihimo gamit ang opsyon nga "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", diin ang mga opsyon nga adunay "json" moresulta sa output sa GCC-specific nga variant sa JSON format .
  • Gipatuman ang pipila ka mga bahin nga gihubit sa C23 C standard, sama sa nullptr constant para sa pagtino sa null pointers, nga nagpasayon ​​sa paggamit sa mga listahan nga adunay lain-laing gidaghanon sa mga argumento (variadic), pagpalapad sa mga kapabilidad sa mga enum, ang noreturn attribute, nga nagtugot sa paggamit sa constexpr ug auto sa pag-define sa mga butang, ang tipo ug tipo sa_unqual, bag-ong mga keyword alignas, alignof, bool, false, static_assert, thread_local ug true, nga nagtugot sa walay sulod nga parentesis sa pagsugod.
  • Gipatuman ang pipila ka mga feature nga gipasabot sa C++23 standard, sama sa abilidad sa pagbutang og mga marka sa katapusan sa compound expressions, compatibility sa char8_t type, ang #warning preprocessor nga direktiba, gilimitahan sa (\u{}, \o{} , \x{}), ug gihinganlan ('\N{LATIN CAPITAL LETTER A}') escape sequences, static operator(), static operator[], equality operator sulod sa mga ekspresyon, gawas sa pipila ka mga pagdili sa paggamit sa constexpr, suporta para sa UTF-8 sa tinubdan nga mga teksto.
  • Ang libstdc++ mipauswag sa eksperimento nga suporta alang sa C++20 ug C++23 nga mga sumbanan, sama sa pagdugang sa header file support ug std::format, gipalapdan nga mga kapabilidad sa file sa header , dugang nga mga tipo sa floating point gidugang, gipatuman ang mga file sa header Ug .
  • Gidugang bag-ong function attributes sa dokumento nga ang file descriptor gipasa sa integer variable: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))", ug "__attribute__((fd_arg_write(N)) )) ". Ang espesipikong mga hiyas mahimong gamiton sa usa ka static analyzer (-fanalyzer) aron makit-an ang dili husto nga trabaho sa mga deskriptor sa file.
  • Usa ka bag-ong hiyas nga "__attribute__((assume(EXPR)))" gidugang, diin imong masulti sa compiler nga ang ekspresyon tinuod ug ang compiler makagamit niini nga kamatuoran nga walay pagtimbang-timbang sa ekspresyon.
  • Gidugang ang "-fstrict-flex-arrays=[level]" nga bandila aron mapili ang pamatasan sa pagproseso sa usa ka flexible array nga elemento sa mga istruktura (Flexible Array Members, usa ka han-ay sa dili tino nga gidak-on sa katapusan sa istruktura, pananglitan, "int b [] ").
  • Gidugang ang "-Wenum-int-mismatch" nga bandila aron mag-isyu og mga pasidaan kung adunay dili pagtugma tali sa usa ka enumerated type ug usa ka integer type.
  • Ang Fortran front-end adunay bug-os nga suporta alang sa pagtapos.
  • Gidugang ang suporta para sa mga generic nga function ug type (generics) sa frontend para sa Go language, ug nasiguro ang compatibility sa mga package para sa Go 1.18 language.
  • Ang AArch64 backend nagsuporta sa CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3), ug Arm Neoverse V2 (neoverse -v2) . Ang suporta alang sa "armv9.1-a", "armv9.2-a", ug "armv9.3-a" nga mga argumento gidugang sa opsyon nga "-march=". Gidugang nga suporta alang sa FEAT_LRCPC, FEAT_CSSC ug FEAT_LSE2 nga mga extension sa processor.
  • Ang suporta alang sa STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c), ug Arm Cortex-M85 (cortex-m85) nga mga CPU gidugang sa ARM architecture backend.
  • Ang suporta alang sa Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids, ug AMD Zen 86 (znver4) nga mga processor gidugang sa x4 backend. Ang AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT, ug AMX-COMPLEX nga instruksiyon set nga mga extension sa arkitektura nga gisugyot sa mga processor sa Intel gipatuman. Alang sa C ug C++ sa mga sistema nga adunay SSE2, ang tipo nga __bf16 gihatag.
  • Ang code generation backend para sa AMD Radeon GPUs (GCN) nagpatuman sa abilidad sa paggamit sa AMD Instinct MI200 accelerators aron mapausbaw ang OpenMP/OpenACC performance. Gipauswag ang vectorization gamit ang mga panudlo sa SIMD.
  • Mahinungdanon nga gipalapdan ang mga kapabilidad sa backend alang sa plataporma sa LoongArch.
  • Gidugang nga suporta alang sa CPU T-Head's XuanTie C906 (thead-c906) sa RISC-V backend. Gipatuman nga suporta alang sa mga tigdumala sa vector nga gihubit sa RISC-V Vector Extension Intrinsic 0.11 nga detalye. Gidugang nga suporta alang sa 30 RISC-V nga mga extension sa detalye.
  • Kung maghimo ug gipaambit nga mga butang nga adunay kapilian nga "-shared", ang startup code dili na idugang pagkahuman sa pagdugang usa ka naglutaw nga punto nga palibot kung ang "-Ofast", "-ffast-math", o "-funsafe-math-optimizations" gipalihok .
  • Ang suporta alang sa DWARF debugging format kay gipatuman sa halos tanang configuration.
  • Gidugang ang "-gz=zstd" nga kapilian sa pag-compress sa impormasyon sa debug gamit ang Zstandard algorithm. Gitangtang ang suporta alang sa wala na gigamit nga debug information compression mode "-gz=zlib-gnu".
  • Ang inisyal nga suporta alang sa OpenMP 5.2 (Open Multi-Processing) gidugang ug ang pagpatuman sa OpenMP 5.0 ug 5.1 nga mga sukdanan nagpadayon, nga nagpatin-aw sa mga API ug mga pamaagi sa pagpadapat sa parallel nga mga pamaagi sa programming sa multi-core ug hybrid (CPU + GPU / DSP) nga mga sistema nga adunay shared memory ug vectorization units (SIMD).
  • Suporta para sa legacy debug information storage format "STABS" (enabled by the -gstabs and -gxcoff options), gimugna niadtong 1980s ug gigamit sa dbx debugger, gihunong na.
  • Ang wala gigamit nga suporta alang sa Solaris 11.3 (ang code aron suportahan kini nga plataporma tangtangon sa umaabot nga pagpagawas).

Source: opennet.ru

Idugang sa usa ka comment