LLVM 12.0 рдХрдВрдкрд╛рдпрд▓рд░ рд╕реВрдЯрдЪреЗ рдкреНрд░рдХрд╛рд╢рди

рд╕рд╣рд╛ рдорд╣рд┐рдиреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдирдВрддрд░, LLVM 12.0 рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ - рдПрдХ GCC-рд╕реБрд╕рдВрдЧрдд рдЯреВрд▓рдХрд┐рдЯ (рдХрдВрдкрд╛рдпрд▓рд░, рдСрдкреНрдЯрд┐рдорд╛рдпрдЭрд░реНрд╕ рдЖрдгрд┐ рдХреЛрдб рдЬрдирд░реЗрдЯрд░) рдЬреЗ RISC-рд╕рд╛рд░рдЦреНрдпрд╛ рдЖрднрд╛рд╕реА рд╕реВрдЪрдирд╛рдВрдЪреНрдпрд╛ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдмрд┐рдЯрдХреЛрдбрдордзреНрдпреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ (рдПрдХ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЖрднрд╛рд╕реА рдорд╢реАрди рдмрд╣реБ-рд╕реНрддрд░реАрдп рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо). рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓рд╛ рд╕реНрдпреВрдбреЛрдХреЛрдб JIT рдХрдВрдкрд╛рдпрд▓рд░ рд╡рд╛рдкрд░реВрди рдкреНрд░реЛрдЧреНрд░рд╛рдордЪреНрдпрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреНрдпрд╛ рд╡реЗрд│реА рдереЗрдЯ рдорд╢реАрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рдХреНрд▓реЕрдВрдЧ 12.0 рдордзреНрдпреЗ рд╕реБрдзрд╛рд░рдгрд╛:

  • C++20 рдорд╛рдирдХрд╛рдордзреНрдпреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ "рд╕рдВрднрд╛рд╡реНрдп" рдЖрдгрд┐ "рд╕рдВрднрд╛рд╡реНрдп" рд╡рд┐рд╢реЗрд╖рддрд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭрд░рд▓рд╛ рд╕рд╢рд░реНрдд рдмрд╛рдВрдзрдХрд╛рдо рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рдВрднрд╛рд╡реНрдпрддреЗрдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рджрд┐рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "[[рд╕рдВрднрд╛рд╡реНрдпрддрд╛ ]] рдЬрд░ (рдпрд╛рджреГрдЪреНрдЫрд┐рдХ > 0) {тАЬ).
  • AMD Zen 3 (-march=znver3), Intel Alder Lake (-march=alderlake) рдЖрдгрд┐ Intel Sapphire Rapids (-march=sapphirerapids) рдкреНрд░реЛрд╕реЗрд╕рд░рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • x86-64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реНрддрд░ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА "-march=x234-86-v[64]" рдлреНрд▓реЕрдЧрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ (v2 - SSE4.2, SSSE3, POPCNT рдЖрдгрд┐ CMPXCHG16B рд╡рд┐рд╕реНрддрд╛рд░; v3 - AVX2 рдЖрдгрд┐ MOVBE; v4 - AVX-512 рдХрд╡реНрд╣рд░ рдХрд░рддреЗ ) .
  • рдЖрд░реНрдо рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдПренреорд╕реА (рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдПренреорд╕реА), рдЖрд░реНрдо рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдЖрд░реореи (рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдЖрд░реореи), рдЖрд░реНрдо рдирд┐рдУрд╡рд░реНрд╕ рд╡реНрд╣реАрез (рдирд┐рдУрд╡рд░реНрд╕-рд╡реНрд╣реАрез), рдЖрд░реНрдо рдирд┐рдУрд╡рд░реНрд╕ рдПрдиреи (рдирд┐рдУрд╡рд░реНрд╕-рдПрдиреи) рдЖрдгрд┐ рдлреБрдЬрд┐рддреНрд╕реВ рдПремрекрдПрдлрдПрдХреНрд╕ (рдПремрекрдПрдлрдПрдХреНрд╕) рдкреНрд░реЛрд╕реЗрд╕рд░рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Neoverse-V78 CPU рд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА тАЬ-mcpu=neoverse-v78тАЭ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛.
  • AArch64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА, "__aarch64_cas8_relax" рд╕рд╛рд░рдЦреА рдЕрдгреБ рдСрдкрд░реЗрд╢рди рд╣реЗрд▓реНрдкрд░ рдлрдВрдХреНрд╢рдиреНрд╕ рд╕рдХреНрд╖рдо рдХрд┐рдВрд╡рд╛ рдЕрдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди рдХрдВрдкрд╛рдЗрд▓рд░ рдзреНрд╡рдЬ "-moutline-atomics" рдЖрдгрд┐ "-mno-outline-atomics" рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд. рдЕрд╢реА рдлрдВрдХреНрд╢рдиреНрд╕ рд░рдирдЯрд╛рдЗрдордордзреНрдпреЗ LSE (рд▓рд╛рд░реНрдЬ рд╕рд┐рд╕реНрдЯрдо рдПрдХреНрд╕реНрдЯреЗрдВрд╢рдиреНрд╕) рд╕рдорд░реНрдерди рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдУрд│рдЦрддрд╛рдд рдЖрдгрд┐ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЕрдгреБ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реВрдЪрдирд╛ рд╡рд╛рдкрд░рддрд╛рдд рдХрд┐рдВрд╡рд╛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭреЗрд╢рдирд╕рд╛рдареА LL/SC (рд▓реЛрдб-рд▓рд┐рдВрдХ/рд╕реНрдЯреЛрдЕрд░-рдХрдВрдбрд┐рд╢рдирд▓) рд╕реВрдЪрдирд╛ рд╡рд╛рдкрд░рддрд╛рдд.
  • рдЬреБрдиреНрдпрд╛ рд▓рд┐рдВрдХрд░ рдЖрдгрд┐ рдЕрд╕реЗрдВрдмрд▓рд░ рд╡рд░реНрддрдирд╛рд╕рд╣ рд╕реБрд╕рдВрдЧрддрддреЗрд╕рд╛рдареА binutils рд╕реВрдЯрдЪреА рд▓рдХреНрд╖реНрдп рдЖрд╡реГрддреНрддреА рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА "-fbinutils-version" рдкрд░реНрдпрд╛рдп рдЬреЛрдбрд▓рд╛.
  • ELF рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдлрд╛рдЗрд▓реНрд╕рд╕рд╛рдареА, рдЬреЗрд╡реНрд╣рд╛ "-gz" рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рддреЗрд╡реНрд╣рд╛ zlib рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░реВрди рдбреАрдмрдЧрд┐рдВрдЧ рдорд╛рд╣рд┐рддреАрдЪреЗ рдХреЙрдореНрдкреНрд░реЗрд╢рди рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рддреЗ (gz=zlib). рдкрд░рд┐рдгрд╛рдореА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реНрд╕ рд▓рд┐рдВрдХ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА lld рдХрд┐рдВрд╡рд╛ GNU binutils 2.26+ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. binutils рдЪреНрдпрд╛ рдЬреБрдиреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрд╕рд╣ рд╕реБрд╕рдВрдЧрддрддрд╛ рдкреБрдирд░реНрд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА "-gz=zlib-gnu" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛.
  • 'рд╣рд╛' рдкреЙрдЗрдВрдЯрд░ рдЖрддрд╛ рдиреЙрдирдирд▓ рдЖрдгрд┐ рдбрд┐рд░реЗрдлрд░реЗрдиреНрд╕реЗрдмрд▓(N) рдЪреЗрдХрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реА рдЖрд╣реЗ. рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ NULL рдореВрд▓реНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓ рддреЗрд╡реНрд╣рд╛ nonnull рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА "-fdelete-null-pointer-checks" рдкрд░реНрдпрд╛рдп рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛.
  • Linux рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░, "-fasynchronous-unwind-tables" рдореЛрдб AArch64 рдЖрдгрд┐ PowerPC рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА GCC рдкреНрд░рдорд╛рдгреЗ рдЕрдирд╡рд╛рдЗрдВрдб рдХреЙрд▓ рдЯреЗрдмрд▓реНрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдХреНрд╖рдо рдХреЗрд▓рд╛ рдЖрд╣реЗ.
  • "#pragma clang loop vectorize_width" рдордзреНрдпреЗ рд╡реЗрдХреНрдЯрд░рд╛рдпрдЭреЗрд╢рди рдкрджреНрдзрдд рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА "рдлрд┐рдХреНрд╕реНрдб" (рдбрд┐рдлреЙрд▓реНрдЯ) рдЖрдгрд┐ "рд╕реНрдХреЗрд▓реЗрдмрд▓" рдкрд░реНрдпрд╛рдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА рдЖрд╣реЗ. "рд╕реНрдХреЗрд▓реЗрдмрд▓" рдореЛрдб, рд╡реЗрдХреНрдЯрд░ рд▓рд╛рдВрдмреАрдкрд╛рд╕реВрди рд╕реНрд╡рддрдВрддреНрд░, рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдЖрд╣реЗ рдЖрдгрд┐ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╡реНрд╣реЗрдХреНрдЯрд░рд╛рдпрдЭреЗрд╢рдирд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд▒реНрдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рд╡рд░ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.
  • рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рд╕рдорд░реНрдерди: рдЖрд░реНрдо 64 рд╕рд┐рд╕реНрдЯрдорд╡рд░реАрд▓ рд╡рд┐рдВрдбреЛрдЬрд╕рд╛рдареА рдЕрдзрд┐рдХреГрдд рдмрд╛рдпрдирд░реА рдЕрд╕реЗрдВрдмреНрд▓реА рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд, рдЬреНрдпрд╛рдордзреНрдпреЗ рдХреНрд▓реЕрдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░, рдПрд▓рдПрд▓рдбреА рд▓рд┐рдВрдХрд░ рдЖрдгрд┐ рдХрдВрдкрд╛рдЗрд▓рд░-рдЖрд░рдЯреА рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдпрдмреНрд░рд░реАрдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ. MinGW рд▓рдХреНрд╖реНрдп рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, .exe рдкреНрд░рддреНрдпрдп рдЬреЛрдбрд▓рд╛ рдЬрд╛рддреЛ, рдЕрдЧрджреА рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд┐рдВрдЧ рдХрд░рддрд╛рдирд╛.
  • OpenCL, OpenMP рдЖрдгрд┐ CUDA рдЪреНрдпрд╛ рд╕рдорд░реНрдердирд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╖рдорддрд╛рдВрдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ. OpenCL 3.0 рдЖрдгрд┐ OpenCL 1.0 рд╕рд╛рдареА рдореЕрдХреНрд░реЛ рдкрд░реНрдпрд╛рдп рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА "-cl-std=CL3.0" рдЖрдгрд┐ "-cl-std=CL1.0" рдкрд░реНрдпрд╛рдп рдЬреЛрдбрд▓реЗ. рдирд┐рджрд╛рди рд╕рд╛рдзрдирд╛рдВрдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ.
  • рдХрд╛рд╣реА x86-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░рдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реНрдпрд╛ HRESET, UINTR, рдЖрдгрд┐ AVXVNNI рд╕реВрдЪрдирд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ.
  • x86 рдкреНрд░рдгрд╛рд▓реАрдВрд╡рд░, "-mtune=" рдкрд░реНрдпрд╛рдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЖрд╣реЗ, "-march=" рдореВрд▓реНрдпрд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░реВрди рдирд┐рд╡рдбрдХ рдорд╛рдпрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕рдХреНрд╖рдо рдХрд░рддреЗ.
  • рд╕реНрдЯреЕрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╛рдиреЗ рдХрд╛рд╣реА POSIX рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрдзрд╛рд░рд▓реА рдЖрд╣реЗ рдЖрдгрд┐ рддреБрд▓рдирд╛рдордзреНрдпреЗ рдЕрдиреЗрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдореВрд▓реНрдпреЗ рдЕрд╕рддрд╛рдирд╛ рд╕рд╢рд░реНрдд рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рдкрд░рд┐рдгрд╛рдорд╛рдЪреЗ рдирд┐рд░реНрдзрд╛рд░рдг рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╕реБрдзрд╛рд░рд▓реЗ рдЖрд╣реЗ. рдирд╡реАрди рдЪреЗрдХ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд: fuchia.HandleChecker (рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕рдордзреНрдпреЗ рд╣рдБрдбрд▓ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ), webkit.UncountedLambdaCapturesChecker рд╡реЗрдмрдХрд┐рдЯ рдЖрдгрд┐ alpha.webkit.UncountedLocalVarsChecker (рд╡реЗрдмрдХрд┐рдЯ рдЗрдВрдЬрд┐рди рдХреЛрдбрдордзреАрд▓ рдкреЙрдЗрдВрдЯрд░реНрд╕рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддреЗ).
  • рд╕реНрдерд┐рд░рд╛рдВрдХрд╛рдВрдЪреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рдд рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдВрдордзреНрдпреЗ, рдЕрдВрдЧрднреВрдд рдлрдВрдХреНрд╢рдиреНрд╕рдЪрд╛ рд╡рд╛рдкрд░ __builtin_bitreverse*, __builtin_rotateleft*, __builtin_rotateright*, _mm_popcnt*, _bit_scan_forward, __bsfd, __bsfq, __bit_scan_reverse, wap__bs__rd, wap64 XNUMX, __ bswapq рд▓рд╛ рдЕрдиреБрдорддреА рдЖрд╣реЗ , _castf*, __rol* рдЖрдгрд┐ __ror*.
  • рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ, рд╕реНрддрдВрдн рдЖрдгрд┐ рдлреАрд▓реНрдб рд╡реНрдпрд╛рдЦреНрдпрд╛рдВрднреЛрд╡рддреАрдЪреЗ рдЕрдВрддрд░ рдирд┐рд╡рдбрдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд▓реЕрдВрдЧ-рдлреЙрд░реНрдореЗрдЯ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдордзреНрдпреЗ рдмрд┐рдЯрдлрд┐рд▓реНрдбрдХреЛрд▓рдирд╕реНрдкреЗрд╕рд┐рдВрдЧ рдкрд░реНрдпрд╛рдп рдЬреЛрдбрд▓рд╛.
  • рд▓рд┐рдирдХреНрд╕ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╡рд░реАрд▓ рдХреНрд▓реЕрдВрдЧрдб рдХреЕрд╢рд┐рдВрдЧ рд╕рд░реНрд╡реНрд╣рд░ (рдХреНрд▓реЕрдВрдЧ рд╕рд░реНрд╡реНрд╣рд░) рдиреЗ рджреАрд░реНрдШрдХрд╛рд▓реАрди рдСрдкрд░реЗрд╢рди рджрд░рдореНрдпрд╛рди рдореЗрдорд░реА рд╡рд╛рдкрд░ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рдХрдореА рдХреЗрд▓рд╛ рдЖрд╣реЗ (рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдорд▓рд╛ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдореЗрдорд░реА рдкреГрд╖реНрдареЗ рдкрд░рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА malloc_trim рд▓рд╛ рдирд┐рдпрддрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд).

