เบ›เปˆเบญเบเบŠเบธเบ”เบ„เบญเบกเบžเบตเบงเป€เบ•เบต LLVM 16.0

เบซเบผเบฑเบ‡เบˆเบฒเบเบซเบปเบเป€เบ”เบทเบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ„เบ‡เบเบฒเบ™ LLVM 16.0 เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบต - เบŠเบธเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš GCC (compilers, optimizers เปเบฅเบฐ code generator) เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ bitcode เบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡เบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ virtual เบ„เป‰เบฒเบเบ„เบท RISC (เป€เบ„เบทเปˆเบญเบ‡ virtual เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเบ—เบตเปˆเบกเบต a. เบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบฅเบฐเบ”เบฑเบš). เบฅเบฐเบซเบฑเบ” pseudocode เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เปˆเบฝเบ™เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเบชเบฑเบ‡เบฅเบงเบก JIT เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเป‚เบ”เบเบเบปเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ„เบ‡เบเบฒเบ™.

เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™ Clang 16.0:

  • เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++/ObjC++ เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™ gnu++17 (เบเปˆเบญเบ™เปœเป‰เบฒเบ™เบตเป‰ gnu++14), เบŠเบถเปˆเบ‡เปเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” C++17 เบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ GNU เปเบกเปˆเบ™เบฎเบญเบ‡เบฎเบฑเบšเป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เป€เบžเบทเปˆเบญเบเบฑเบšเบ„เบทเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบ "-std=gnu++14".
  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบฑเป‰เบ™เบชเบนเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++20:
    • เปœเป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบชเบฐโ€‹เบกเบฒโ€‹เบŠเบดเบโ€‹เบžเบดโ€‹เป€เบชเบ”โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เป€เบ‡เบทเปˆเบญเบ™โ€‹เป„เบ‚โ€‹เป€เบฅเบฑเบโ€‹เบ™เป‰เบญเบโ€‹,
    • เบเบฒเบ™เบˆเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ lambda,
    • เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเป€เบซเบกเบตเบžเบฒเบšเบžเบฒเบเปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ,
    • เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบเบปเบโ€‹เป€เบงเบฑเป‰เบ™โ€‹เบ„เปเบฒโ€‹เบชเปเบฒโ€‹เบ„เบฑเบ™ typename เปƒเบ™โ€‹เบšเบฒเบ‡โ€‹เบชเบฐโ€‹เบžเบฒเบšโ€‹เบเบฒเบ™โ€‹,
    • เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบฅเบงเบกเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบš (โ€œAgr(val1, val2)โ€).
  • เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++ 2b เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”:
    • เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบงเบฒเบ‡เบ›เป‰เบฒเบเบขเบนเปˆเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ›เบฐเบชเบปเบก,
    • เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบปเบ‡เบ—เบตเปˆ(),
    • เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบปเบ‡เบ—เบตเปˆ[],
    • เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบ›เบฐเป€เบžเบ” char8_t เปเบกเปˆเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™,
    • เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปƒเบŠเป‰เปƒเบ™ "\N{...}" เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบเปเบฅเป‰เบง
    • เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เปƒเบŠเป‰เบ•เบปเบงเปเบ›เบ—เบตเปˆเบ›เบฐเบเบฒเบ”เป€เบ›เบฑเบ™ "static constexpr" เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบฐเบเบฒเบ”เป€เบ›เบฑเบ™ constexpr.
  • เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ” C-standard C2x เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”:
    • เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบ„เบณเป€เบ•เบทเบญเบ™ "-Wunused-label", เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” "[[maybe_unused]]" เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ™เบณเปƒเบŠเป‰เบเบฑเบšเบ›เป‰เบฒเบเบเบณเบเบฑเบš.
    • เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบงเบฒเบ‡เบ›เป‰เบฒเบเบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบเปเป„เบ”เป‰เบžเบฒเบเปƒเบ™เบชเปเบฒเบ™เบงเบ™เบ›เบฐเบชเบปเบก,
    • เป€เบžเบตเปˆเบกเบ›เบฐเป€เบžเบ” เปเบฅเบฐ typeof_unqual operators,
    • เบ›เบฐเป€เบžเบ”เปƒเปเปˆ nullptr_t เปเบฅเบฐเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ nullptr เป€เบžเบทเปˆเบญเบเบณเบ™เบปเบ”เบ•เบปเบงเบŠเบตเป‰ null เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เบ•เบปเบงเบŠเบตเป‰เปƒเบ”เบเปเป„เบ”เป‰ เปเบฅเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เบ‚เบญเบ‡ NULL เบ—เบตเปˆเบšเปเปˆเบœเบนเบเบกเบฑเบ”เบเบฑเบšเบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบก เปเบฅเบฐ void* type.
    • เปƒเบ™เป‚เบซเบกเบ” C2x, เบเบฒเบ™เป‚เบ—เบซเบฒ macro va_start เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ•เบปเบงเปเบ›เบ‚เบญเบ‡ arguments (variadic) เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰.
  • เปƒเบ™เป‚เบซเบกเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก C99, C11, เปเบฅเบฐ C17, เบ•เบปเบงเป€เบฅเบทเบญเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ "-Wimplicit-function-declaration" เปเบฅเบฐ "-Wimplicit-int" เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบœเบฐเบฅเบดเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™.
  • เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบฒเบ‡เบญเป‰เบญเบกเบ‚เบญเบ‡ "void *" (เป€เบŠเบฑเปˆเบ™: "void func(void *p) { *p; }") เปƒเบ™เป‚เบซเบกเบ” C++ เบ›เบฐเบˆเบธเบšเบฑเบ™เบชเป‰เบฒเบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”, เบ„เป‰เบฒเบเบ„เบทเบเบฑเบš ISO C++, GCC, ICC เปเบฅเบฐ MSVC.
  • เบเบฒเบ™เบฅเบฐเบšเบธ bitfields เป€เบ›เบฑเบ™เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ (เป€เบŠเบฑเปˆเบ™: "__asm โ€‹โ€‹โ€‹โ€‹{ mov eax, s.bf }") เปƒเบ™เบ•เบปเบงเบ›เบฐเบเบญเบš inline เปเบšเบš Microsoft เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบฅเบฐเบชเบฐเบซเบฐเบžเบฑเบ™เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบ”เบฝเบงเบเบฑเบ™เบขเบนเปˆเปƒเบ™เป‚เบกเบ”เบนเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ OpenCL เปเบฅเบฐ OpenMP เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบ. เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบงเบดเบ™เบดเป„เบชเบชเบณเบฅเบฑเบšเปเบกเปˆเปเบšเบš C++ เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ OpenCL kernel. เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบ•เปเปˆเบ„เบดเบงเบ•เบฑเบ™เบชเปเบฒเบฅเบฑเบš AMDGPU. เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ nounwind เปเบกเปˆเบ™โ€‹เป€เบžเบตเปˆเบก implicitly เบเบฑเบšโ€‹เบซเบ™เป‰เบฒโ€‹เบ—เบตเปˆโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”. เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เปƒเบ™.
  • เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เปƒเบŠเป‰เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก CLANG_CRASH_DIAGNOSTICS_DIR เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบงเบดเบ™เบดเป„เบชเบเบฒเบ™เบ‚เบฑเบ”เบ‚เป‰เบญเบ‡.
  • เบฎเบญเบ‡เบฎเบฑเบš Unicode เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เป€เบ›เบฑเบ™เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡ Unicode 15.0. เบšเบฒเบ‡เบชเบฑเบ™เบเบฒเบฅเบฑเบเบ—เบฒเบ‡เบ„เบฐเบ™เบดเบ”เบชเบฒเบ”เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบฅเบฐเบšเบธ, เป€เบŠเบฑเปˆเบ™ "โ‚Š" (เป€เบŠเบฑเปˆเบ™: "double xโ‚–โ‚Šโ‚").
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบซเบผเบฒเบเบญเบฑเบ™ (เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ–เบทเบเป‚เบซเบฅเบ”เบเปˆเบญเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบœเปˆเบฒเบ™เบ—เบธเบ‡ โ€œ--config=โ€, เป€เบŠเบดเปˆเบ‡เบ•เบญเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธเป„เบ”เป‰เบซเบผเบฒเบเบ„เบฑเป‰เบ‡). เบ›เปˆเบฝเบ™เบฅเบณเบ”เบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ: clang เบžเบฐเบเบฒเบเบฒเบกเป‚เบซเบผเบ”เป„เบŸเบฅเปŒเบเปˆเบญเบ™ - .cfg, เปเบฅเบฐเบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเบžเบปเบšเบกเบฑเบ™เบžเบฐเบเบฒเบเบฒเบกเป‚เบซเบฅเบ”เบชเบญเบ‡เป„เบŸเบฅเปŒ .cfg เปเบฅเบฐ .cfg. เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เป‚เบซเบผเบ”เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบฒเบกเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ—เบธเบ‡ โ€œ--no-default-configโ€ เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก.
  • เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเปเป‰เบฒเบ„เบทเบ™เป„เบ”เป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เบ„เปˆเบฒเบงเบฑเบ™เบ—เบต เปเบฅเบฐเป€เบงเบฅเบฒเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปƒเบ™ __DATE__, __TIME__ เปเบฅเบฐ __TIMESTAMP__ macros เบ”เป‰เบงเบเป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก SOURCE_DATE_EPOCH.
  • เป€เบžเบทเปˆเบญเบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบ™เบ•เบปเบง (builtin) เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ„เบปเบ‡เบ—เบตเปˆ, เบกเบฐเบซเบฒเบžเบฒเบ "__has_constexpr_builtin" เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก.
  • เป€เบžเบตเปˆเบกเบ—เบธเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปƒเบซเบกเปˆ "-fcoro-aligned-allocation" เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบเบญเบš coroutine เบชเบญเบ”เบ„เปˆเบญเบ‡.
  • เบ—เบธเบ‡ โ€œ-fstrict-flex-arrays=โ€ เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบปเบ‡เบ›เบฐเบเบญเบš array เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ (เบชเบฐเบกเบฒเบŠเบดเบเบญเบฒเป€เบฃเบ—เบตเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰, array เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบšเปเปˆเบเปเบฒเบ™เบปเบ”เบขเบนเปˆเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡). เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบก, เบžเบฝเบ‡เปเบ•เปˆเบ‚เบฐเบซเบ™เบฒเบ” "[]" (เบ•เบปเบงเบขเปˆเบฒเบ‡, "int b[]") เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™ array เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰, เปเบ•เปˆเบ‚เบฐเบซเบ™เบฒเบ” "[0]" (เบ•เบปเบงเบขเปˆเบฒเบ‡, "int b[0]") เบšเปเปˆโ€‹เปเบกเปˆเบ™.
  • เป€เบžเบตเปˆเบกเบ—เบธเบ‡ "-fmodule-output" เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เป„เบฅเบเบฐเบ”เบฝเบงเบชเปเบฒเบฅเบฑเบšเป‚เบกเบ”เบนเบ™ C++ เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.
  • เป€เบžเบตเปˆเบกเป‚เปเบ” "-Rpass-analysis=stack-frame-layout" เป€เบžเบทเปˆเบญเบŠเปˆเบงเบเบงเบดเบ™เบดเป„เบชเบšเบฑเบ™เบซเบฒเบเบฑเบšเป‚เบ„เบ‡เบฎเปˆเบฒเบ‡ stack.
  • เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเปเปˆ __attribute__((target_version("cpu_features")))) เปเบฅเบฐเบ‚เบฐเบซเบเบฒเบเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ __attribute__((target_clones("cpu_features1","cpu_features2",...)))) เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเบฅเบธเป‰เบ™เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบชเบฐเปœเบญเบ‡เปƒเบซเป‰เป‚เบ”เบ AArch64 CPUs.
  • เบ‚เบฐเบซเบเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบงเบดเบ™เบดเบ”เป„เบช:
    • เป€เบžเบตเปˆเบกเบ„เบณเป€เบ•เบทเบญเบ™ "-Wsingle-bit-bitfield-constant-conversion" เป€เบžเบทเปˆเบญเบเบงเบ”เบซเบฒเบเบฒเบ™เบซเบเปเป‰เปœเป‰เบฒเบ—เบตเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปƒเบ™เป€เบงเบฅเบฒเบเบณเบ™เบปเบ”เบญเบฑเบ™เปœเบถเปˆเบ‡เปƒเบซเป‰เบเบฑเบš bitfield เบ—เบตเปˆเบกเบตเป€เบŠเบฑเบ™เบ”เบฝเบง.
    • เบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ‚เบญเบ‡เบ•เบปเบงเปเบ› constexpr เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบเป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบ.
    • เป€เบžเบตเปˆเบกเบ„เบณเป€เบ•เบทเบญเบ™ "-Wcast-function-type-strict" เปเบฅเบฐ "-Wincompatible-function-pointer-types-strict" เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบญเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบชเบฑเบ™เบเบฒเบ™เบ›เบฐเป€เบžเบ”เบŸเบฑเบ‡เบŠเบฑเบ™.
    • เป€เบžเบตเปˆเบกเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบŠเบทเปˆเป‚เบกเบ”เบนเบ™เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบทเบชเบฐเบซเบ‡เบงเบ™เป„เบงเป‰เปƒเบ™เบšเบฅเบฑเบญเบเบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ.
    • เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบŠเบญเบเบ„เบปเป‰เบ™เบซเบฒเบ„เปเบฒเบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ› "เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”" เปƒเบ™เบ„เปเบฒเบ™เบดเบเบฒเบก.
    • เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเป€เบ•เบทเบญเบ™ "-Winteger-overflow" เป„เบ”เป‰เป€เบžเบตเปˆเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™ overflows.
  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบŠเบธเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ LoongArch (-march=loongarch64 เบซเบผเบท -march=la464), เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต Loongson 3 5000 เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ” RISC ISA เปƒเบซเบกเปˆ, เบ„เป‰เบฒเบเบ„เบทเบเบฑเบš MIPS เปเบฅเบฐ RISC-V.

เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒเบซเบผเบฑเบเปƒเบ™ LLVM 16.0:

  • เบฅเบฐเบซเบฑเบ” LLVM เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปƒเบŠเป‰เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++17.
  • เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ”เป‰เบฒเบ™เบชเบดเปˆเบ‡เปเบงเบ”เบฅเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ LLVM เป„เบ”เป‰เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเป‰เบฒเบ‡เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ„เบงเบ™เบˆเบฐเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++ 17, i.e. เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เปœเป‰เบญเบ GCC 7.1, Clang 5.0, Apple Clang 10.0 เบซเบผเบท Visual Studio 2019 16.7.
  • เบ”เป‰เบฒเบ™เบซเบผเบฑเบ‡เบชเบณเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณ AArch64 เป€เบžเบตเป‰เบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš CPU Cortex-A715, Cortex-X3 เปเบฅเบฐ Neoverse V2, เบ•เบปเบงเบ›เบฐเบเบญเบšเบชเบณเบฅเบฑเบš RME MEC (Memory Encryption Contexts), Armv8.3 extensions (Complex Number) เปเบฅเบฐ Function Multi Versioning.
  • เปƒเบ™ backend เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐ 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.
  • เบ›เบฑเบšเบ›เบธเบ‡ backends เบชเปเบฒเบฅเบฑเบš MIPS, PowerPC เปเบฅเบฐเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ RISC-V
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบ”เบตเบšเบฑเปŠเบ 64-bit เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ LoongArch เปƒเบซเป‰เบเบฑเบšเบ•เบปเบงเบ”เบตเบšเบฑเบ LLDB. เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบชเบฑเบ™เบเบฒเบฅเบฑเบเบ”เบตเบšเบฑเบ COFF. เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบ‚เบญเบ‡ DLLs เบ—เบตเปˆเบŠเป‰เปเบฒเบเบฑเบ™เปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™ Windows เบ—เบตเปˆเป‚เบซเบฅเบ”.
  • เปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” Libc++, เบงเบฝเบเบ‡เบฒเบ™เบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เป„เบ”เป‰เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเปƒเบซเบกเปˆเบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++20 เปเบฅเบฐ C ++23.
  • เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ LDD เบซเบผเบธเบ”เบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบเบฒเบ™เบชเบฐเปเบเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ—เบตเปˆเบขเบนเปˆเปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™. เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบชเปˆเบงเบ™เป‚เบ”เบเปƒเบŠเป‰ ZSTD algorithm.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™