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

6๊ฐœ์›”๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— LLVM 22.1.0์ด ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. LLVM์€ ํ”„๋กœ๊ทธ๋žจ์„ RISC์™€ ์œ ์‚ฌํ•œ ๊ฐ€์ƒ ๋ช…๋ น์–ด(๋‹ค๋‹จ๊ณ„ ์ตœ์ ํ™” ์‹œ์Šคํ…œ์„ ๊ฐ–์ถ˜ ์ €์ˆ˜์ค€ ๊ฐ€์ƒ ๋จธ์‹ )์˜ ์ค‘๊ฐ„ ๋น„ํŠธ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜๋Š” ๋„๊ตฌ(์ปดํŒŒ์ผ๋Ÿฌ, ์ตœ์ ํ™” ๋„๊ตฌ, ์ฝ”๋“œ ์ƒ์„ฑ๊ธฐ)๋ฅผ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ ์˜์‚ฌ ์ฝ”๋“œ๋Š” ํŠน์ • ๋Œ€์ƒ ํ”Œ๋žซํผ์šฉ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, JIT(Just-In-Time) ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ์ง์ ‘ ๊ธฐ๊ณ„์–ด ๋ช…๋ น์–ด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. LLVM ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ, ์ด ํ”„๋กœ์ ํŠธ๋Š” C, C++, Objective-C ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๋Š” Clang ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 18.x ๋ธŒ๋žœ์น˜๋ถ€ํ„ฐ๋Š” ์ƒˆ๋กœ์šด ๋ฒ„์ „ ๋ฒˆํ˜ธ ์ฒด๊ณ„๋ฅผ ๋„์ž…ํ•˜์—ฌ ๊ฐœ๋ฐœ ์ค‘์—๋Š” ๋ฆด๋ฆฌ์Šค 0("N.0")์„ ์‚ฌ์šฉํ•˜๊ณ , ์ฒซ ๋ฒˆ์งธ ์•ˆ์ • ๋ฒ„์ „์€ "N.1"๋กœ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง‘๋‹ˆ๋‹ค.