LLVM 12.0 рдордзреАрд▓ рдкреНрд░рдореБрдЦ рдирд╡рдХрд▓реНрдкрдирд╛:

  • Python рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛ llvm-build рдмрд┐рд▓реНрдб рдЯреВрд▓рд╕рд╛рдареА рд╕рдорд░реНрдерди рдмрдВрдж рдХреЗрд▓реЗ рдЖрд╣реЗ, рдЖрдгрд┐ рддреНрдпрд╛рдРрд╡рдЬреА рдкреНрд░рдХрд▓реНрдк рдкреВрд░реНрдгрдкрдгреЗ CMake рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрд╡рд┐рдЪ рдХреЗрд▓рд╛ рдЖрд╣реЗ.
  • AArch64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рдмреЕрдХрдПрдВрдбрдордзреНрдпреЗ, рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рд╕рдорд░реНрдерди рд╕реБрдзрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ: рд▓рдХреНрд╖реНрдпрд┐рдд рд╡рд┐рдВрдбреЛрдЬ рд╕рд┐рд╕реНрдЯрдорд╕рд╛рдареА рдЕрд╕реЗрдВрдмрд▓рд░ рдЖрдЙрдЯрдкреБрдЯрдЪреА рдпреЛрдЧреНрдп рдирд┐рд░реНрдорд┐рддреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЕрдирд╡рд╛рдЗрдВрдб рдХреЙрд▓реНрд╕рд╡рд░реАрд▓ рдбреЗрдЯрд╛рдЪреА рдирд┐рд░реНрдорд┐рддреА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ (рдЕрд╢рд╛ рдбреЗрдЯрд╛рдЪрд╛ рдЖрдХрд╛рд░ 60 рдиреЗ рдХрдореА рдХреЗрд▓рд╛ рдЖрд╣реЗ. %), рдЕрд╕реЗрдВрдмрд▓рд░ рд╡рд╛рдкрд░реВрди рдЕрдирд╡рд╛рдЗрдВрдб рдбреЗрдЯрд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ .seh_* рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрдгреНрдпрд╛рдд рдЖрд▓реА рдЖрд╣реЗ.
  • рдкреЙрд╡рд░рдкреАрд╕реА рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рдмреЕрдХрдПрдВрдбрдордзреНрдпреЗ рд▓реВрдк рдЖрдгрд┐ рдЗрдирд▓рд╛рдЗрди рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯрд╕рд╛рдареА рдирд╡реАрди рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди, рдкреЙрд╡рд░10 рдкреНрд░реЛрд╕реЗрд╕рд░рд╕рд╛рдареА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдорд░реНрдерди, рдореЕрдЯреНрд░рд┐рдХреНрд╕ рдореЕрдирд┐рдкреБрд▓реЗрд╢рдирд╕рд╛рдареА MMA рд╕реВрдЪрдирд╛рдВрд╕рд╛рдареА рдЬреЛрдбрд▓реЗрд▓реЗ рд╕рдорд░реНрдерди рдЖрдгрд┐ AIX рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдорд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рд╕рдорд░реНрдерди рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ.
  • x86 рдмреЕрдХрдПрдВрдб AMD Zen 3, Intel Alder Lake рдЖрдгрд┐ Intel Sapphire Rapids рдкреНрд░реЛрд╕реЗрд╕рд░, рддрд╕реЗрдЪ HRESET, UINTR рдЖрдгрд┐ AVXVNNI рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реВрдЪрдирд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрддреЗ. рдореЗрдорд░реА рд╕реАрдорд╛ рдпрд╛рдкреБрдвреЗ рд╕рдорд░реНрдерд┐рдд рдирд╛рд╣реАрдд рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреЙрдЗрдВрдЯрд░ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА MPX (рдореЗрдорд░реА рд╕рдВрд░рдХреНрд╖рдг рд╡рд┐рд╕реНрддрд╛рд░) рд╕рд╛рдареА рд╕рдорд░реНрдерди (рд╣реЗ рддрдВрддреНрд░рдЬреНрдЮрд╛рди рд╡реНрдпрд╛рдкрдХ рдирд╛рд╣реА рдЖрдгрд┐ GCC рдЖрдгрд┐ clang рдордзреВрди рдЖрдзреАрдЪ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ). рдСрдкрд░реЗрдВрдб рдСрдлрд╕реЗрдЯ рдЖрдгрд┐ рдЬрдВрдкрдЪрд╛ рдЖрдХрд╛рд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА {disp32} рдЖрдгрд┐ {disp8} рдЙрдкрд╕рд░реНрдЧ рдЖрдгрд┐ .d32 рдЖрдгрд┐ .d8 рдкреНрд░рддреНрдпрдпрд╛рдВрд╕рд╛рдареА рдЕрд╕реЗрдВрдмрд▓рд░рд▓рд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. рдорд╛рдпрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд▓ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "рдЯреНрдпреВрди-рд╕реАрдкреАрдпреВ" рд╣реА рдирд╡реАрди рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд▓реА.
  • рдПрдХ рдирд╡реАрди рдореЛрдб тАЬ-fsanitize=unsigned-shift-baseтАЭ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░реЙрдмреНрд▓реЗрдо рдбрд┐рдЯреЗрдХреНрдЯрд░рдордзреНрдпреЗ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ (рдкреВрд░реНрдгрд╛рдВрдХ рд╕реЕрдирд┐рдЯрд╛рдпрдЭрд░, тАЬ-fsanitize=integerтАЭ) рдереЛрдбреЗрд╕реЗ рдбрд╛рд╡реАрдХрдбреЗ рд╢рд┐рдлреНрдЯ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЕрд╕реНрд╡рд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХрд╛рдВрдЪреЗ рдУрд╡реНрд╣рд░рдлреНрд▓реЛ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА.
  • рд╡рд┐рд╡рд┐рдз рдбрд┐рдЯреЗрдХреНрдЯрд░реНрд╕рдордзреНрдпреЗ (asan, cfi, lsan, msan, tsan, ubsan sanitizer) рдорд╛рдирдХ Musl рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╣ Linux рд╡рд┐рддрд░рдгрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • рдПрд▓рдПрд▓рдбреА рд▓рд┐рдВрдХрд░рдЪреА рдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рдгреНрдпрд╛рдд рдЖрд▓реА рдЖрд╣реЗ. "--рдирд┐рд░реНрднрд░рддрд╛-рдлрд╛рдЗрд▓", "-рдПрд░рд░-рд╣рдБрдбрд▓рд┐рдВрдЧ-рд╕реНрдХреНрд░рд┐рдкреНрдЯ", "-lto-рд╕реНрдпреВрдбреЛ-рдкреНрд░реЛрдм-рдлреЙрд░-рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ", "-no-lto-рд╕рдВрдкреВрд░реНрдг-рдкреНрд░реЛрдЧреНрд░рд╛рдо" рдпрд╛ рдкрд░реНрдпрд╛рдпрд╛рдВрд╕рд╣ ELF рдлреЙрд░рдореЕрдЯрд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рд╕рдорд░реНрдерди -рджреГрд╢реНрдпрддрд╛"" рд╕реБрдзрд╛рд░рд┐рдд MinGW рд╕рдорд░реНрдерди. Mach-O рдлреЙрд░рдореЕрдЯрд╕рд╛рдареА (macOS), arm64, arm, рдЖрдгрд┐ i386 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рд╕рдорд░реНрдерди, рд▓рд┐рдВрдХ-рдЯрд╛рдЗрдо рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди (LTO), рдЖрдгрд┐ рдЕрдкрд╡рд╛рдж рд╣рд╛рддрд╛рд│рдгреАрд╕рд╛рдареА рд╕реНрдЯреЕрдХ рдЕрдирд╡рд╛рдЗрдВрдбрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • Libc++ C++20 рдорд╛рдирдХрд╛рдЪреА рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рдЖрдгрд┐ C++2b рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдЪреНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░рдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА рдЖрд╣реЗ. рд╕реНрдерд╛рдирд┐рдХреАрдХрд░рдг рд╕рдорд░реНрдерди (тАЬ-DLIBCXX_ENABLE_LOCALIZATION=OFFтАЭ) рдЖрдгрд┐ рдЫрджреНрдо-рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ (тАЬ-DLIBCXX_ENABLE_RANDOM_DEVICE=OFFтАЭ) рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕рд╕рд╣ рдмрд┐рд▓реНрдбрд┐рдВрдЧрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