LLVM 16.0 ์ปดํŒŒ์ผ๋Ÿฌ ์ œํ’ˆ๊ตฐ ์ถœ์‹œ

16.0๊ฐœ์›”๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— LLVM XNUMX ํ”„๋กœ์ ํŠธ์˜ ์ถœ์‹œ๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ RISC์™€ ๊ฐ™์€ ๊ฐ€์ƒ ๋ช…๋ น์–ด์˜ ์ค‘๊ฐ„ ๋น„ํŠธ์ฝ”๋“œ(๋‚ฎ์€ ์ˆ˜์ค€์˜ ๊ฐ€์ƒ ๋จธ์‹ )๋กœ ์ปดํŒŒ์ผํ•˜๋Š” GCC ํ˜ธํ™˜ ํˆดํ‚ท(์ปดํŒŒ์ผ๋Ÿฌ, ์˜ตํ‹ฐ๋งˆ์ด์ € ๋ฐ ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ)์ž…๋‹ˆ๋‹ค. ๋‹ค๋‹จ๊ณ„ ์ตœ์ ํ™” ์‹œ์Šคํ…œ). ์ƒ์„ฑ๋œ ์˜์‚ฌ์ฝ”๋“œ๋Š” JIT ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ง์ ‘ ๊ธฐ๊ณ„์–ด ๋ช…๋ น์–ด๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Clang 16.0์˜ ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ:

  • ๊ธฐ๋ณธ C++/ObjC++ ํ‘œ์ค€์€ gnu++17(์ด์ „ gnu++14)์ž…๋‹ˆ๋‹ค. ์ด๋Š” GNU ํ™•์žฅ์ด ํฌํ•จ๋œ C++17 ๊ธฐ๋Šฅ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋™์ž‘์„ ๋ฐ˜ํ™˜ํ•˜๋ ค๋ฉด "-std=gnu++14" ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • C++20 ํ‘œ์ค€๊ณผ ๊ด€๋ จ๋œ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์กฐ๊ฑด๋ถ€๋กœ ์‚ฌ์†Œํ•œ ํŠน์ˆ˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜,
    • ๋žŒ๋‹ค ํ•จ์ˆ˜์—์„œ ๊ตฌ์กฐํ™”๋œ ๋ฐ”์ธ๋”ฉ ์บก์ฒ˜,
    • ํ‘œํ˜„์‹ ๋‚ด๋ถ€์˜ ํ•ญ๋“ฑ ์—ฐ์‚ฐ์ž,
    • ์ผ๋ถ€ ์ƒํ™ฉ์—์„œ typename ํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๋žตํ•˜๋Š” ์˜ต์…˜
    • ๊ด„ํ˜ธ ์•ˆ์˜ ์œ ํšจํ•œ ์ง‘๊ณ„ ์ดˆ๊ธฐํ™”("Aggr(val1, val2)").
  • ํ–ฅํ›„ C++2b ํ‘œ์ค€์— ์ •์˜๋œ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ณตํ•ฉ ํ‘œํ˜„์‹ ๋์— ๋ ˆ์ด๋ธ”์„ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ์ •์  ์—ฐ์‚ฐ์ž(),
    • ์ •์  ์—ฐ์‚ฐ์ž[],
    • char8_t ์œ ํ˜•๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.
    • "\N{...}"์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž ๋ฒ”์œ„๊ฐ€ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • constexpr๋กœ ์„ ์–ธ๋œ ํ•จ์ˆ˜์— "์ •์  constexpr"๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ–ฅํ›„ C ํ‘œ์ค€ C2x์— ์ •์˜๋œ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • '-Wunused-label' ๊ฒฝ๊ณ ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด '[[maybe_unused]]' ์†์„ฑ์„ ๋ผ๋ฒจ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋ณตํ•ฉ ํ‘œํ˜„์‹ ๋‚ด์˜ ์–ด๋Š ์œ„์น˜์—๋‚˜ ๋ ˆ์ด๋ธ”์„ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • typeof ๋ฐ typeof_unqual ์—ฐ์‚ฐ์ž๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ชจ๋“  ํฌ์ธํ„ฐ ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๊ณ  ์ •์ˆ˜ ๋ฐ void* ์œ ํ˜•์— ๋ฐ”์ธ๋”ฉ๋˜์ง€ ์•Š์€ NULL์˜ ๋ณ€ํ˜•์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” null ํฌ์ธํ„ฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜• nullptr_t ๋ฐ nullptr ์ƒ์ˆ˜์ž…๋‹ˆ๋‹ค.
    • C2x ๋ชจ๋“œ์—์„œ๋Š” ๊ฐ€๋ณ€ ๊ฐœ์ˆ˜์˜ ์ธ์ˆ˜(variadic)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ va_start ๋งคํฌ๋กœ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • C99, C11 ๋ฐ C17 ์ค€์ˆ˜ ๋ชจ๋“œ์—์„œ ๊ธฐ๋ณธ ์˜ต์…˜ "-Wimplicit-function-declaration" ๋ฐ "-Wimplicit-int"๋Š” ์ด์ œ ๊ฒฝ๊ณ  ๋Œ€์‹  ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ C++ ๋ชจ๋“œ์—์„œ "void *"(์˜ˆ: "void func(void *p) { *p; }")๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ISO C++, GCC, ICC ๋ฐ MSVC์™€ ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ Microsoft ์Šคํƒ€์ผ ์ธ๋ผ์ธ ์–ด์…ˆ๋ธ”๋ฆฌ ๋ธ”๋ก์—์„œ ๋น„ํŠธ ํ•„๋“œ๋ฅผ ๋ช…๋ น์–ด ํ”ผ์—ฐ์‚ฐ์ž(์˜ˆ: "__asm โ€‹โ€‹โ€‹โ€‹{ mov eax, s.bf }")๋กœ ์ง€์ •ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์„œ๋กœ ๋‹ค๋ฅธ ๊ตฌ์กฐ ๋ฐ ๊ณต์šฉ์ฒด์˜ ์กด์žฌ์— ๋Œ€ํ•œ ์ง„๋‹จ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • OpenCL ๋ฐ OpenMP ์ง€์›๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์ด ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. OpenCL ์ปค๋„ ์ธ์ˆ˜์— ์‚ฌ์šฉ๋˜๋Š” C++ ํ…œํ”Œ๋ฆฟ์— ๋Œ€ํ•œ ์ง„๋‹จ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. AMDGPU์— ๋Œ€ํ•œ ํ์ž‰ ๋ธ”๋ก ์ง€์›์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. nounwind ์†์„ฑ์€ ๋ชจ๋“  ํ•จ์ˆ˜์— ์•”์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋‚ด์žฅ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • CLANG_CRASH_DIAGNOSTICS_DIR ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถฉ๋Œ ์ง„๋‹จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์œ ๋‹ˆ์ฝ”๋“œ ์ง€์›์ด ์œ ๋‹ˆ์ฝ”๋“œ 15.0 ์‚ฌ์–‘์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "โ‚Š"(์˜ˆ: "double xโ‚–โ‚Šโ‚")๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ์ˆ˜ํ•™ ๊ธฐํ˜ธ๋Š” ์‹๋ณ„์ž์— ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ํŒŒ์ผ ๋กœ๋“œ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ๋จผ์ € ๋กœ๋“œ๋œ ๋‹ค์Œ "--config=" ํ”Œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด ์ง€์ •๋œ ํŒŒ์ผ์ด ๋กœ๋“œ๋˜๋ฉฐ ์ด์ œ ์—ฌ๋Ÿฌ ๋ฒˆ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ). ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ๊ธฐ๋ณธ ๋กœ๋“œ ์ˆœ์„œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. clang์ด ํŒŒ์ผ์„ ๋จผ์ € ๋กœ๋“œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. - .cfg, ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ ๋‘ ๊ฐœ์˜ ํŒŒ์ผ ๋กœ๋“œ๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. .cfg ๋ฐ .cfg. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌ์„ฑ ํŒŒ์ผ ๋กœ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด "--no-default-config" ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด __DATE__, __TIME__ ๋ฐ __TIMESTAMP__ ๋งคํฌ๋กœ์˜ ํ˜„์žฌ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๊ฐ’์„ SOURCE_DATE_EPOCH ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ง€์ •๋œ ์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒ์ˆ˜ ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์žฅ ํ•จ์ˆ˜(buildin)๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด "__has_constexpr_builtin" ๋งคํฌ๋กœ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ •๋ ฌ๋œ ์ฝ”๋ฃจํ‹ด ํ”„๋ ˆ์ž„ ํ• ๋‹น์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ปดํŒŒ์ผ ํ”Œ๋ž˜๊ทธ "-fcoro-aligned-allocation"์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • "-fstrict-flex-arrays=" ํ”Œ๋ž˜๊ทธ๋Š” ๊ตฌ์กฐ(๊ตฌ์กฐ ๋์— ํฌ๊ธฐ๊ฐ€ ๋ฌดํ•œํ•œ ๋ฐฐ์—ด์ธ ์œ ์—ฐํ•œ ๋ฐฐ์—ด ๋ฉค๋ฒ„)์˜ ์œ ์—ฐํ•œ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ํ™•์ธํ•˜๋Š” ์„ธ ๋ฒˆ์งธ ์ˆ˜์ค€์— ๋Œ€ํ•œ ์ง€์›์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ์ˆ˜์ค€์—์„œ๋Š” "[]" ํฌ๊ธฐ(์˜ˆ: "int b[]")๋งŒ ์œ ์—ฐํ•œ ๋ฐฐ์—ด๋กœ ์ฒ˜๋ฆฌ๋˜์ง€๋งŒ "[0]" ํฌ๊ธฐ(์˜ˆ: "int b[0]")๋Š” ์œ ์—ฐํ•œ ๋ฐฐ์—ด๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋‹ค.
  • ํ‘œ์ค€ C++ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ๋‹จ์ผ ๋‹จ๊ณ„ ์ปดํŒŒ์ผ ๋ชจ๋ธ์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด "-fmodule-output" ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์Šคํƒ ํ”„๋ ˆ์ž„ ๋ ˆ์ด์•„์›ƒ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” "-Rpass-analytic=stack-frame-layout" ๋ชจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • AArch1์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์˜ ํŠน์ • ๋ฒ„์ „์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์†์„ฑ __attribute__((target_version("cpu_features")))๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  __attribute__((target_clones("cpu_features2","cpu_features64",...)) ์†์„ฑ์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. CPU.
  • ํ™•์žฅ๋œ ์ง„๋‹จ ๋„๊ตฌ:
    • ๋‹จ์ผ ๋น„ํŠธ ๋ถ€ํ˜ธ ์žˆ๋Š” ๋น„ํŠธ ํ•„๋“œ์— ํ•˜๋‚˜๋ฅผ ํ• ๋‹นํ•  ๋•Œ ์•”์‹œ์  ์ž˜๋ฆผ์„ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•ด "-Wsingle-bit-bitfield-constant-conversion" ๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ constexpr ๋ณ€์ˆ˜์˜ ์ง„๋‹จ์ด ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ํ•จ์ˆ˜ ์œ ํ˜• ์บ์ŠคํŒ…๊ณผ ๊ด€๋ จ๋œ ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด "-Wcast-function-type-strict" ๋ฐ "-Win Compatible-function-pointer-types-strict" ๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋‚ด๋ณด๋‚ด๊ธฐ ๋ธ”๋ก์—์„œ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š๊ฑฐ๋‚˜ ์˜ˆ์•ฝ๋œ ๋ชจ๋“ˆ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ง„๋‹จ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ •์˜์—์„œ ๋ˆ„๋ฝ๋œ "auto" ํ‚ค์›Œ๋“œ ๊ฐ์ง€ ๊ธฐ๋Šฅ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • "-Winteger-overflow" ๊ฒฝ๊ณ  ๊ตฌํ˜„์—๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ๋กœ ์ด์–ด์ง€๋Š” ์ถ”๊ฐ€ ์ƒํ™ฉ์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Loongson 64 464 ํ”„๋กœ์„ธ์„œ์— ์‚ฌ์šฉ๋˜๋Š” LoongArch ๋ช…๋ น์–ด ์„ธํŠธ ์•„ํ‚คํ…์ฒ˜(-march=loongarch3 ๋˜๋Š” -march=la5000)์— ๋Œ€ํ•œ ์ง€์›์„ ๊ตฌํ˜„ํ•˜๊ณ  MIPS ๋ฐ RISC-V์™€ ์œ ์‚ฌํ•œ ์ƒˆ๋กœ์šด RISC ISA๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

LLVM 16.0์˜ ์ฃผ์š” ํ˜์‹  ์‚ฌํ•ญ:

  • LLVM ์ฝ”๋“œ๋Š” C++17 ํ‘œ์ค€์— ์ •์˜๋œ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • LLVM ๊ตฌ์ถ•์„ ์œ„ํ•œ ํ™˜๊ฒฝ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋นŒ๋“œ ๋„๊ตฌ๋Š” C++17 ํ‘œ์ค€์„ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œํ•˜๋ ค๋ฉด ์ตœ์†Œํ•œ GCC 7.1, Clang 5.0, Apple Clang 10.0 ๋˜๋Š” Visual Studio 2019 16.7์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • AArch64 ์•„ํ‚คํ…์ฒ˜์˜ ๋ฐฑ์—”๋“œ๋Š” Cortex-A715, Cortex-X3 ๋ฐ Neoverse V2 CPU, RME MEC(Memory Encryption Contexts)์šฉ ์–ด์…ˆ๋ธ”๋Ÿฌ, Armv8.3 ํ™•์žฅ(๋ณต์†Œ์ˆ˜) ๋ฐ Function Multi Versioning์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ARM ์•„ํ‚คํ…์ฒ˜์˜ ๋ฐฑ์—”๋“œ์—์„œ๋Š” Armv2, Armv2A, Armv3 ๋ฐ Armv3M ๋Œ€์ƒ ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜์–ด ์˜ฌ๋ฐ”๋ฅธ ์ฝ”๋“œ ์ƒ์„ฑ์ด ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณต์†Œ์ˆ˜ ์ž‘์—… ์ง€์นจ์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • X86 ์•„ํ‚คํ…์ฒ˜์˜ ๋ฐฑ์—”๋“œ์—๋Š” ISA(๋ช…๋ น ์ง‘ํ•ฉ ์•„ํ‚คํ…์ฒ˜) AMX-FP16, CMPCCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. RDMSRLIST, RMSRLIST ๋ฐ WRMSRNS ์ง€์นจ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "-mcpu=raptorlake", "-mcpu=meteorlake", "-mcpu=emeraldrapids", "-mcpu=sierraforest", "-mcpu=graniterapids" ๋ฐ "-mcpu=grandridge" ์˜ต์…˜์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • LoongArch ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๊ณต์‹ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • MIPS, PowerPC ๋ฐ RISC-V ์•„ํ‚คํ…์ฒ˜๋ฅผ ์œ„ํ•œ ํ–ฅ์ƒ๋œ ๋ฐฑ์—”๋“œ
  • LLDB ๋””๋ฒ„๊ฑฐ์— LoongArch ์•„ํ‚คํ…์ฒ˜์šฉ 64๋น„ํŠธ ์‹คํ–‰ ํŒŒ์ผ ๋””๋ฒ„๊น… ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. COFF ๋””๋ฒ„๊ทธ ๊ธฐํ˜ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๋“œ๋œ Windows ๋ชจ๋“ˆ ๋ชฉ๋ก์—์„œ ์ค‘๋ณต DLL ํ•„ํ„ฐ๋ง์„ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Libc++ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ฃผ์š” ์ž‘์—…์€ C++20 ๋ฐ C++23 ํ‘œ์ค€์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.
  • LDD ๋ง์ปค๋Š” ์ฃผ์†Œ ์žฌ๋ฐฐ์น˜ ์Šค์บ๋‹๊ณผ ์„น์…˜ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ๋ณ‘๋ ฌํ™”ํ•˜์—ฌ ์—ฐ๊ฒฐ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ์ค„์ž…๋‹ˆ๋‹ค. ZSTD ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์„น์…˜ ์••์ถ•์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€