ืฉื—ืจื•ืจ ื—ื‘ื™ืœืช ื”ืžื”ื“ืจ GCC 13

ืœืื—ืจ ืฉื ื” ืฉืœ ืคื™ืชื•ื—, ืฉื•ื—ืจืจื” ื”ืฉื—ืจื•ืจ ืฉืœ ื—ื‘ื™ืœืช ื”ืžื”ื“ืจื™ื ื”ื—ื™ื ืžื™ืช ืฉืœ GCC 13.1, ื”ืžื”ื“ื•ืจื” ื”ืžืฉืžืขื•ืชื™ืช ื”ืจืืฉื•ื ื” ื‘ืขื ืฃ ื”ื—ื“ืฉ ืฉืœ GCC 13.x. ืชื—ืช ืกื›ื™ืžืช ืžืกืคื•ืจ ื”ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื”, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื’ืจืกื” 13.0 ื‘ืžื”ืœืš ื”ืคื™ืชื•ื—, ื•ื–ืžืŸ ืงืฆืจ ืœืคื ื™ ื™ืฆื™ืืชื• ืฉืœ GCC 13.1, ื”ืกื ื™ืฃ ืฉืœ GCC 14.0 ื›ื‘ืจ ื”ื™ื” ืžืชืคืฆืœ, ืžืžื ื• ืชื™ื•ื•ืฆืจ ื”ืžื”ื“ื•ืจื” ื”ืžืฉืžืขื•ืชื™ืช ื”ื‘ืื” ืฉืœ GCC 14.1.

