LLVM 22 āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āϏ⧇āĻŸā§‡āϰ āϰāĻŋāϞāĻŋāϜ

āĻ›āϝāĻŧ āĻŽāĻžāϏ āϧāϰ⧇ āωāĻ¨ā§āύāϝāĻŧāύ⧇āϰ āĻĒāϰ, LLVM 22.1.0 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻŋ āĻāĻŽāύ āϏāϰāĻžā§āϜāĻžāĻŽ (āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ, āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜāĻžāϰ āĻāĻŦāĻ‚ āϕ⧋āĻĄ āĻœā§‡āύāĻžāϰ⧇āϟāϰ) āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āϝāĻž āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϗ⧁āϞāĻŋāϕ⧇ RISC-āϏāĻĻ⧃āĻļ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀āϰ (āĻāĻ•āϟāĻŋ āĻŦāĻšā§-āĻ¸ā§āϤāϰ⧇āϰ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāĻœā§‡āĻļāύ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϏāĻš āĻāĻ•āϟāĻŋ āύāĻŋāĻŽā§āύ-āĻ¸ā§āϤāϰ⧇āϰ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύ) āĻŽāĻ§ā§āϝāĻŦāĻ°ā§āϤ⧀ āĻŦāĻŋāϟāϕ⧋āĻĄā§‡ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰ⧇āĨ¤ āĻ‰ā§ŽāĻĒāĻ¨ā§āύ āϏāĻŋāωāĻĄā§‹āϕ⧋āĻĄ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϞāĻ•ā§āĻˇā§āϝ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡āϰ āϜāĻ¨ā§āϝ āĻŽā§‡āĻļāĻŋāύ āϕ⧋āĻĄā§‡ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻ…āĻĨāĻŦāĻž āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϏāĻŽā§āĻĒāĻžāĻĻāύ⧇āϰ āϏāĻŽāϝāĻŧ āϏāϰāĻžāϏāϰāĻŋ āĻŽā§‡āĻļāĻŋāύ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ āϜāĻžāĻ¸ā§āϟ-āχāύ-āϟāĻžāχāĻŽ (JIT) āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ LLVM āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇, āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ Clang āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰāϛ⧇, āϝāĻž C, C++ āĻāĻŦāĻ‚ Objective-C āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāώāĻžāϗ⧁āϞāĻŋāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇āĨ¤ 18.x āĻļāĻžāĻ–āĻž āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇, āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āύāĻŽā§āĻŦāϰāĻ•āϰāĻŖ āĻ¸ā§āĻ•āĻŋāĻŽā§‡ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰ⧇āϛ⧇, āϝāĻžāϰ āĻ…āύ⧁āϏāĻžāϰ⧇ āϰāĻŋāϞāĻŋāϜ 0 ("N.0") āωāĻ¨ā§āύāϝāĻŧāύ⧇āϰ āϏāĻŽāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻĒā§āϰāĻĨāĻŽ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϟāĻŋāϕ⧇ "N.1" āύāĻŽā§āĻŦāϰ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤

āĻ•ā§āĻ˛ā§āϝāĻžāĻ‚ 22-āĻāϰ āωāĻ¨ā§āύāϤāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āϰāϝāĻŧ⧇āϛ⧇:

  • āĻŽā§‡āĻŽā§‹āϰāĻŋ āĻ…ā§āϝāĻžāϞ⧋āϕ⧇āĻļāύ āĻŸā§‹āϕ⧇āύ (āĻ…ā§āϝāĻžāϞ⧋āϕ⧇āĻļāύ āĻŸā§‹āϕ⧇āύ) āĻāϰ āϜāĻ¨ā§āϝ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϏāĻŽāĻ°ā§āĻĨāύ, āϝāĻž malloc āĻāϰ āĻŽāϤ⧋ āĻĢāĻžāĻ‚āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻ…āύāĻ¨ā§āϝ āĻļāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀ āĻĻāĻŋāϝāĻŧ⧇ āϏāĻŽā§āĻĒāĻžāĻĻāĻŋāϤ āĻŽā§‡āĻŽā§‹āϰāĻŋ āĻ…ā§āϝāĻžāϞ⧋āϕ⧇āĻļāύ āĻ…āĻĒāĻžāϰ⧇āĻļāύ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰ⧇āĨ¤ āĻ…ā§āϝāĻžāϞ⧋āϕ⧇āĻļāύ āĻŸā§‹āϕ⧇āύāϗ⧁āϞāĻŋ āĻšāĻŋāĻĒ āϤāĻĨā§āϝ āĻ—āĻ āύ, āĻŽā§‡āĻŽā§‹āϰāĻŋ āϞāĻŋāĻ• āϏāύāĻžāĻ•ā§āϤāĻ•āϰāĻŖ āϏāĻšāϜāϤāϰ āĻ•āϰāĻžāϰ āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻŦāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϧāϰāĻŖāϗ⧁āϞāĻŋāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻŦāĻ¸ā§āϤ⧁āϰ āĻ—ā§‹āĻˇā§āĻ ā§€āĻ•āϰāĻŖ āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ (āϝ⧇āĻŽāύ, "āĻ—āϰāĻŽ" āĻĨ⧇āϕ⧇ "āĻ āĻžāĻ¨ā§āĻĄāĻž" āĻĄā§‡āϟāĻž āφāϞāĻžāĻĻāĻž āĻ•āϰāĻž)āĨ¤ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇, "-fsanitize=alloc-token" āĻĒāϤāĻžāĻ•āĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤
  • āϏāĻŋ āĻ­āĻžāώāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ:
    • "defer" āĻŦāĻŋāϞāĻŽā§āĻŦāĻŋāϤ āĻ•āĻžāĻ°ā§āϝāĻ•āϰāĻ•āϰāĻŖ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻ–āϏāĻĄāĻŧāĻž āĻ¸ā§āĻĒ⧇āϏāĻŋāĻĢāĻŋāϕ⧇āĻļāύ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻ¸ā§āϕ⧋āĻĒāϟāĻŋ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ•ā§āϰāĻŋāϝāĻŧāĻž āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤ "defer" āϏāĻŽāĻ°ā§āĻĨāύ āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ "-fdefer-ts" āĻĒāϤāĻžāĻ•āĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
    • āĻŦāĻŋāĻ˛ā§āϟ-āχāύ āĻĢāĻžāĻ‚āĻļāύ __builtin_stack_address() āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž GCC-āϤ⧇ āĻ…āύ⧁āϰ⧂āĻĒ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻ…āύ⧁āϰ⧂āĻĒāĨ¤ āĻāχ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāĻ• āĻ āĻŋāĻ•āĻžāύāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇ āϝāĻž āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻ¸ā§āĻŸā§āϝāĻžāĻ• āĻāϞāĻžāĻ•āĻžāϕ⧇ āĻĒ⧃āĻĨāĻ• āĻ•āϰ⧇ āϝāĻž __builtin_stack_address() āύāĻžāĻŽāĻ• āĻĢāĻžāĻ‚āĻļāύ āĻāĻŦāĻ‚ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋāϕ⧇ āĻ•āϞ āĻ•āϰ⧇āĨ¤
  • āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇āϰ C2y āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āϝ⧇āϏāĻŦ āϏāĻ•ā§āώāĻŽāϤāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇:
    • āύāĻžāĻŽāϝ⧁āĻ•ā§āϤ āϞ⧁āĻĒāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž āφāĻĒāύāĻžāϕ⧇ āϞ⧁āĻĒāϗ⧁āϞāĻŋāϤ⧇ āύāĻžāĻŽ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻŦāĻŋāĻŦ⧃āϤāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ, āϝāĻž āĻŦā§āϰ⧇āĻ• āĻāĻŦāĻ‚ āĻ•āĻ¨ā§āϟāĻŋāύāĻŋāω āĻ¸ā§āĻŸā§‡āϟāĻŽā§‡āĻ¨ā§āĻŸā§‡ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻžāϤ⧇ āϞ⧁āĻĒāϟāĻŋ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϝ⧇āĻ–āĻžāύ āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // go to CONT1 continue outer; // go to CONT2 // CONT1 } // CONT2 }
    • āĻ…āύāĻ¨ā§āϝ āĻļāύāĻžāĻ•ā§āϤāĻ•āĻžāϰ⧀ āύāĻžāĻŽ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻŦāĻŋāĻ˛ā§āϟ-āχāύ "__COUNTER__" āĻŽā§āϝāĻžāĻ•ā§āϰ⧋āϰ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§‡ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāχ āĻŽā§āϝāĻžāĻ•ā§āϰ⧋āϤ⧇ 2147483647 āĻ•āϞ⧇āϰ āϏ⧀āĻŽāĻž āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇; āĻāχ āϏ⧀āĻŽāĻž āĻ…āϤāĻŋāĻ•ā§āϰāĻŽ āĻ•āϰāϞ⧇ āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āϤ⧈āϰāĻŋ āĻšāĻŦ⧇āĨ¤
    • "āĻāĻ•ā§āϏāϟāĻžāĻ°ā§āύ āχāύāϞāĻžāχāύ" āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ˜ā§‹āώāĻŋāϤ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻĢāĻžāĻ‚āĻļāύ āĻŦāĻž āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āϏāϤāĻ°ā§āĻ•āϤāĻž (-Wstatic-in-inline) āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • C23 C āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§‡ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•ā§āώāĻŽāϤāĻž:
    • float.h āĻšā§‡āĻĄāĻžāϰ āĻĢāĻžāχāϞāϟāĻŋ āĻāĻ–āύ FLT_SNAN, DBL_SNAN, āĻāĻŦāĻ‚ LDBL_SNAN āĻŽā§āϝāĻžāĻ•ā§āϰ⧋āϗ⧁āϞāĻŋāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇, āϝāĻž āĻĢā§āϞ⧋āϟ, āĻĄāĻžāĻŦāϞ āĻāĻŦāĻ‚ āϞāĻ‚ āĻĄāĻžāĻŦāϞ āϧāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŋāĻ—āĻ¨ā§āϝāĻžāϞāĻĄ (āĻ—āĻžāĻŖāĻŋāϤāĻŋāĻ• āĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϞāĻžāĻĒ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϞ⧇ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āϏ⧃āĻˇā§āϟāĻŋ āĻ•āϰ⧇) NaN āĻŽāĻžāύ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰ⧇āĨ¤
    • āĻāĻ•āχ āĻ•ā§āώ⧇āĻ¤ā§āϰ āĻĨāĻžāĻ•āϞ⧇ āĻāĻ•āχ āĻ…āύ⧁āĻŦāĻžāĻĻ āχāωāύāĻŋāĻŸā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āύāĻžāĻŽāĻšā§€āύ āĻĒā§āϰāĻ•āĻžāϰāϗ⧁āϞāĻŋāϕ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻž āĻšāϤ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
    • āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻ¸ā§āĻ•ā§āϝāĻžāύāĻŋāĻ‚āϝāĻŧ⧇āϰ āϏāĻŽāϝāĻŧ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻšā§‡āĻĄāĻžāϰ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϕ⧇ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ "-MG" āĻĒāϤāĻžāĻ•āĻžāϟāĻŋ "#embed" āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻžāϗ⧁āϞāĻŋāϤ⧇ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻāĻ–āύ "#embed" āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻžāϤ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϕ⧋āύāĻ“ āĻĢāĻžāχāϞ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻĨāĻžāĻ•āϞ⧇ "āĻĢāĻžāχāϞ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧāύāĻŋ" āĻ¤ā§āϰ⧁āϟāĻŋāϟāĻŋ āĻĻāĻŽāύ āĻ•āϰ⧇āĨ¤
  • C++ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ:
    • C++2c (C++26) āĻ¸ā§āĻĒ⧇āϏāĻŋāĻĢāĻŋāϕ⧇āĻļāύ⧇ āĻŦāĻŋāĻ•āĻļāĻŋāϤ "constexpr" āĻĒā§āϰāϏāĻ™ā§āϗ⧇ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāĻ°ā§āĻĄ āĻŦāĻžāχāĻ¨ā§āĻĄāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώāĻŽāϤāĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϰ āĻ…āĻ°ā§āĻĨ āĻšāϞ āĻ§ā§āϰ⧁āĻŦāĻ• āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ⧇āϰ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏāϗ⧁āϞāĻŋ āĻāĻ–āύ āύāĻŋāĻœā§‡āχ āĻ§ā§āϰ⧁āĻŦāĻ• āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻ…ā§āϝāĻžāϰ⧇ āĻāĻŦāĻ‚ āϏāϰāϞ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāĻŋāϤ āĻšāϝāĻŧ (āϟ⧁āĻĒāϞāϗ⧁āϞāĻŋ āĻāĻ–āύāĻ“ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āύāϝāĻŧ)āĨ¤ constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • C++20 āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§‡āϰ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻ…āύ⧁āϝāĻžā§Ÿā§€, āĻāĻ–āύ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ āφāϗ⧇ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻžāϗ⧁āϞāĻŋāϕ⧇ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĢāĻ°ā§āĻŽā§‡ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ, āϝāĻž āφāϰāĻ“ āϏāĻ āĻŋāĻ• āĻĄāĻžāϝāĻŧāĻžāĻ—āύāĻ¸ā§āϟāĻŋāĻ• āĻŦāĻžāĻ°ā§āϤāĻž āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϧāĻžāϰāĻŖāĻž-āφāχāĻĄāĻŋāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟāϗ⧁āϞāĻŋāϤ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋāϰ āϏāĻ āĻŋāĻ• āĻĒāϰāĻŋāϚāĻžāϞāύāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤
    • āϤ⧁āϞāύāĻžāĻŽā§‚āϞāĻ• āĻ…āĻĒāĻžāϰ⧇āϟāϰ "<", ">", "<=", āĻāĻŦāĻ‚ ">=" "<=>" āĻ…āĻĒāĻžāϰ⧇āϟāϰ āĻĨ⧇āϕ⧇ āϏāĻ‚āĻļā§āϞ⧇āώāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āϜāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ "__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 āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ â€Ļ>; // āĻĢāϞāĻžāĻĢāϞ⧇āϰ āϧāϰāĻŖāϟāĻŋ āĻšāĻŦ⧇ āϟāĻžāχāĻĒāϞāĻŋāĻ¸ā§āϟ
  • UBSan (-fsanitize=undefined -fsanitize-trap=undefined) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ…āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āφāϚāϰāĻŖ āĻĄāĻŋāĻŦāĻžāĻ— āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻ¤ā§āϰ⧁āϟāĻŋāϰ āĻ•āĻžāϰāĻŖ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āϤāĻĨā§āϝ āĻāĻ–āύ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻž āĻĄāĻŋāĻŦāĻžāĻ— āϤāĻĨā§āϝ⧇ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻ¤ā§āϰ⧁āϟāĻŋāϰ āϤāĻĨā§āϝ⧇āϰ āĻŦāĻŋāĻļāĻĻ āĻ¸ā§āϤāϰ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ "-fsanitize-debug-trap-reasons" āĻĒāϤāĻžāĻ•āĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻžāϧāĻžāϰāĻŖ āĻŦāĻ°ā§āĻŖāύāĻžāϰ āϜāĻ¨ā§āϝ āĻāϟāĻŋ "āĻŽā§ŒāϞāĻŋāĻ•" (āϝ⧇āĻŽāύ, "āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāϰ āϏāĻ‚āϝ⧋āϜāύ āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋") āĻāĻŦāĻ‚ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϤāĻĨā§āϝ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ "āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ" (āϝ⧇āĻŽāύ, "'a + b' āϤ⧇ āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰāĻŋāϤ āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāϰ āϏāĻ‚āϝ⧋āϜāύ āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋") āϏ⧇āϟ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • āύāϤ⧁āύ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āĻĒāϤāĻžāĻ•āĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇:
    • "-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" āĻŽā§āϝāĻžāĻŸā§āϰāĻŋāĻ•ā§āϏ āϧāϰāϪ⧇āϰ āĻŽā§‡āĻŽāϰāĻŋ āϞ⧇āφāωāϟ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāϤ⧇ (āϝ⧇āĻŽāύ, āĻ•āϞāĻžāĻŽ-āĻŽā§‡āϜāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āϞāĻžāĻŽ-āĻŽā§‡āϜāϰ, āϰ⧋-āĻŽā§‡āϜāϰ⧇āϰ āϜāĻ¨ā§āϝ āϰ⧋-āĻŽā§‡āϜāϰ)āĨ¤
  • āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋāϤ⧇ āĻāĻ–āύ āĻāĻ•āϟāĻŋ "malloc_span" āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āϰāϝāĻŧ⧇āϛ⧇, āϝāĻž malloc āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāĻŸā§‡āϰ āĻŽāϤ⧋, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏ⧇āχ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻĒā§āϰāϝ⧋āĻœā§āϝ āϝāĻž āĻ¸ā§āĻĒā§āϝāĻžāύ⧇āϰ āĻŽāϤ⧋ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĢāĻŋāĻ˛ā§āĻĄ āĻĨāĻžāϕ⧇ āϝāĻžāϰ āφāĻ•āĻžāϰ āĻŦāĻž āĻŦā§āϞāϕ⧇āϰ āĻļ⧇āώ⧇ āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻĨāĻžāϕ⧇āĨ¤
  • āϞāĻŋāĻ™ā§āϕ⧇āϰ āϏāĻŽāϝāĻŧ 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