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

เบซเบผเบฑเบ‡เบˆเบฒเบเบซเบ™เบถเปˆเบ‡เบ›เบตเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบเบฒเบ™เบ›เปˆเบญเบเบŠเบธเบ” compiler GCC 11.1 เบŸเบฃเบตเป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒ, เป€เบ›เบฑเบ™เบเบฒเบ™เบ›เปˆเบญเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เปƒเบ™เบชเบฒเบ‚เบฒเปƒเบซเบกเปˆเบ‚เบญเบ‡ GCC 11.x. เบžเบฒเบเปƒเบ•เป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบญเบญเบเป€เบฅเบเปƒเบซเบกเปˆ, เบฎเบธเปˆเบ™ 11.0 เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เปเบฅเบฐเบšเปเปˆเบ”เบปเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบ›เปˆเบญเบ GCC 11.1, เบชเบฒเบ‚เบฒ GCC 12.0 เป„เบ”เป‰เบ–เบทเบ forked เปเบฅเป‰เบง, เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบญเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ•เปเปˆเป„เบ›เบ‚เบญเบ‡ GCC 12.1 เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™.

GCC 11.1 เป€เบ›เบฑเบ™เบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เป„เบ›เปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเป„เบŸเบฅเปŒเบ”เบตเบšเบฑเบ DWARF 5 เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++17 (โ€œ-std=gnu++17โ€), เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ C ++20. เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ C++23, เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบžเบฒเบชเบฒ C เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ” (C2x), เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบซเบกเปˆ.

เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบปเป‰เบ™เบ•เป:

  • เป‚เปเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบžเบฒเบชเบฒ C++ เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เป„เบ›เปƒเบŠเป‰เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++17 (-std=gnu++17) เปเบ—เบ™ C++14 เบ—เบตเปˆเบชเบฐเป€เปœเบตเปƒเบซเป‰เบเปˆเบญเบ™เปœเป‰เบฒเบ™เบตเป‰. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบฅเบทเบญเบเบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบžเบถเบ”เบ•เบดเบเปเบฒเปƒเบซเบกเปˆเบ‚เบญเบ‡ C++17 เป€เบกเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปเบกเปˆเปเบšเบšเบ—เบตเปˆเปƒเบŠเป‰เปเบกเปˆเปเบšเบšเบญเบทเปˆเบ™เป€เบ›เบฑเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต (-fno-new-ttp-matching).
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบฎเบฒเบ”เปเบงเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบท AddressSanitizer, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ‚เปเป‰เป€เบ—เบฑเบ”เบˆเบดเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบ, เป„เบ›เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡ buffer เบ—เบตเปˆเบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™, เปเบฅเบฐเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบญเบทเปˆเบ™เป†เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ. เบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบฎเบฒเบ”เปเบงเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบกเบตเบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ AArch64 เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เปเบฅเบฐเปเบกเปˆเบ™เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบก Linux kernel. เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบฎเบฒเบ”เปเบง AddressSanitizer เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰, เบ—เบธเบ‡ "-fsanitize=hwaddress" เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก, เปเบฅเบฐเบ—เบธเบ‡เปเบเปˆเบ™ "-fsanitize=kernel-hwaddress".
  • เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบ, เบฎเบนเบšเปเบšเบš DWARF 5 เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เป€เบŠเบดเปˆเบ‡, เป€เบกเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบฎเบธเปˆเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™เบเบงเปˆเบฒ 25%. เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบš DWARF 5 เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ binutils เบฎเบธเปˆเบ™ 2.35.2. เบฎเบนเบšเปเบšเบš DWARF 5 เบฎเบญเบ‡เบฎเบฑเบšเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ”เบตเบšเบฑเบเบ•เบฑเป‰เบ‡เปเบ•เปˆ GDB 8.0, valgrind 3.17.0, elfutils 0.172 เปเบฅเบฐ dwz 0.14. เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ”เบตเบšเบฑเบเป‚เบ”เบเปƒเบŠเป‰ DWARF เบฎเบธเปˆเบ™เบญเบทเปˆเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบ "-gdwarf-2", "-gdwarf-3" เปเบฅเบฐ "-gdwarf-4".
  • เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ GCC เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ compiler เบ•เป‰เบญเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++ 11 (เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบฑเป‰เบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ C ++ 98), i.e. เบ–เป‰เบฒ GCC 10 เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡ GCC 3.4, เบขเปˆเบฒเบ‡เปœเป‰เบญเบ GCC 11 เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ GCC 4.8.
  • เบŠเบทเปˆเปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบซเบเบฑเบ” dumps, เป„เบŸเบฅเปŒเบŠเบปเปˆเบงเบ„เบฒเบงเปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš LTO เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡. เป„เบŸเบฅเปŒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ›เบฐเบˆเบธเบšเบฑเบ™เบขเบนเปˆเบชเบฐเป€เปเบต เป€เบงเบฑเป‰เบ™เป€เบชเบเปเบ•เปˆเบงเปˆเบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบˆเบฐเบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบœเปˆเบฒเบ™เบ•เบปเบงเป€เบฅเบทเบญเบ "-dumpbase", "-dumpdir" เปเบฅเบฐ "-save-temps=*".
  • เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบฎเบนเบšเปเบšเบšเบ–เบฒเบ™เบชเบญเบ‡ BRIG เบชเปเบฒเบฅเบฑเบšเปƒเบŠเป‰เบเบฑเบšเบžเบฒเบชเบฒ HSAIL (Heterogeneous System Architecture Intermediate Language) เป„เบ”เป‰เบ–เบทเบเบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบ™เบณเปƒเบŠเป‰ เปเบฅเบฐเบˆเบฐเบ–เบทเบเบฅเบถเบšเบญเบญเบเปƒเบ™เป„เบงเป†เบ™เบตเป‰.
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบฎเบนเบšเปเบšเบš ThreadSanitizer (-fsanitize=thread) เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบ, เบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบเบงเบ”เบซเบฒเบชเบฐเบžเบฒเบšเป€เบŠเบทเป‰เบญเบŠเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบงเบเบฑเบ™เบˆเบฒเบเบซเบปเบงเบ‚เปเป‰เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบซเบผเบฒเบเบเบฐเบ—เบนเป‰. เบฎเบธเปˆเบ™เปƒเบซเบกเปˆเป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป€เบงเบฅเบฒเปเบฅเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบฅเบฐเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ”เบตเบšเบฑเบ KCSAN (Kernel Concurrency Sanitizer), เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบเบงเบ”เบซเบฒเบชเบฐเบžเบฒเบšเป€เบŠเบทเป‰เบญเบŠเบฒเบ”เบžเบฒเบเปƒเบ™ Linux kernel. เป€เบžเบตเปˆเบกเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบซเบกเปˆ "-param tsan-distinguish-volatile" เปเบฅเบฐ "-param tsan-instrument-func-entry-exit".
  • เบ•เบปเบงเป€เบฅเบเบ–เบฑเบ™เปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบงเบดเบ™เบดเบ”เป„เบชเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบ™เบฑเบš byte เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เปเบ–เบง, เปเบ•เปˆเบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบง, เบ•เบปเบงเป€เบฅเบเบ–เบฑเบ™เบ—เบตเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเบซเบผเบฒเบ byte เปเบฅเบฐเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบ„เบญเบšเบ„เบญเบ‡เบซเบผเบฒเบเบ•เปเบฒเปเบซเบ™เปˆเบ‡เปƒเบ™เปเบ–เบง (เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: เบ•เบปเบงเบญเบฑเบเบชเบญเบ™๐Ÿ™‚ เบ„เบญเบšเบ„เบญเบ‡เบชเบญเบ‡เบ•เปเบฒเปเบซเบ™เปˆเบ‡เปเบฅเบฐ. เบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบ™ 4 bytes). เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เปเบ–เบšเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบชเบฐเป€เบžเบฒเบฐ (เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป„เบ”เป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -ftabstop, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ 8). เป€เบžเบทเปˆเบญเบŸเบทเป‰เบ™เบŸเบนเบžเบถเบ”เบ•เบดเบเปเบฒเป€เบเบปเปˆเบฒ, เบ—เบฒเบ‡เป€เบฅเบทเบญเบ "-fdiagnostics-column-unit=byte" เบ–เบทเบเบชเบฐเป€เบซเบ™เบต, เปเบฅเบฐเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบกเบนเบ™เบ„เปˆเบฒเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™ (เบ•เบปเบงเป€เบฅเบเบˆเบฒเบ 0 เบซเบผเบท 1) - เบ—เบฒเบ‡เป€เบฅเบทเบญเบ "-fdiagnostics-column-origin=".
  • vectorizer เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเป€เบ™เบทเป‰เบญเปƒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เปเบฅเบฐเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบˆเบธเบ”เบ•เบฑเบ”เบเบฑเบ™เปเบฅเบฐเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบšเบฅเบฑเบญเบเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เป„เบซเบผเบ‚เบญเบ‡เบเบฒเบ™เบ„เบงเบšเบ„เบธเบก (CFG, control-flow graph).
  • optimizer เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เบŠเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเบ›เบฝเบšเบ—เบฝเบšเบ•เบปเบงเปเบ›เบ”เบฝเบงเบเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบ‚เบญเบ‡เบชเบฐเบซเบผเบฑเบš. เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ‚เบญเบ‡เบชเบฐเบซเบผเบฑเบšเบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบžเบฒเบเบซเบผเบฑเบ‡เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบšเบดเบ” (เบ—เบฒเบ‡เป€เบฅเบทเบญเบ "-fbit-tests" เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เปเบ›เบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง).
  • เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš interprocedural. เป€เบžเบตเปˆเบก IPA-modref pass เปƒเบซเบกเปˆ (-fipa-modref) เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ. เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” IPA-ICF pass (-fipa-icf), เป€เบŠเบดเปˆเบ‡เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบ—เบตเปˆเบšเบฅเบฑเบญเบเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ”เบฝเบงเบเบฑเบ™เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™. เปƒเบ™ IPA-CP (เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบžเบฑเบ™เบ„เบปเบ‡เบ—เบตเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™), heuristics เบเบฒเบ™เบ„เบฒเบ”เบ„เบฐเป€เบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡, เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเปเบฅเบฐเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡ loops เป„เบ”เป‰.
  • เปƒเบ™ Linking Time Optimizations (LTO), เบฎเบนเบšเปเบšเบš bytecode เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เป€เปเบฒเบฐเบชเบปเบกเป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบ‚เบฐเปœเบฒเบ” เปเบฅเบฐ เบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™. เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เปƒเบŠเป‰เบ„เบงเบฒเบกเบˆเบณเบชเบนเบ‡เบชเบธเบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เป„เบฅเบเบฐเบเบฒเบ™เบœเบนเบเบกเบฑเบ”.
  • เปƒเบ™เบเบปเบ™เป„เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” profile (PGO - Profile-guided optimization), เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฑเบเบชเบฐเบ™เบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™ GCOV เบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™เบ‚เบญเบ‡เบชเบนเบ™เบ™เบฑเบš. . เบ›เบฑเบšเบ›เบธเบ‡เบฎเบนเบšเปเบšเบš "-fprofile-values" เป‚เบ”เบเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบเบฒเบ™เป‚เบ—เบ—เบฒเบ‡เบญเป‰เบญเบก.
  • เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ OpenMP 5.0 (Open Multi-Processing), เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ” API เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เปƒเบ™เบฅเบฐเบšเบปเบš multi-core เปเบฅเบฐ hybrid (CPU + GPU / DSP) เบ—เบตเปˆเบกเบตเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบฎเปˆเบงเบกเบเบฑเบ™เปเบฅเบฐ vectorization (SIMD), เบกเบต. เบชเบทเบšเบ•เปเปˆ. เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เปเบฅเบฐเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ loops heterogeneous เปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ OpenMP. เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก OMP_TARGET_OFFLOAD.
  • เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ‚เบฐเบซเบ™เบฒเบ™ OpenACC 2.6 เบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ C, C++ เปเบฅเบฐ Fortran เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™ offloading เปƒเบ™ GPUs เปเบฅเบฐเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบžเบดเป€เบชเบ”เป€เบŠเบฑเปˆเบ™ NVIDIA PTX.
  • เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ C, เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆ โ€œno_stack_protectorโ€ เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบซเบกเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เป‰เบญเบ‡เบเบฑเบ™ stack เบšเปเปˆเบ„เบงเบ™เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰ (โ€œ-fstack-protectorโ€). เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "malloc" เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เบนเปˆเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ—เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เปเบฅเบฐเบเบฒเบ™เบ›เบปเบ”เบ›เปˆเบญเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ (เบœเบนเป‰เบˆเบฑเบ”เบชเบฑเบ™ / deallocator), เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบปเปˆเบงเป„เบ›เปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ (เบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบฅเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบปเบ”เบ›เปˆเบญเบ, เบเบฒเบ™เป‚เบ—เบชเบญเบ‡เบ„เบฑเป‰เบ‡เป„เบ›เบซเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบŸเบฃเบต, เปเบฅเบฐเบญเบทเปˆเบ™เป†) เปเบฅเบฐเปƒเบ™เบ„เปเบฒเป€เบ•เบทเบญเบ™ compiler โ€œ-Wmismatched-deallocโ€, โ€œ-Wmismatched-new-deleteโ€ เปเบฅเบฐ โ€œ-Wfree-nonheap-objectโ€, เปเบˆเป‰เบ‡เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ.
  • เบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบณเป€เบ•เบทเบญเบ™เปƒเปเปˆเบชเบณเบฅเบฑเบšเบžเบฒเบชเบฒ C:
    • "-wmismatched-dealloc" (เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™) - เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเปƒเบŠเป‰เบ•เบปเบงเบŠเบตเป‰เบ—เบตเปˆเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ.
    • "-Wsizeof-array-div" (เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป€เบกเบทเปˆเบญ "-Wall" เบ–เบทเบเบฅเบฐเบšเบธ) - เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบšเปˆเบ‡เบชเบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ–เป‰เบฒเบ•เบปเบงเบซเบฒเบ™เบšเปเปˆเบเบปเบ‡เบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบญเบฒเป€เบฃ.
    • "-Wstringop-overread" (เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™) - เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบชเบฐเบ•เบฃเบดเบ‡เบ—เบตเปˆเบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบ™เบญเบเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบญเบฒเป€เบฃ.
    • "-Wtsan" (เป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™) - เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” (เป€เบŠเบฑเปˆเบ™: std::atomic_thread_fence) เบ—เบตเปˆเบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเปƒเบ™ ThreadSanitizer.
    • โ€œ-Warray-parameterโ€ เปเบฅเบฐ โ€œ-Wvla-parameterโ€ (เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป€เบกเบทเปˆเบญเบฅเบฐเบšเบธ โ€œ-Wallโ€) - เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™ overriding functions with incompatible declarations of the incompatible with the fixed- and variable-length arrays.
    • เบเบฒเบ™เป€เบ•เบทเบญเบ™ "-Wuninitialized" เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบเบงเบ”เบžเบปเบšเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™เบˆเบฒเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบˆเบฑเบ”เบชเบฑเบ™เปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”เป„เบงเป‰.
    • เบ„เบณเป€เบ•เบทเบญเบ™ "-Wfree-nonheap-object" เบ‚เบฐเบซเบเบฒเบเบ„เบณเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบ–เบทเบเป€เบญเบตเป‰เบ™เบ”เป‰เบงเบเบ•เบปเบงเบŠเบตเป‰เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบœเปˆเบฒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง.
    • เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบž "-Wmaybe-uninitialized" เป„เบ”เป‰เบ‚เบฐเบซเบเบฒเบเบเบฒเบ™เบเบงเบ”เบžเบปเบšเบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบ•เบปเบงเบŠเบตเป‰เป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.
  • เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ C, เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆเบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเบนเปˆเปƒเบ™เบ‚เบญเบšเบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C2X เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ” (เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบเบเบฒเบ™เบฅเบฐเบšเบธ -std=c2x เปเบฅเบฐ -std=gnu2x): macros BOOL_MAX เปเบฅเบฐ BOOL_WIDTH, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบŠเบตเป‰เบšเบญเบเบŠเบทเปˆเบ‚เบญเบ‡เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ เบ„เปเบฒเบ™เบดเบเบฒเบก (เป€เบŠเบฑเปˆเบ™เปƒเบ™ C++), เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "[ [nodiscard]]", เป‚เบ•เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ preprocessor "__has_c_attribute", macros FLT_IS_IEC_60559, DBL_IS_IEC_60559, LDBL_IS_IEC_60559, __STDC_WANT_IEC_EXBAN_60559,SNITY,DBL_IS_IEC_XNUMX, , LDBL_SNAN, DEC_INFINITY เปเบฅเบฐ DEC _NAN, NaN=เบกเบฒเป‚เบ„เบฃเบชเบณเบฅเบฑเบš FloatN, _FloatNx เปเบฅเบฐ _DecimalN, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบฐเบšเบธเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเป‚เบ”เบ”เบเปˆเบญเบ™เบเบฒเบ™เบ›เบฐเบเบฒเบ” เปเบฅเบฐเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ„เบณเบ–เบฐเปเบซเบผเบ‡เบ›เบฐเบชเบปเบก.
  • เบชเปเบฒเบฅเบฑเบš C ++, เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ”เบดเบ”เบชเป‰เบฒเบ‡เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++ 20 เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบฅเบงเบกเบ—เบฑเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ virtual "consteval virtual", pseudo-destructors เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡เบงเบปเบ‡เบˆเบญเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบซเป‰เบญเบ‡เบฎเบฝเบ™ enum เปเบฅเบฐ. เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ array เปƒเบ™ "เปƒเบซเบกเปˆ" เบชเบฐเปเบ”เบ‡เบญเบญเบ.
  • เบชเปเบฒเบฅเบฑเบš C++, เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++23 เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ” (-std=c++23, -std=gnu++23, -std=c++2b, -std=gnu ++2เบ‚). เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ”เบฝเบงเบ™เบตเป‰เบกเบตเบเบฒเบ™เบชเบฐ เปœเบฑเบš เบชเบฐ เปœเบนเบ™ เบ•เบปเบงเบญเบฑเบเบชเบญเบ™ "zu" เบชเบณ เบฅเบฑเบšเบ„เปˆเบฒ size_t เบ—เบตเปˆเป€เบŠเบฑเบ™เปเบฅเป‰เบง.
  • libstdc++ เป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++17, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ™เปเบฒเบชเบฐเป€เปœเบตเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ” std::from_chars เปเบฅเบฐ std::to_chars เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบˆเบธเบ”เบฅเบญเบ. เบญเบปเบ‡เบ›เบฐเบเบญเบšเปƒเบซเบกเปˆเบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++20 เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบฅเบงเบกเบ—เบฑเบ‡ std::bit_cast, std::source_location, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบฅเปเบฒเบกเบฐเบ™เบนเบฅเปเบ–เป‰เบฒเปเบฅเบฐเปเบˆเป‰เบ‡เปƒเบซเป‰เบŠเบฒเบš, , , , , เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบญเบปเบ‡เบ›เบฐเบเบญเบš. เบ‚เบญเบ‡เบญเบฐเบ™เบฒเบ„เบปเบ” C++ เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ 23 (std::to_underlying, std::is_scoped_enum). เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ™ (SIMD, Data-Parallel Types). เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” std::uniform_int_distribution เป„เบ”เป‰เบ–เบทเบเป€เบฅเบฑเปˆเบ‡.
  • เบ–เบญเบ™เบ—เบธเบ‡เบ„เบธเบ™เบ™เบฐเบžเบฒเบš alpha เบญเบญเบเบˆเบฒเบ libgccjit, เบซเปเบชเบฐเบซเบกเบธเบ”เบ—เบตเปˆเปƒเบŠเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบฑเบ‡เบ•เบปเบงเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบญเบทเปˆเบ™เป†เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก JIT เบ‚เบญเบ‡ bytecode เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบซเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ. เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡ libgccjit เบชเปเบฒเบฅเบฑเบš MinGW.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ AArch64 Armv8-R (-march=armv8-r). เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ AArch64 เปเบฅเบฐ ARM, เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก (เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต -mcpu เปเบฅเบฐ -mtune): Arm Cortex-A78 (cortex-a78), Arm Cortex-A78AE (cortex-a78ae), Arm Cortex-A78C (cortex-a78c) , Arm Cortex- X1 (cortex-x1), Arm Neoverse V1 (neoverse-v1) เปเบฅเบฐ Arm Neoverse N2 (neoverse-n2). CPU Fujitsu A64FX (a64fx) เปเบฅเบฐ Arm Cortex-R82 (cortex-r82) เบเบฑเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบก, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐ AArch64.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Armv8.3-a (AArch64/AArch32), SVE (AArch64), SVE2 (AArch64) เปเบฅเบฐ MVE (AArch32 M-profile) SIMD เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป€เบžเบทเปˆเบญ autovectorize เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบšเบงเบ, เบเบฒเบ™เบซเบฑเบเบฅเบปเบš, เบเบฒเบ™เบ„เบนเบ™เปเบฅเบฐ variants เบ‚เบญเบ‡เบเบฒเบ™เบšเบงเบ / เบเบฒเบ™เบซเบฑเบเบฅเบปเบšเปƒเบ™เป„เบฅเบเบฐ. เบ•เบปเบงเป€เบฅเบเบŠเบฑเบšเบŠเป‰เบญเบ™. เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ autovectorization เบชเปเบฒเบฅเบฑเบš ARM เป‚เบ”เบเปƒเบŠเป‰เบŠเบธเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ MVE.
  • เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบต ARM, เบŠเบธเบ”เป€เบ•เบฑเบกเบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™ C เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™ (Intrinsics) เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰, เบ—เบปเบ”เปเบ—เบ™เป‚เบ”เบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ vector เบ‚เบฐเบซเบเบฒเบ (SIMD), เบเบงเบกเป€เบญเบปเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ NEON เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบ‚เบญเบ‡ ACLE Q3 2020.
  • เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ gfx908 GPU เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™ backend เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบš AMD GPUs เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ microarchitecture GCN.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเปƒเบซเบกเปˆเปเบฅเบฐเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบŠเบธเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเบกเปˆเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบžเบงเบเบกเบฑเบ™:
    • Intel Sapphire Rapids (-march=sapphirerapids, เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, SERIALIZE, PTWRITE, WAITPKG, TSXLDTRK, AMT-TILE, AMX-INTF8, AMX-INTF16 เปเบฅเบฐเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ
    • Intel Alderlake (-march=alderlake, เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, KEYLOCKER, AVX-VNNI เปเบฅเบฐเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ HRESET).
    • Intel Rocketlake (-march=rocketlake, เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš Rocket Lake เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ SGX).
    • AMD Zen 3 (-march=znver3).
  • เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš IA-32/x86-64 เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป‚เบ›เป€เบŠเบ”เป€เบŠเบต Intel, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเปƒเบซเบกเปˆ TSXLDTRK, SERIALIZE, HRESET, UINTRKEYLOCKER, AMX-TILE, AMX-INT8, AMX-BF16, AVX-VNNI เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบ—เบธเบ‡ "-march=x86-64-v[234]" เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเบฅเบฐเบ”เบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณ x86-64 (v2 - เบเบงเบกเป€เบญเบปเบฒเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ SSE4.2, SSSE3, POPCNT เปเบฅเบฐ CMPXCHG16B; v3 - AVX2 เปเบฅเบฐ MOVBE; v4 - AVX-512 ).
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš RISC-V เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡ byte เปƒเบซเบเปˆ. เป€เบžเบตเปˆเบกเบ•เบปเบงเป€เบฅเบทเบญเบ "-misa-spec=*" เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเป€เบงเบตเบŠเบฑเบ™เบ‚เบญเบ‡เบŠเบธเบ”เบ„เบณเบชเบฑเปˆเบ‡ RISC-V เบชเบฐเป€เบžเบฒเบฐเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณ. เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš AddressSanitizer เปเบฅเบฐเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ stack เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ canary tags.
  • เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡เบ‚เบญเบ‡ "-fanalyzer" เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบชเบฐเบ–เบดเบ”, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบงเปˆเบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเบ‚เบธเป‰เบ™เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เป‚เบซเบกเบ”เบชเบฒเบกเบฒเบ”เบเบงเบ”เบžเบปเบšเบšเบฑเบ™เบซเบฒเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เป‚เบ—เบชเบญเบ‡เบ„เบฑเป‰เบ‡เป„เบ›เบซเบฒ free() function เบชเปเบฒเบฅเบฑเบšเบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เบถเปˆเบ‡, เบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบฅ descriptor เป„เบŸเบฅเปŒ, dereferencing เปเบฅเบฐ passing null pointers, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ block memory freed, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปˆเบฒ uninitialized, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เปƒเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เปƒเบซเบกเปˆโ€‹:
    • เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เบ„เบทเบ™เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เบšเบฑเบ™เบซเบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเบฐเปเบเบ™เป„เบŸเบฅเปŒ C เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚.
    • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš C++ เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™.
    • เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณ เปเบฅเบฐเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เปเบกเปˆเบ™เบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™เบˆเบฒเบเปœเป‰เบฒเบ—เบตเปˆเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡ malloc เปเบฅเบฐเบŸเบฃเบต, เปเบฅเบฐเบ•เบญเบ™เบ™เบตเป‰เบฎเบญเบ‡เบฎเบฑเบšเปƒเปเปˆ/เบฅเบถเบš เปเบฅเบฐเปƒเปเปˆ[]/delete[].
    • เป€เบžเบตเปˆเบกเบ„เปเบฒเป€เบ•เบทเบญเบ™เปƒเบซเบกเปˆ: -Wanalyzer-shift-count-negative, -Wanalyzer-shift-count-overflow, -Wanalyzer-write-to-const เปเบฅเบฐ -Wanalyzer-write-to-string-literal.
    • เป€เบžเบตเปˆเบกเบ•เบปเบงเป€เบฅเบทเบญเบเบเบฒเบ™เบ”เบตเบšเบฑเบเปƒเปเปˆ -fdump-analyzer-json เปเบฅเบฐ -fno-analyzer-feasibility.
    • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเบœเปˆเบฒเบ™ plugins เบชเปเบฒเบฅเบฑเบš GCC เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ” (เบ•เบปเบงเบขเปˆเบฒเบ‡, plugin เป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบฅเบฑเบญเบเบ—เบปเปˆเบงเป‚เบฅเบ (GIL) เปƒเบ™ CPython).

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

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