ืฉื™ื ื•ื™ื™ื ืขื™ืงืจื™ื™ื:

  • ื”-GCC ืื™ืžืฅ ื—ื–ื™ืช ืœื‘ื ื™ื™ืช ืชื•ื›ื ื™ื•ืช ื‘ืฉืคืช ื”ืชื›ื ื•ืช Modula-2. ื”ื•ื ืชื•ืžืš ื‘ืงื•ื“ ื‘ื ื™ื™ื” ื”ืชื•ืื ืืช ื”ื“ื™ืืœืงื˜ื™ื PIM2, PIM3 ื•-PIM4, ื›ืžื• ื’ื ืœืชืงืŸ ISO ื”ืžืงื•ื‘ืœ ืขื‘ื•ืจ ืฉืคื” ื–ื•.
  • ื—ื–ื™ืช ืงืฆื” ืขื ื™ื™ืฉื•ื ืžื”ื“ืจ ืฉืคืช Rust ืฉื”ื•ื›ืŸ ืขืœ ื™ื“ื™ ืคืจื•ื™ืงื˜ gccrs (GCC Rust) ื”ืชื•ื•ืกืฃ ืœืขืฅ ื”ืžืงื•ืจ ืฉืœ GCC. ื‘ืชืฆื•ื’ื” ื”ื ื•ื›ื—ื™ืช, ื”ืคื•ืจื ื˜ ืžืกื•ืžืŸ ื›ื ื™ืกื™ื•ื ื™ ื•ืžื•ืฉื‘ืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ. ื‘ืจื’ืข ืฉื”-frontend ืžื•ื›ืŸ (ืฆืคื•ื™ ื‘ืžื”ื“ื•ืจื” ื”ื‘ืื”), ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืขืจื›ืช ื”ื›ืœื™ื ื”ืกื˜ื ื“ืจื˜ื™ืช ืฉืœ GCC ื›ื“ื™ ืœื”ื“ืจ ืชื•ื›ื ื™ื•ืช Rust ืœืœื ืฆื•ืจืš ื‘ื”ืชืงื ืช ืžื”ื“ืจ rustc ืฉื ื‘ื ื” ื‘ืืžืฆืขื•ืช ืคื™ืชื•ื—ื™ LLVM.
  • Link-in-Step Optimization (LTO) ืžื•ืกื™ืฃ ืชืžื™ื›ื” ื‘ืฉืจืช ืขื‘ื•ื“ื” (ืฉืจืช ืขื‘ื•ื“ื”) ื”ืžืชื•ื—ื–ืง ืขืœ ื™ื“ื™ ืคืจื•ื™ืงื˜ GNU make ื›ื“ื™ ืœื™ื™ืขืœ ืืช ื‘ื™ืฆื•ืข ื”ื‘ื ื™ื™ื” ื‘ืžืงื‘ื™ืœ ืขืœ ืคื ื™ ืฉืจืฉื•ืจื™ื ืžืจื•ื‘ื™ื. ื‘-GCC, ืฉืจืช ื”ืขื‘ื•ื“ื” ืžืฉืžืฉ ืœื”ืงื‘ื™ืœ ืขื‘ื•ื“ื” ื‘ืžื”ืœืš ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ LTO ื‘ื”ืงืฉืจ ืฉืœ ื”ืชื•ื›ื ื™ืช ื›ื•ืœื” (WPA, Whole-program Analysis). ืฆื™ื ื•ืจื•ืช ื‘ืขืœื™ ืฉื (--jobserver-style=fifo) ืžืฉืžืฉื™ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืœืชืงืฉื•ืจืช ืขื ืฉืจืช ื”ืขื‘ื•ื“ื”.
  • ื”ื ืชื— ื”ืกื˜ื˜ื™ (-fanalyzer) ืžืฆื™ืข 20 ื‘ื“ื™ืงื•ืช ืื‘ื—ื•ืŸ ื—ื“ืฉื•ืช, ื›ื•ืœืœ "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer-infinite-recursion" -Wanalyzer-jump-through-analyzerak", "-Wanalyzer-jump-through-analyzerak".
  • ื”ื•ื˜ืžืขื” ื”ื™ื›ื•ืœืช ืœื”ื•ืฆื™ื ืื‘ื—ื•ืŸ ื‘ืคื•ืจืžื˜ SARIF ื”ืžื‘ื•ืกืก ืขืœ JSON. ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืคื•ืจืžื˜ ื”ื—ื“ืฉ ื›ื“ื™ ืœืงื‘ืœ ืชื•ืฆืื•ืช ื ื™ืชื•ื— ืกื˜ื˜ื™ (GCC -fanalyzer), ื›ืžื• ื’ื ื›ื“ื™ ืœืงื‘ืœ ืžื™ื“ืข ืขืœ ืื–ื”ืจื•ืช ื•ืฉื’ื™ืื•ืช. ื”ื”ืคืขืœื” ืžืชื‘ืฆืขืช ืขื ื”ืืคืฉืจื•ืช "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", ื›ืืฉืจ ืืคืฉืจื•ื™ื•ืช ืขื "json" ืžื‘ื™ืื•ืช ืœืคืœื˜ ื‘ื’ืจืกื” ืกืคืฆื™ืคื™ืช ืœ-GCC ืฉืœ ืคื•ืจืžื˜ JSON.
  • ื”ื˜ืžื™ืข ื›ืžื” ืชื›ื•ื ื•ืช ื”ืžื•ื’ื“ืจื•ืช ื‘ืชืงืŸ C23 C, ื›ื’ื•ืŸ ืงื‘ื•ืข nullptr ืœื”ื’ื“ืจืช ืžืฆื‘ื™ืขื™ null, ืžื” ืฉืžืงืœ ืขืœ ื”ืฉื™ืžื•ืฉ ื‘ืจืฉื™ืžื•ืช ืขื ืžืกืคืจ ืžืฉืชื ื” ืฉืœ ืืจื’ื•ืžื ื˜ื™ื (variadic), ื”ืจื—ื‘ืช ื”ื™ื›ื•ืœื•ืช ืฉืœ enums, ืชื›ื•ื ืช noreturn, ืžืืคืฉืจืช ืฉื™ืžื•ืฉ ื‘-constexpr ื•ื‘-auto ื‘ืขืช ื”ื’ื“ืจืช ืื•ื‘ื™ื™ืงื˜ื™ื, ื”ืื•ืคืจื˜ื•ืจ typeof ื•-typeof_align,_as_new assert, thread_local ื•-true, ื”ืžืืคืฉืจ ืกื•ื’ืจื™ื™ื ืจื™ืงื™ื ื‘ืขืช ื™ื™ื–ื•ื ืจืืฉื•ื ื™.
  • ื—ืœืง ืžื”ืชื›ื•ื ื•ืช ื”ืžื•ื’ื“ืจื•ืช ื‘ืชืงืŸ C++23 ืžื™ื•ืฉืžื•ืช, ื›ื’ื•ืŸ ื”ื™ื›ื•ืœืช ืœืžืงื ืชื•ื•ื™ื•ืช ื‘ืกื•ืฃ ื‘ื™ื˜ื•ื™ื™ื ืžื•ืจื›ื‘ื™ื, ืชืื™ืžื•ืช ืœืกื•ื’ char8_t, ื”ื”ื ื—ื™ื” ื”ืงื“ื-ืžืขื‘ื“ #warning, ืžื•ืคืจื“ื•ืช (\u{}, \o{}, \x{}) ื•ืฉืžื•ืช ('\N{LATIN CAPITAL LETTER A}') ืื•ืคืจื˜ื•ืจื™ื ืกื˜ื˜ื™ื™ื ืฉืœ escape(static escape, ืื•ืคืจื˜ื•ืจ escape, static ืื•ืคืจื˜ื•ืจ, ืขืœ ื”ืฉื™ืžื•ืฉ ื‘-con stexpr, ืชืžื™ื›ื” ื‘-UTF-8 ื‘ืงื•ื“ ื”ืžืงื•ืจ.
  • libstdc++ ืฉื™ืคืจื” ืชืžื™ื›ื” ื ื™ืกื™ื•ื ื™ืช ืขื‘ื•ืจ ืชืงื ื™ C++20 ื•-C++23, ื›ื’ื•ืŸ ื”ื•ืกืคืช ืชืžื™ื›ื” ื‘ืงื‘ืฆื™ ื›ื•ืชืจืช ื•- std::format, ื™ื›ื•ืœื•ืช ืงื•ื‘ืฅ ื›ื•ืชืจืช ืžื•ืจื—ื‘ื•ืช , ืกื•ื’ื™ ื ืงื•ื“ื” ืฆืคื” ื ื•ืกืคื™ื ื ื•ืกืคื•, ืงื•ื‘ืฆื™ ื›ื•ืชืจื•ืช ื™ื•ืฉืžื• ื• .
  • ื ื•ืกืคื• ืชื›ื•ื ื•ืช ืคื•ื ืงืฆื™ื” ื—ื“ืฉื•ืช ืœืžืกืžืš ืฉืžืชืืจ ืงื•ื‘ืฅ ืžื•ืขื‘ืจ ื‘ืžืฉืชื ื” ืžืกืคืจ ืฉืœื: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))", ื•-__attribute__((fd_arg_write(N)))). ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืชื›ื•ื ื•ืช ืฉืฆื•ื™ื ื• ื‘ื ืชื— ืกื˜ื˜ื™ (-fanalyzer) ื›ื“ื™ ืœื–ื”ื•ืช ืขื‘ื•ื“ื” ืฉื’ื•ื™ื” ืขื ืžืชืืจื™ ืงื‘ืฆื™ื.
  • ื ื•ืกืคื” ืชื›ื•ื ื” ื—ื“ืฉื” "__attribute__((assume(EXPR)))" ืฉื‘ืืžืฆืขื•ืชื” ื ื™ืชืŸ ืœื•ืžืจ ืœืžื”ื“ืจ ืฉื”ื‘ื™ื˜ื•ื™ ื ื›ื•ืŸ ื•ื”ืžื”ื“ืจ ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืขื•ื‘ื“ื” ื–ื• ืžื‘ืœื™ ืœื”ืขืจื™ืš ืืช ื”ื‘ื™ื˜ื•ื™.
  • ื ื•ืกืฃ ื“ื’ืœ "-fstrict-flex-arrays=[level]" ืœื‘ื—ื™ืจืช ื”ืชื ื”ื’ื•ืช ื‘ืขืช ืขื™ื‘ื•ื“ ืฉืœ ืืœืžื ื˜ ืžืขืจืš ื’ืžื™ืฉ ื‘ืžื‘ื ื™ื (Flexible Array Members, ืžืขืจืš ื‘ื’ื•ื“ืœ ื‘ืœืชื™ ืžื•ื’ื“ืจ ื‘ืกื•ืฃ ื”ืžื‘ื ื”, ืœืžืฉืœ, "int b[]").
  • ื ื•ืกืฃ ื“ื’ืœ "-Wenum-int-mismatch" ื›ื“ื™ ืœื”ื ืคื™ืง ืื–ื”ืจื•ืช ืื ื™ืฉ ื—ื•ืกืจ ื”ืชืืžื” ื‘ื™ืŸ ืกื•ื’ ืžืžื•ืกืคืจ ืœืกื•ื’ ืฉืœ ืžืกืคืจ ืฉืœื.
  • ืœื—ื–ื™ืช Fortran ื™ืฉ ืชืžื™ื›ื” ืžืœืื” ื‘ื’ื™ืžื•ืจ.
  • ืชืžื™ื›ื” ื‘ืคื•ื ืงืฆื™ื•ืช ื•ืกื•ื’ื™ื ื’ื ืจื™ื™ื (ื’ื ืจื™ื™ื) ื ื•ืกืคื” ืœืงืฆื” ื”ืงื“ืžื™ ืฉืœ ืฉืคืช Go, ื•ื”ื•ื‘ื˜ื—ื” ืชืื™ืžื•ืช ืœื—ื‘ื™ืœื•ืช ืœืฉืคืช Go 1.18.
  • ื”ืงืฆื” ื”ืื—ื•ืจื™ AArch64 ืชื•ืžืš ื‘-CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) ื•-Arm Neoverse V2 (neoverse-v2). ืชืžื™ื›ื” ื‘ืืจื’ื•ืžื ื˜ื™ื "armv9.1-a", "armv9.2-a" ื•-"armv9.3-a" ื ื•ืกืคื” ืœืืคืฉืจื•ืช "-march=". ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ ื”ืจื—ื‘ื•ืช ืžืขื‘ื“ FEAT_LRCPC, FEAT_CSSC ื•-FEAT_LSE2.
  • ืชืžื™ื›ื” ื‘ืžืขื‘ื“ื™ STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) ื•-Arm Cortex-M85 (cortex-m85) ื ื•ืกืคื” ืœืงืฆื” ื”ืื—ื•ืจื™ ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ARM.
  • ืชืžื™ื›ื” ื‘ืžืขื‘ื“ื™ Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids ื•-AMD Zen 86 (znver4) ื ื•ืกืคื” ืœ-x4 backend. ื”ืจื—ื‘ื•ืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ืขืจื›ื•ืช ื”ื”ื•ืจืื•ืช AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT ื•-AMX-COMPLEX ื”ืžื•ืฆืขื•ืช ื‘ืžืขื‘ื“ื™ ืื™ื ื˜ืœ ื™ื•ืฉืžื•. ืขื‘ื•ืจ C ื•-C++ ื‘ืžืขืจื›ื•ืช ืขื SSE2, ืžืกื•ืคืง ืกื•ื’ __bf16.
  • ื”ืงืฆื” ื”ืื—ื•ืจื™ ืฉืœ ื™ืฆื™ืจืช ื”ืงื•ื“ ืขื‘ื•ืจ AMD Radeon GPUs (GCN) ืžื™ื™ืฉื ืืช ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืžืื™ืฆื™ AMD Instinct MI200 ื›ื“ื™ ืœืฉืคืจ ืืช ื‘ื™ืฆื•ืขื™ OpenMP/OpenACC. ื•ืงื˜ื•ืจื™ื–ืฆื™ื” ืžืฉื•ืคืจืช ื‘ืืžืฆืขื•ืช ื”ื•ืจืื•ืช SIMD.
  • ื™ื›ื•ืœื•ืช backend ืžื•ืจื—ื‘ื•ืช ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™ ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžืช LoongArch.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ XuanTie C906 ืฉืœ CPU T-Head (thead-c906) ื‘ืงืฆื” ื”ืื—ื•ืจื™ ืฉืœ RISC-V. ื”ื˜ืžืขื” ืชืžื™ื›ื” ื‘ืžื˜ืคืœื™ ื•ืงื˜ื•ืจื™ื ื”ืžื•ื’ื“ืจื™ื ื‘ืžืคืจื˜ RISC-V Vector Extension Intrinsic 0.11. ื ื•ืกืคื” ืชืžื™ื›ื” ืขื‘ื•ืจ 30 ื”ืจื—ื‘ื•ืช ืžืคืจื˜ RISC-V.
  • ื‘ืขืช ื™ืฆื™ืจืช ืื•ื‘ื™ื™ืงื˜ื™ื ืžืฉื•ืชืคื™ื ืขื ื”ืืคืฉืจื•ืช "-shared", ืงื•ื“ ื”ืืชื—ื•ืœ ืื™ื ื• ื ื•ืกืฃ ืœืื—ืจ ื”ื•ืกืคืช ืกื‘ื™ื‘ืช ื ืงื•ื“ื” ืฆืคื” ืื ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช "-Ofast", "-ffast-math" ืื• "-funsafe-math-optimizations" ืžื•ืคืขืœื•ืช.
  • ืชืžื™ื›ื” ื‘ืคื•ืจืžื˜ ื ื™ืคื•ื™ ื‘ืื’ื™ื DWARF ืžื™ื•ืฉืžืช ื›ืžืขื˜ ื‘ื›ืœ ื”ืชืฆื•ืจื•ืช.
  • ื ื•ืกืคื” ืืคืฉืจื•ืช "-gz=zstd" ืœื“ื—ื™ืกืช ืžื™ื“ืข ื‘ืื’ื™ื ื‘ืืžืฆืขื•ืช ื”ืืœื’ื•ืจื™ืชื Zstandard. ื”ื•ืกืจื” ืชืžื™ื›ื” ื‘ืžืฆื‘ ื“ื—ื™ืกืช ืžื™ื“ืข ื ื™ืคื•ื™ ื‘ืื’ื™ื ืฉื”ื•ืฆื ืžืฉื™ืžื•ืฉ "-gz=zlib-gnu".
  • ื ื•ืกืคื” ืชืžื™ื›ื” ืจืืฉื•ื ื™ืช ื‘-OpenMP 5.2 (Open Multi-Processing) ื•ื”ื™ื™ืฉื•ื ืฉืœ ืชืงื ื™ OpenMP 5.0 ื•-5.1 ื ืžืฉืš, ืชื•ืš ื”ื’ื“ืจืช API ื•ืฉื™ื˜ื•ืช ืœื™ื™ืฉื•ื ืฉื™ื˜ื•ืช ืชื›ื ื•ืช ืžืงื‘ื™ืœื•ืช ืขืœ ืžืขืจื›ื•ืช ืžืจื•ื‘ื•ืช ืœื™ื‘ื•ืช ื•ื”ื™ื‘ืจื™ื“ื™ื•ืช (CPU + GPU / DSP) ืขื ื™ื—ื™ื“ื•ืช ื–ื™ื›ืจื•ืŸ ื•ื•ืงื˜ื•ืจื™ื–ืฆื™ื” ืžืฉื•ืชืคื•ืช (SIMD).
  • ืชืžื™ื›ื” ื”ื•ืฆืื” ืžืฉื™ืžื•ืฉ ื‘ืคื•ืจืžื˜ ืื—ืกื•ืŸ ืžื™ื“ืข ื ื™ืคื•ื™ ื‘ืื’ื™ื ืžื“ื•ืจ ืงื•ื“ื ืฉืœ STABS (ืžื•ืคืขืœ ืขื ื”ืืคืฉืจื•ื™ื•ืช -gstabs ื•-gxcoff), ืฉื ื•ืฆืจ ื‘ืฉื ื•ืช ื”ืฉืžื•ื ื™ื ื•ื”ืฉืชืžืฉ ื‘-dbx ืžืืชืจ ื”ื‘ืื’ื™ื.
  • ืชืžื™ื›ื” ืฉื”ื•ืฆืื” ืžืฉื™ืžื•ืฉ ืขื‘ื•ืจ Solaris 11.3 (ืงื•ื“ ืœืชืžื™ื›ื” ื‘ืคืœื˜ืคื•ืจืžื” ื–ื• ื™ื•ืกืจ ื‘ืžื”ื“ื•ืจื” ืขืชื™ื“ื™ืช).

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”