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

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

เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปƒเบ™ Clang 12.0:

  • เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "เบญเบฒเบ”เบˆเบฐ" เปเบฅเบฐ "เบšเปเปˆเบซเบ™เป‰เบฒเบˆเบฐเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰" เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++ 20 เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเบฐเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปƒเบซเป‰เบœเบนเป‰เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ—เบตเปˆเบ–เบทเบเบเบฐเบ•เบธเป‰เบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, "[[เบญเบฒเบ”เบˆเบฐ. ]] เบ–เป‰เบฒ (เบชเบธเปˆเบก > 0) {โ€œ).
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš AMD Zen 3 (-march=znver3), Intel Alder Lake (-march=alderlake) เปเบฅเบฐเป‚เบ›เป€เบŠเบ”เป€เบŠเบต Intel Sapphire Rapids (-march=sapphirerapids).
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบ—เบธเบ‡ "-march=x86-64-v[234]" เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเบฅเบฐเบ”เบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณ x86-64 (v2 - เบเบงเบกเป€เบญเบปเบฒเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ SSE4.2, SSSE3, POPCNT เปเบฅเบฐ CMPXCHG16B; v3 - AVX2 เปเบฅเบฐ MOVBE; v4 - AVX-512 ).
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš Arm Cortex-A78C (cortex-a78c), Arm Cortex-R82 (cortex-r82), Arm Neoverse V1 (neoverse-v1), Arm Neoverse N2 (neoverse-n2) เปเบฅเบฐ Fujitsu A64FX (a64fx). เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเปเบฒเบฅเบฑเบš CPUs Neoverse-V1, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ” "-mcpu = neoverse-v1".
  • เบชเบณเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณ AArch64, เบ—เบธเบ‡ compiler เปƒเปเปˆ "-moutline-atomics" เปเบฅเบฐ "-mno-outline-atomics" เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เป€เบ›เบตเบ” เบซเบผเบทเบ›เบดเบ”เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบ•เบปเบงเบŠเปˆเบงเบเบเบฒเบ™เบ”เบณเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ›เบฐเบฅเปเบฒเบกเบฐเบ™เบน เป€เบŠเบฑเปˆเบ™: "__aarch64_cas8_relax". เบŸเบฑเบ‡เบŠเบฑเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบงเบ”เบžเบปเบšเปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™เบšเปเปˆเบงเปˆเบฒเบˆเบฐเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ LSE (เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบฅเบฐเบšเบปเบšเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ) เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบ›เบฐเบฅเปเบฒเบกเบฐเบ™เบนเบ—เบตเปˆเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบซเบผเบทเบเบฑเบšเบ„เบทเบ™เป„เบ›เปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ LL/SC (Load-link/store-conditional) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ synchronization.
  • เป€เบžเบตเปˆเบกเบ•เบปเบงเป€เบฅเบทเบญเบ "-fbinutils-version" เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเป€เบงเบตเบŠเบฑเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบŠเบธเบ” binutils เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบเบปเปˆเบฒเปเบฅเบฐเบžเบถเบ”เบ•เบดเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ›เบฐเบเบญเบš.
  • เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒเบ›เบฐเบ•เบดเบšเบฑเบ” ELF, เป€เบกเบทเปˆเบญเบ—เบธเบ‡ "-gz" เบ–เบทเบเบฅเบฐเบšเบธ, เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบ”เบตเบšเบฑเบเป‚เบ”เบเปƒเบŠเป‰เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” zlib เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ (gz=zlib). เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบงเบฑเบ”โ€‹เบ–เบธโ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™ lld เบซเบผเบท GNU binutils 2.26+โ€‹. เป€เบžเบทเปˆเบญเบŸเบทเป‰เบ™เบŸเบนเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš binutils เบฎเบธเปˆเบ™เป€เบเบปเปˆเบฒ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธ "-gz=zlib-gnu".
  • เบ•เบญเบ™เบ™เบตเป‰เบ•เบปเบงเบŠเบตเป‰ 'เบ™เบตเป‰' เบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ”เป‰เบงเบเบเบฒเบ™เบเบงเบ”เบชเบญเบš nonnull เปเบฅเบฐ dereferenceable(N). เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ nonnnull, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰เบ„เปˆเบฒ NULL, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบ "-fdelete-null-pointer-checks".
  • เปƒเบ™เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Linux, เบฎเบนเบšเปเบšเบš "-fasynchronous-unwind-tables" เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ AArch64 เปเบฅเบฐ PowerPC เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เป‚เบ—เปเบšเบš unwind, เป€เบŠเบฑเปˆเบ™เปƒเบ™ GCC.
  • เปƒเบ™ "#pragma clang loop vectorize_width" เป„เบ”เป‰เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบ "เบ„เบปเบ‡เบ—เบตเปˆ" (เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™) เปเบฅเบฐ "scalable" เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเบงเบดเบ—เบตเบเบฒเบ™ vectorization. เป‚เบซเบกเบ” "scalable", เป€เบญเบเบฐเบฅเบฒเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบเบฒเบง vector, เปเบกเปˆเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฎเบฒเบ”เปเบงเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ vectorization เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰.
  • เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Windows: เบเบฒเบ™เบ›เบฐเบเบญเบšเบ„เบนเปˆเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบš Windows เปƒเบ™เบฅเบฐเบšเบปเบš Arm64 เป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบก, เบฅเบงเบกเบ—เบฑเบ‡ Clang compiler, LLD linker เปเบฅเบฐ compiler-rt runtime libraries. เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบตเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ MinGW, เบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบ .exe เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบก, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบ‚เป‰เบฒเบก.
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ OpenCL, OpenMP เปเบฅเบฐ CUDA เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบ. เป€เบžเบตเปˆเบกเบ•เบปเบงเป€เบฅเบทเบญเบ "-cl-std=CL3.0" เปเบฅเบฐ "-cl-std=CL1.0" เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเบ•เบปเบงเป€เบฅเบทเบญเบเบกเบฐเบซเบฒเบžเบฒเบเบชเบณเบฅเบฑเบš OpenCL 3.0 เปเบฅเบฐ OpenCL 1.0. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบ.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ HRESET, UINTR, เปเบฅเบฐ AVXVNNI เบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบšเบฒเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ x86.
  • เปƒเบ™เบฅเบฐเบšเบปเบš x86, เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš "-mtune=" เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบกเปˆเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™, เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ microarchitectural เบ—เบตเปˆเป€เบฅเบทเบญเบเป‚เบ”เบเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡ "-march=" เบ„เปˆเบฒ.
  • เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบšเบฒเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ POSIX เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบตเบกเบนเบ™เบ„เปˆเบฒเบชเบฑเบ™เบเบฒเบฅเบฑเบเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบš. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเบซเบกเปˆเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก: fuchia.HandleChecker (เบเปเบฒเบ™เบปเบ” handles เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡), webkit.UncountedLambdaCapturesChecker webkit เปเบฅเบฐ alpha.webkit.UncountedLocalVarsChecker (เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡ peculiarities เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš pointers เปƒเบ™เบฅเบฐเบซเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ WebKit).
  • เปƒเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบšเปเบฅเบดเบšเบปเบ”เบ‚เบญเบ‡เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ, เบเบฒเบ™เปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เปƒเบ™ __builtin_bitreverse*, __builtin_rotateleft*, __builtin_rotateright*, _mm_popcnt*, _bit_scan_forward, __bsfd, __bsfq, _bs_r, _bs, _bs, _bs, _bs, _bsfq, _bs_b, __bswapd, __bswap64, __ เปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ” bswapq , _castf*, __rol* เปเบฅเบฐ __ror*.
  • เป„เบ”เป‰เป€เบžเบตเปˆเบกเบ—เบฒเบ‡เป€เบฅเบทเบญเบ BitFieldColonSpacing เปƒเบซเป‰เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปƒเบŠเป‰เบฎเบนเบšเปเบšเบš clang เป€เบžเบทเปˆเบญเป€เบฅเบทเบญเบเป„เบฅเบเบฐเบซเปˆเบฒเบ‡เบฎเบญเบšเบ•เบปเบงเบฅเบฐเบšเบธ, เบ–เบฑเบ™ เปเบฅเบฐเบ„เบณเบ™เบดเบเบฒเบกเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™.
  • เป€เบŠเบตเบšเป€เบงเบต clangd caching (Clang Server) เปƒเบ™เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Linux เป„เบ”เป‰เบซเบผเบธเบ”เบฅเบปเบ‡เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เปƒเบ™เป„เบฅเบเบฐเบเบฒเบง (เบเบฒเบ™เป‚เบ—เบซเบฒเปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐเป€เบžเบทเปˆเบญ malloc_trim เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบเบฑเบšเบซเบ™เป‰เบฒเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบŸเบฃเบตเบเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™).

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

  • เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ llvm-build เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Python เป„เบ”เป‰เบ–เบทเบเบขเบธเบ”เป€เบŠเบปเบฒ, เปเบฅเบฐเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป‚เบ„เบ‡เบเบฒเบ™เป„เบ”เป‰เบ›เปˆเบฝเบ™เป„เบ›เปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ CMake เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™.
  • เปƒเบ™ backend เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐ AArch64, เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Windows เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡: เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ•เบปเบงเบ›เบฐเบเบญเบšเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบš Windows เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเป„เบ”เป‰เบ–เบทเบเบฎเบฑเบšเบ›เบฐเบเบฑเบ™, เบเบฒเบ™เบœเบฐเบฅเบดเบ”เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบเบฒเบ™เป‚เบ— unwind เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เบ”เบตเบ—เบตเปˆเบชเบธเบ” (เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡ 60. %), เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™ unwind เป‚เบ”เบเปƒเบŠเป‰ assembler เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ .seh_*.
  • Backend เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ PowerPC เบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบš loops เปเบฅเบฐ inline deployment, เบ‚เบฐเบซเบเบฒเบเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ›เป€เบŠเบ”เป€เบŠเบต Power10, เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ MMA เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบซเบกเบนเบ™เปƒเบŠเป‰ matrix, เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ AIX.
  • x86 backend เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป‚เบ›เป€เบŠเบ”เป€เบŠเบต AMD Zen 3, Intel Alder Lake เปเบฅเบฐ Intel Sapphire Rapids, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบต HRESET, UINTR เปเบฅเบฐ AVXVNNI. เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ MPX (เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ•เบปเบงเบŠเบตเป‰เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบšเปเปˆเบ–เบทเบเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ (เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบ™เบตเป‰เบšเปเปˆเปเบœเปˆเบซเบผเบฒเบเปเบฅเบฐเป„เบ”เป‰เบ–เบทเบเป‚เบเบเบเป‰เบฒเบเบญเบญเบเบˆเบฒเบ GCC เปเบฅเบฐ clang). เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฑเบšเบ•เบปเบงเบ›เบฐเบเบญเบšเบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบ™เปเบฒเบซเบ™เป‰เบฒ {disp32} เปเบฅเบฐ {disp8} เปเบฅเบฐเบ„เปเบฒเบ•เปเปˆเบ—เป‰เบฒเบ .d32 เปเบฅเบฐ .d8 เป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ operand offsets เปเบฅเบฐ jumps. เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆ "tune-cpu" เป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบ.
  • เป‚เปเบ”เปƒเปเปˆ โ€œ-fsanitize=unsigned-shift-baseโ€ เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆเป€เบ„เบทเปˆเบญเบ‡เบเบงเบ”เบซเบฒเบšเบฑเบ™เบซเบฒเบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบก (integer sanitizer, โ€œ-fsanitize=integerโ€) เป€เบžเบทเปˆเบญเบเบงเบ”เบซเบฒเบเบฒเบ™เบฅเบปเป‰เบ™เบ‚เบญเบ‡เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เป€เบŠเบฑเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เปˆเบฝเบ™เป„เบ›เบ—เบฒเบ‡เบŠเป‰เบฒเบเป€เบฅเบฑเบเบ™เป‰เบญเบ.
  • เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบเบงเบ”เบˆเบฑเบšเบ•เปˆเบฒเบ‡เป† (asan, cfi, lsan, msan, tsan, ubsan sanitizer) เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบ Linux เบเบฑเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” Musl เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบก.
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ LLD เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบ. เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเปเบšเบš ELF, เบฅเบงเบกเบ—เบฑเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบžเบตเปˆเบก "--dependency-file", "-error-handling-script", "-lto-pseudo-probe-for-profiling", "-no-lto-whole-program - เบเบฒเบ™โ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เป€เบซเบฑเบ™ "" เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ MinGW. เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเปเบšเบš Mach-O (macOS), เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณ arm64, arm, เปเบฅเบฐ i386, เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ (LTO), เปเบฅเบฐ stack unwinding เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”.
  • Libc++ เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆเบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++20 เปเบฅเบฐเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบชเบฐเป€เบžเบฒเบฐ C++2b. เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ”เป‰เบงเบเบเบฒเบ™เบ›เบดเบ”เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ (โ€œ-DLIBCXX_ENABLE_LOCALIZATION=OFFโ€) เปเบฅเบฐเบญเบธเบ›เบฐเบเบญเบ™เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบก (โ€œ-DLIBCXX_ENABLE_RANDOM_DEVICE=OFFโ€).

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

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