Clang 22์˜ ๊ฐœ์„  ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • `malloc`๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ž‘์—…์— ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ† ํฐ(Allocation Tokens) ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ• ๋‹น ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ํž™ ์ •๋ณด๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๊ฐ์ง€๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋ฉฐ ๋ชฉ์ ์ด๋‚˜ ์ˆ˜์ • ํŒจํ„ด์— ๋”ฐ๋ผ ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์™€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„). ์ด ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด `-fsanitize=alloc-token` ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • C ์–ธ์–ด ๊ด€๋ จ ๊ธฐ๋Šฅ:
    • "defer" ์ง€์—ฐ ์‹คํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ •์˜ํ•˜๋Š” ์ดˆ์•ˆ ์‚ฌ์–‘์ด ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์Šค์ฝ”ํ”„๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ์•ก์…˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "defer" ์ง€์›์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด "-fdefer-ts" ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • GCC์˜ ์œ ์‚ฌ ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‚ด์žฅ ํ•จ์ˆ˜ `__builtin_stack_address()`๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ํ˜„์žฌ ํ•จ์ˆ˜์™€ ๊ทธ ์ดํ›„์— ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜๋“ค์˜ ์Šคํƒ ์˜์—ญ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ์Šคํƒ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฏธ๋ž˜ C2y ํ‘œ์ค€์„ ์œ„ํ•ด ๊ฐœ๋ฐœ ์ค‘์ธ ๊ธฐ๋Šฅ:
    • ๋ช…๋ช…๋œ ๋ฃจํ”„ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฃจํ”„์™€ switch ๋ฌธ์— ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, break ๋ฐ continue ๋ฌธ์—์„œ ์ง€์ •ํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ข…๋ฃŒํ•  ๋ฃจํ”„๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ๋ฃจํ”„: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // CONT1์œผ๋กœ ์ด๋™ continue outer; // CONT2๋กœ ์ด๋™ // CONT1 } // CONT2 }
    • ๊ณ ์œ  ์‹๋ณ„์ž ์ด๋ฆ„์„ ์ƒ์„ฑํ•˜๋„๋ก ์„ค๊ณ„๋œ ๋‚ด์žฅ ๋งคํฌ๋กœ "__COUNTER__"์˜ ๊ตฌํ˜„์ด ํ™•์žฅ๋˜์–ด ํ‘œ์ค€์— ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋งคํฌ๋กœ ํ˜ธ์ถœ ํšŸ์ˆ˜๋Š” 2147483647ํšŒ๋กœ ์ œํ•œ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
    • `extern inline`์œผ๋กœ ์„ ์–ธ๋œ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ •์  ํ•จ์ˆ˜ ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋˜ ๊ฒฝ๊ณ (-Wstatic-in-inline)๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • C23 C ํ‘œ์ค€์— ์ •์˜๋œ ๊ธฐ๋Šฅ:
    • float.h ํ—ค๋” ํŒŒ์ผ์€ ์ด์ œ float, double ๋ฐ long double ์œ ํ˜•์— ๋Œ€ํ•ด ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๋Š”(์‚ฐ์ˆ  ์—ฐ์‚ฐ์— ์‚ฌ์šฉ๋  ๋•Œ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š”) NaN ๊ฐ’์„ ๊ตฌํ˜„ํ•˜๋Š” FLT_SNAN, DBL_SNAN ๋ฐ LDBL_SNAN ๋งคํฌ๋กœ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • ํ•„๋“œ๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ, ๊ฐ™์€ ๋ฒˆ์—ญ ๋‹จ์œ„ ๋‚ด์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์ด๋ฆ„ ์—†๋Š” ์œ ํ˜•์ด ํ˜ธํ™˜๋˜๋Š” ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋˜ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ข…์†์„ฑ ๊ฒ€์‚ฌ ์ค‘์— ๋ˆ„๋ฝ๋œ ํ—ค๋” ํŒŒ์ผ์„ ๋ฌด์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ๋˜ "-MG" ํ”Œ๋ž˜๊ทธ๊ฐ€ "#embed" ์ง€์‹œ๋ฌธ์œผ๋กœ ํ™•์žฅ๋˜์–ด ์ด์ œ "#embed" ์ง€์‹œ๋ฌธ์— ์ง€์ •๋œ ํŒŒ์ผ์ด ๋ˆ„๋ฝ๋œ ๊ฒฝ์šฐ "ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • C++ ๊ด€๋ จ ๊ธฐ๋Šฅ:
    • C++2c(C++26) ์‚ฌ์–‘์—์„œ ๊ฐœ๋ฐœ๋œ "constexpr" ์ปจํ…์ŠคํŠธ์—์„œ ๊ตฌ์กฐ์  ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ƒ์ˆ˜ ํ‘œํ˜„์‹์— ๋Œ€ํ•œ ์ฐธ์กฐ ์ž์ฒด๊ฐ€ ์ด์ œ ์ƒ์ˆ˜ ํ‘œํ˜„์‹์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด๊ณผ ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค(ํŠœํ”Œ์€ ์•„์ง ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • C++20 ํ‘œ์ค€์—์„œ ์š”๊ตฌํ•˜๋Š” ๋Œ€๋กœ, ์ด์ œ ์ œ์•ฝ ์กฐ๊ฑด์€ ๊ฒ€์‚ฌ ์ „์— ํ‘œ์ค€ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ณด๋‹ค ์ •ํ™•ํ•œ ์ง„๋‹จ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๊ฐœ๋… ID์—๋งŒ ์‚ฌ์šฉ๋˜๋Š” ํ…œํ”Œ๋ฆฟ ์ธ์ˆ˜์˜ ์น˜ํ™˜ ์˜ค๋ฅ˜๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋น„๊ต ์—ฐ์‚ฐ์ž "<", ">", "<=", ">="๊ฐ€ "<=>" ์—ฐ์‚ฐ์ž๋กœ๋ถ€ํ„ฐ ํ•ฉ์„ฑ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋‚ด์žฅ ํ•จ์ˆ˜ "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship"์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • "-Wincompatible-pointer-types" ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๊ฒฝ๊ณ  ๋Œ€์‹  ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋™์ž‘์œผ๋กœ ๋˜๋Œ๋ฆฌ๋ ค๋ฉด "-Wno-error=incompatible-pointer-types" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • __builtin_bswapg, __builtin_elementwise_ldexp, __builtin_elementwise_fshl, __builtin_elementwise_fshr, __builtin_elementwise_minnumnum, __builtin_elementwise_maxnumnum, __builtin_masked_load, __builtin_masked_expand_load, __builtin_masked_store, __builtin_masked_compress_store, __builtin_masked_gather, __builtin_masked_scatter, __builtin_dedup_pack ๋“ฑ์˜ ๋‚ด์žฅ ํ•จ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, builtin_dedup_pack ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํƒ€์ž… ๋ชฉ๋ก์—์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. myTypeList = TypeList<__builtin_dedup_pack> โ€ฆ>; // ๊ฒฐ๊ณผ ํƒ€์ž…์€ TypeList๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • UBSan(-fsanitize=undefined -fsanitize-trap=undefined)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์„ ๋””๋ฒ„๊น…ํ•  ๋•Œ, ์ด์ œ ์ƒ์„ฑ๋œ ๋””๋ฒ„๊ทธ ์ •๋ณด์— ์˜ค๋ฅ˜ ์›์ธ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ์ •๋ณด์˜ ์ƒ์„ธ ์ˆ˜์ค€์„ ์ง€์ •ํ•˜๋Š” "-fsanitize-debug-trap-reasons" ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๋Š” ์ผ๋ฐ˜์ ์ธ ์„ค๋ช…(์˜ˆ: "์ •์ˆ˜ ๋ง์…ˆ ์˜ค๋ฒ„ํ”Œ๋กœ")์„ ํ‘œ์‹œํ•˜๋ ค๋ฉด "basic"์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ์ž์„ธํ•œ ์ •๋ณด(์˜ˆ: "'a + b'์—์„œ ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜ ๋ง์…ˆ ์˜ค๋ฒ„ํ”Œ๋กœ")๋ฅผ ํฌํ•จํ•˜๋ ค๋ฉด "detailed"๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • "-f[no-]sanitize-debug-trap-reasons" ์˜ต์…˜์€ "-fsanitize-trap" ๋ชจ๋“œ๋กœ ์ปดํŒŒ์ผํ•  ๋•Œ ์˜ˆ์™ธ ํŠธ๋žฉ ์ด์œ ๊ฐ€ ๋””๋ฒ„๊ทธ ์ •๋ณด์— ํฌํ•จ๋ ์ง€ ์—ฌ๋ถ€๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ํ† ํฐ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi" ๋ฐ "-fsanitize-alloc-token-extended" ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • "-fmatrix-memory-layout" ์˜ต์…˜์€ ํ–‰๋ ฌ ์œ ํ˜•์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ์—ด ์šฐ์„  ํ–‰๋ ฌ์˜ ๊ฒฝ์šฐ column-major, ํ–‰ ์šฐ์„  ํ–‰๋ ฌ์˜ ๊ฒฝ์šฐ row-major).
  • ์ด์ œ ํ•จ์ˆ˜์—๋Š” malloc ์†์„ฑ๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ํฌ์ธํ„ฐ์™€ ํฌ๊ธฐ ํ•„๋“œ ๋˜๋Š” ๋ธ”๋ก ๋์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ์ŠคํŒฌํ˜• ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์— ์ ์šฉ๋˜๋Š” "malloc_span" ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋งํฌ ์‹œ์ ์— ํ•„์š”ํ•œ printf ํ•จ์ˆ˜์˜ ์ •์  ๋งํฌ ๊ตฌํ˜„์„ ๋™์ ์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก "modular_format" ์†์„ฑ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ง„๋‹จ ๋ฐ ์ •์  ๋ถ„์„ ๋„๊ตฌ๊ฐ€ ํ™•์žฅ๋˜์—ˆ๊ณ , ์ƒˆ๋กœ์šด ๊ฒ€์‚ฌ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ง„๋‹จ ๊ด€๋ จ ๊ฐœ์„  ์‚ฌํ•ญ ์ˆ˜์‹ญ ๊ฑด).
  • X86 ๋ฐฑ์—”๋“œ์— SSE, AVX ๋ฐ AVX512 ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ์ถ”๊ฐ€ ๋‚ด์žฅ ํ•จ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Wildcat Lake(-march=wildcatlake) ๋ฐ Nova Lake(-march=novalake) ๋งˆ์ดํฌ๋กœ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜์˜ Intel CPU์šฉ ๋นŒ๋“œ ๋ชจ๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • AArch64 ๋ฐฑ์—”๋“œ๋Š” ์ด์ œ Ampere Computing Ampere1C(ampere1c), Arm C1-Nano(c1-nano), Arm C1-Pro(c1-pro), Arm C1-Premium(c1-premium) ๋ฐ Arm C1-Ultra(c1-ultra) ํ”„๋กœ์„ธ์„œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US] ๋ฐ FCVTA[US] ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋‚ด์žฅ ํ•จ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ๋‹ค์ค‘ ๋ฒ„์ „ ๊ด€๋ฆฌ(FMV) ์ง€์›์ด ์•ˆ์ •ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‚ฌ์šฉ์ž๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ•จ์ˆ˜ ๋ฒ„์ „์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • LoongArch32(LA32R, LA32S) ์•„ํ‚คํ…์ฒ˜ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly ๋ฐ PowerPC ์•„ํ‚คํ…์ฒ˜๋ฅผ ์œ„ํ•œ ํ–ฅ์ƒ๋œ ๋ฐฑ์—”๋“œ.

์ถœ์ฒ˜ : opennet.ru

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster