LLVM 22 เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจธเฉ‚เจŸ เจฆเฉ€ เจฐเจฟเจฒเฉ€เจœเจผ

เจ›เฉ‡ เจฎเจนเฉ€เจจเจฟเจ†เจ‚ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, LLVM 22.1.0 เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจน เจŸเฉ‚เจฒ (เจ•เฉฐเจชเจพเจˆเจฒเจฐ, เจ†เจชเจŸเฉ€เจฎเจพเจˆเจœเจผเจฐ, เจ…เจคเฉ‡ เจ•เฉ‹เจก เจœเจจเจฐเฉ‡เจŸเจฐ) เจตเจฟเจ•เจธเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจจเฉ‚เฉฐ RISC-เจตเจฐเจ—เฉ‡ เจตเจฐเจšเฉเจ…เจฒ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ (เจ‡เฉฑเจ• เจฌเจนเฉ-เจชเฉฑเจงเจฐเฉ€ เจ…เจจเฉเจ•เฉ‚เจฒเจจ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจตเจพเจฒเฉ€ เจ‡เฉฑเจ• เจ˜เฉฑเจŸ-เจชเฉฑเจงเจฐเฉ€ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ) เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐเจฒเฉ‡ เจฌเจฟเฉฑเจŸเจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจธเฉ‚เจกเฉ‹เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฆเจฟเฉฑเจคเฉ‡ เจŸเจพเจฐเจ—เฉ‡เจŸ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฒเจˆ เจฎเจธเจผเฉ€เจจ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจพเจ‚ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจธเจฟเฉฑเจงเฉ‡ เจฎเจธเจผเฉ€เจจ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจœเจธเจŸ-เจ‡เจจ-เจŸเจพเจˆเจฎ (JIT) เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค LLVM เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€เจ†เจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ เจคเฉ‡, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เจฒเฉˆเจ‚เจ— เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจตเจฟเจ•เจธเจค เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆ, เจœเฉ‹ C, C++, เจ…เจคเฉ‡ เจ‰เจฆเฉ‡เจธเจผ-C เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจญเจพเจธเจผเจพเจตเจพเจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค 18.x เจธเจผเจพเจ–เจพ เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉฐเจฌเจฐเจฟเฉฐเจ— เจธเจ•เฉ€เจฎ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจ—เจฟเจ†, เจœเจฟเจธ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจตเจฟเจ•เจพเจธ เจฆเฉŒเจฐเจพเจจ เจฐเฉ€เจฒเฉ€เจœเจผ 0 ("N.0") เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจธเจฅเจฟเจฐ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉ‚เฉฐ "N.1" เจจเฉฐเจฌเจฐ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจ•เจฒเฉˆเจ‚เจ— 22 เจตเจฟเฉฑเจš เจธเฉเจงเจพเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเจจ:

  • เจฎเฉˆเจฎเจฐเฉ€ เจ…เจฒเฉ‹เจ•เฉ‡เจธเจผเจจ เจŸเฉ‹เจ•เจจเจพเจ‚ (เจ…เจฒเฉ‹เจ•เฉ‡เจธเจผเจจ เจŸเฉ‹เจ•เจจ) เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจคเจพเจ‚ เจœเฉ‹ เจ‡เฉฑเจ• เจตเจฟเจฒเฉฑเจ–เจฃ เจชเจ›เจพเจฃเจ•เจฐเจคเจพ เจจเจพเจฒ เจฎเฉˆเจฒเฉ‹เจ• เจตเจฐเจ—เฉ‡ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ•เฉ€เจคเฉ‡ เจ—เจ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ…เจฒเฉ‹เจ•เฉ‡เจธเจผเจจ เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจพเจฐเจ• เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เฉ‡เฅค เจ…เจฒเฉ‹เจ•เฉ‡เจธเจผเจจ เจŸเฉ‹เจ•เจจ เจนเฉ€เจช เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจขเจพเจ‚เจšเจพ เจฌเจฃเจพเจ‰เจฃ, เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฒเฉ€เจ• เจ–เฉ‹เจœ เจจเฉ‚เฉฐ เจธเจฐเจฒ เจฌเจฃเจพเจ‰เจฃ, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผ เจœเจพเจ‚ เจธเฉ‹เจง เจชเฉˆเจŸเจฐเจจเจพเจ‚ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจตเจธเจคเฉ‚เจ†เจ‚ เจฆเฉ‡ เจธเจฎเฉ‚เจน เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ (เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ, "เจ—เจฐเจฎ" เจจเฉ‚เฉฐ "เจ เฉฐเจกเฉ‡" เจกเฉ‡เจŸเจพ เจคเฉ‹เจ‚ เจตเฉฑเจ– เจ•เจฐเจจเจพ)เฅค เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเจจ เจฒเจˆ, "-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++ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚:
    • "constexpr" เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš เจธเจŸเฉเจฐเจ•เจšเจฐเจก เจฌเจพเจˆเจกเจฟเฉฐเจ—เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ C++2c (C++26) เจจเจฟเจฐเจงเจพเจฐเจจ เจตเจฟเฉฑเจš เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ, เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจธเจฅเจฟเจฐ เจธเจฎเฉ€เจ•เจฐเจจเจพเจ‚ เจฆเฉ‡ เจนเจตเจพเจฒเฉ‡ เจนเฉเจฃ เจ–เฉเจฆ เจธเจฅเจฟเจฐ เจธเจฎเฉ€เจ•เจฐเจจ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจเจฐเฉ‡ เจ…เจคเฉ‡ เจธเจงเจพเจฐเจจ เจขเจพเจ‚เจšเจฟเจ†เจ‚ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ (เจŸเจฟเจŠเจชเจฒ เจ…เจœเฉ‡ เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉ€เจ‚ เจนเจจ)เฅค 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 เจฌเฉˆเจ•เจเจ‚เจก เจนเฉเจฃ เจเจ‚เจชเฉ€เจ…เจฐ เจ•เฉฐเจชเจฟเจŠเจŸเจฟเฉฐเจ— เจเจ‚เจชเฉ€เจ…เจฐ1C (เจเจ‚เจชเฉ€เจ…เจฐ1c), เจ†เจฐเจฎ C1-เจจเฉˆเจจเฉ‹ (c1-เจจเฉˆเจจเฉ‹), เจ†เจฐเจฎ C1-เจชเฉเจฐเฉ‹ (c1-เจชเฉเจฐเฉ‹), เจ†เจฐเจฎ C1-เจชเฉเจฐเฉ€เจฎเฉ€เจ…เจฎ (c1-เจชเฉเจฐเฉ€เจฎเฉ€เจ…เจฎ), เจ…เจคเฉ‡ เจ†เจฐเจฎ C1-เจ…เจฒเจŸเจฐเจพ (c1-เจ…เจฒเจŸเจฐเจพ) เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐเจพเจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค 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