13.1๋ ๊ฐ์ ๊ฐ๋ฐ ๋์ ์๋ก์ด GCC 13.x ๋ถ๊ธฐ์ ์ฒซ ๋ฒ์งธ ์ค์ํ ๋ฆด๋ฆฌ์ค์ธ ๋ฌด๋ฃ GCC 13.0 ์ปดํ์ผ๋ฌ ์ ํ๊ตฐ์ ๋ฆด๋ฆฌ์ค๊ฐ ๋ฆด๋ฆฌ์ค๋์์ต๋๋ค. ์๋ก์ด ๋ฆด๋ฆฌ์ค ๋ฒํธ ์ง์ ์ฒด๊ณ์ ๋ฐ๋ผ ๋ฒ์ 13.1์ ๊ฐ๋ฐ ์ค์ ์ฌ์ฉ๋์์ผ๋ฉฐ GCC 14.0 ๋ฆด๋ฆฌ์ค ์ง์ ์ GCC 14.1 ๋ถ๊ธฐ๊ฐ ์ด๋ฏธ ๋ถ๊ธฐ๋์์ผ๋ฉฐ ์ฌ๊ธฐ์์ GCC XNUMX์ ๋ค์ ์ค์ํ ๋ฆด๋ฆฌ์ค๊ฐ ๊ตฌ์ฑ๋ฉ๋๋ค.
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- GCC๋ Modula-2 ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ํ๋ก๊ทธ๋จ์ ๊ตฌ์ถํ๊ธฐ ์ํด ํ๋ฐํธ์๋๋ฅผ ์ฑํํ์ต๋๋ค. PIM2, PIM3 ๋ฐ PIM4 ๋ฐฉ์ธ์ ์ค์ํ๋ ๋น๋ ์ฝ๋์ ํด๋น ์ธ์ด์ ๋ํด ์น์ธ๋ ISO ํ์ค์ ์ง์ํฉ๋๋ค.
- gccrs ํ๋ก์ ํธ(GCC Rust)์์ ์ค๋นํ Rust ์ธ์ด ์ปดํ์ผ๋ฌ ๊ตฌํ์ด ํฌํจ๋ ํ๋ฐํธ์๋๊ฐ GCC ์์ค ํธ๋ฆฌ์ ์ถ๊ฐ๋์์ต๋๋ค. ํ์ฌ ๋ณด๊ธฐ์์ forntend๋ ์คํ์ฉ์ผ๋ก ํ์๋๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค. ํ๋ฐํธ์๋๊ฐ ์ค๋น๋๋ฉด(๋ค์ ๋ฆด๋ฆฌ์ค์์ ์์๋จ) ํ์ค GCC ํดํท์ ์ฌ์ฉํ์ฌ LLVM ๊ฐ๋ฐ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋ rustc ์ปดํ์ผ๋ฌ๋ฅผ ์ค์นํ ํ์ ์์ด Rust ํ๋ก๊ทธ๋จ์ ์ปดํ์ผํ ์ ์์ต๋๋ค.
- LTO(Link-in-Step Optimization)๋ GNU make ํ๋ก์ ํธ์์ ์ ์ง ๊ด๋ฆฌํ๋ ์์ ์๋ฒ(jobserver)์ ๋ํ ์ง์์ ์ถ๊ฐํ์ฌ ์ฌ๋ฌ ์ค๋ ๋์์ ๋ณ๋ ฌ ๋น๋ ์คํ์ ์ต์ ํํฉ๋๋ค. GCC์์ ์์ ์๋ฒ๋ ์ ์ฒด ํ๋ก๊ทธ๋จ(WPA, ์ ์ฒด ํ๋ก๊ทธ๋จ ๋ถ์)์ ์ปจํ ์คํธ์์ LTO ์ต์ ํ ์ค์ ์์ ์ ๋ณ๋ ฌํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ช ๋ช ๋ ํ์ดํ(--jobserver-style=fifo)๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์๋ฒ์ ํต์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ ์ ๋ถ์๊ธฐ(-fanalyzer)๋ "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer-infinite"๋ฅผ ํฌํจํ์ฌ 20๊ฐ์ ์๋ก์ด ์ง๋จ ๊ฒ์ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. -์ฌ๊ท" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
- JSON์ ๊ธฐ๋ฐ์ผ๋ก SARIF ํ์์ผ๋ก ์ง๋จ์ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์์ต๋๋ค. ์๋ก์ด ํ์์ ์ ์ ๋ถ์ ๊ฒฐ๊ณผ(GCC -fanalyzer)๋ฅผ ์ป๊ณ ๊ฒฝ๊ณ ๋ฐ ์ค๋ฅ์ ๋ํ ์ ๋ณด๋ฅผ ์ป๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ฑํ๋ "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file" ์ต์ ์ผ๋ก ์ํ๋ฉ๋๋ค. ์ฌ๊ธฐ์ "json" ์ต์ ์ JSON ํ์์ GCC ํน์ ๋ณํ์ผ๋ก ์ถ๋ ฅ๋ฉ๋๋ค. .
- null ํฌ์ธํฐ๋ฅผ ์ ์ํ๊ธฐ ์ํ nullptr ์์์ ๊ฐ์ C23 C ํ์ค์ ์ ์๋ ์ผ๋ถ ๊ธฐ๋ฅ์ ๊ตฌํํ์ฌ ๋ค์ํ ์์ ์ธ์(๊ฐ๋ณ)๊ฐ ์๋ ๋ชฉ๋ก์ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ณ , ์ด๊ฑฐํ์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ณ , noreturn ์์ฑ์ ์ฌ์ฉํ๋๋ก ํ์ฉํฉ๋๋ค. ๊ฐ์ฒด๋ฅผ ์ ์ํ ๋ constexpr ๋ฐ auto, typeof ๋ฐ typeof_unqual, ์๋ก์ด ํค์๋ alignas, alignof, bool, false, static_assert, thread_local ๋ฐ true๋ ์ด๊ธฐํ ์ ๋น ๊ดํธ๋ฅผ ํ์ฉํฉ๋๋ค.
- C++23 ํ์ค์ ์ ์๋ ์ผ๋ถ ๊ธฐ๋ฅ(์: ๋ณตํฉ ํํ์์ ๋์ ํ์๋ฅผ ๋ฐฐ์นํ๋ ๊ธฐ๋ฅ, char8_t ์ ํ๊ณผ์ ํธํ์ฑ, (\u{}, \o{}์ผ๋ก ๊ตฌ๋ถ๋ #warning ์ ์ฒ๋ฆฌ๊ธฐ ์ง์๋ฌธ)์ ๊ตฌํํ์ต๋๋ค. , \x{}) ๋ฐ ๋ช ๋ช ๋('\N{LATIN CAPITAL LETTER A}') ์ด์ค์ผ์ดํ ์ํ์ค, ์ ์ ์ฐ์ฐ์(), ์ ์ ์ฐ์ฐ์[], ํํ์ ๋ด ๋๋ฑ ์ฐ์ฐ์, constexpr ์ฌ์ฉ์ ๋ํ ์ผ๋ถ ์ ํ ์ ์ธ, ์ง์ ์์ค ํ ์คํธ์ 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]" ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค(์: "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) CPU์ ๋ํ ์ง์์ด ARM ์ํคํ ์ฒ ๋ฐฑ์๋์ ์ถ๊ฐ๋์์ต๋๋ค.
- Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids ๋ฐ AMD Zen 86(znver4) ํ๋ก์ธ์์ ๋ํ ์ง์์ด x4 ๋ฐฑ์๋์ ์ถ๊ฐ๋์์ต๋๋ค. Intel ํ๋ก์ธ์์์ ์ ์๋ AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT ๋ฐ AMX-COMPLEX ๋ช ๋ น์ด ์ธํธ ์ํคํ ์ฒ ํ์ฅ์ด ๊ตฌํ๋์์ต๋๋ค. SSE2๊ฐ ์๋ ์์คํ ์ C ๋ฐ C++์ ๊ฒฝ์ฐ __bf16 ์ ํ์ด ์ ๊ณต๋ฉ๋๋ค.
- AMD Radeon GPU(GCN)์ฉ ์ฝ๋ ์์ฑ ๋ฐฑ์๋๋ AMD Instinct MI200 ๊ฐ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ OpenMP/OpenACC ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค. SIMD ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒกํฐํ๊ฐ ๊ฐ์ ๋์์ต๋๋ค.
- LoongArch ํ๋ซํผ์ ๋ฐฑ์๋ ๊ธฐ๋ฅ์ด ํฌ๊ฒ ํ์ฅ๋์์ต๋๋ค.
- RISC-V ๋ฐฑ์๋์์ CPU T-Head์ XuanTie C906(thead-c906)์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. RISC-V Vector Extension Intrinsic 0.11 ์ฌ์์ ์ ์๋ ๋ฒกํฐ ํธ๋ค๋ฌ์ ๋ํ ์ง์์ ๊ตฌํํ์ต๋๋ค. 30๊ฐ์ RISC-V ์ฌ์ ํ์ฅ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- "-shared" ์ต์ ์ผ๋ก ๊ณต์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ "-Ofast", "-ffast-math" ๋๋ "-funsafe-math-optimizations" ์ต์ ํ๊ฐ ํ์ฑํ๋ ๊ฒฝ์ฐ ๋ถ๋ ์์์ ํ๊ฒฝ์ ์ถ๊ฐํ ํ ์์ ์ฝ๋๊ฐ ๋ ์ด์ ์ถ๊ฐ๋์ง ์์ต๋๋ค. .
- DWARF ๋๋ฒ๊น ํ์์ ๋ํ ์ง์์ ๊ฑฐ์ ๋ชจ๋ ๊ตฌ์ฑ์์ ๊ตฌํ๋ฉ๋๋ค.
- Zstandard ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์์ถํ๋ "-gz=zstd" ์ต์ ์ด ์ถ๊ฐ๋์์ต๋๋ค. ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ๋๋ฒ๊ทธ ์ ๋ณด ์์ถ ๋ชจ๋ "-gz=zlib-gnu"์ ๋ํ ์ง์์ด ์ ๊ฑฐ๋์์ต๋๋ค.
- OpenMP 5.2(Open Multi-Processing)์ ๋ํ ์ด๊ธฐ ์ง์์ด ์ถ๊ฐ๋์๊ณ OpenMP 5.0 ๋ฐ 5.1 ํ์ค์ ๊ตฌํ์ด ๊ณ์๋์ด ๋ฉํฐ ์ฝ์ด ๋ฐ ํ์ด๋ธ๋ฆฌ๋(CPU + GPU/DSP) ์์คํ ์ ๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ ์ ์ฉํ๊ธฐ ์ํ API ๋ฐ ๋ฐฉ๋ฒ์ ์ ์ํ์ต๋๋ค. SIMD(๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋ฒกํฐํ ์ฅ์น).
- 1980๋ ๋์ ์์ฑ๋์ด dbx ๋๋ฒ๊ฑฐ์์ ์ฌ์ฉ๋ ๋ ๊ฑฐ์ ๋๋ฒ๊ทธ ์ ๋ณด ์ ์ฅ ํ์ "STABS"(-gstabs ๋ฐ -gxcoff ์ต์ ์ผ๋ก ํ์ฑํ๋จ)์ ๋ํ ์ง์์ด ์ค๋จ๋์์ต๋๋ค.
- Solaris 11.3์ ๋ํ ์ง์์ด ์ค๋จ๋์์ต๋๋ค(์ด ํ๋ซํผ์ ์ง์ํ๋ ์ฝ๋๋ ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ์์ ์).
์ถ์ฒ : opennet.ru