ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° компилаторния ΠΏΠ°ΠΊΠ΅Ρ‚ LLVM 11.0

Π‘Π»Π΅Π΄ ΡˆΠ΅ΡΡ‚ мСсСца Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° прСдставСни ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM 11.0 β€” GCC-ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ инструмСнти (ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅), ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‰ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Π±ΠΈΡ‚ΠΎΠ² ΠΊΠΎΠ΄ Π½Π° RISC-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ инструкции (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина ΠΎΡ‚ ниско Π½ΠΈΠ²ΠΎ със систСма Π·Π° многостСпСнна оптимизация). ГСнСрираният псСвдокод ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π² машинни инструкции Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°.

ΠšΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° промяна Π² Π½ΠΎΠ²Π°Ρ‚Π° вСрсия бСшС Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π€Π»Π°Π½Π³, интСрфСйс Π·Π° Π΅Π·ΠΈΠΊΠ° Fortran. Flang ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Fortran 2018, OpenMP 4.5 ΠΈ OpenACC 3.0, Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π° ΠΈ прСдният ΠΊΡ€Π°ΠΉ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π΄ΠΎ парсванС Π½Π° ΠΊΠΎΠ΄ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° корСктност. Π“Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ Π½Π° LLVM всС ΠΎΡ‰Π΅ Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΈ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅Π½ ΠΊΠΎΠ΄ ΠΈ сС ΠΏΡ€Π΅Π΄Π°Π²Π° Π½Π° външСн Fortran ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€.

ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΡ Π² Clang 11.0:

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄ΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π° абстрактния синтаксис (AST) Π·Π° Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ C++ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠΌΠΎΡ‰ ΠΏΡ€ΠΈ диагностициранС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ прСдоставя Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация Π½Π° външни ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΊΠ°Ρ‚ΠΎ clang-tidy ΠΈ clangd. Ѐункцията Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° C++ ΠΊΠΎΠ΄ ΠΈ сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Ρ‡Ρ€Π΅Π· ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ β€ž-Xclang -f[no-]recovery-astβ€œ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ диагностични Ρ€Π΅ΠΆΠΈΠΌΠΈ:
    • β€ž-Wpointer-to-int-castβ€œ Π΅ Π³Ρ€ΡƒΠΏΠ° ΠΎΡ‚ прСдупрСТдСния Π·Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ към цСлочислСн Ρ‚ΠΈΠΏ int, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠ±ΠΈΡ€Π° всички възмоТни стойности.
    • β€œ-Wuninitialized-const-reference” - ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ във Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° β€œconst”.
    • "-Wimplicit-const-int-float-conversion" - Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΠΈΠΌΠΏΠ»ΠΈΡ†ΠΈΡ‚Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π½Π° Ρ€Π΅Π°Π»Π½Π° константа Π² цСлочислСн Ρ‚ΠΈΠΏ.
  • Π—Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ARM са прСдоставСни C Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° (Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ характСристики), Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ ΠΎΡ‚ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ инструкции Arm v8.1-M MVE ΠΈ CDE. НаличнитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ са Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π² Π·Π°Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ arm_mve.h ΠΈ arm_cde.h.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ Ρ†Π΅Π»ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ _ExtInt(N), ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΠΊΡ€Π°Ρ‚Π½ΠΈ Π½Π° стСпСни Π½Π° Π΄Π²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½ΠΈ Π½Π° FPGA/HLS. НапримСр, _ExtInt(7) Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° цСлочислСн Ρ‚ΠΈΠΏ, ΡΡŠΡΡ‚ΠΎΡΡ‰ сС ΠΎΡ‚ 7 Π±ΠΈΡ‚Π°.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ макроси, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ C Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ARM SVE (Scalable Vector Extension) инструкции:
    __ARM_FEATURE_SVE, __ARM_FEATURE_SVE_BF16,
    __ARM_FEATURE_SVE_MATMUL_FP32, __ARM_FEATURE_SVE_MATMUL_FP64,
    __ARM_FEATURE_SVE_MATMUL_INT8,
    __ARM_FEATURE_SVE2, __ARM_FEATURE_SVE2_AES,
    __ARM_FEATURE_SVE2_BITPERM,
    __ARM_FEATURE_SVE2_SHA3,
    __ARM_FEATURE_SVE2_SM4. НапримСр, ΠΌΠ°ΠΊΡ€ΠΎΡΡŠΡ‚ __ARM_FEATURE_SVE сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° AArch64 ΠΊΠΎΠ΄ Ρ‡Ρ€Π΅Π· Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° опцията Π½Π° командния Ρ€Π΅Π΄ "-march=armv8-a+sve".

  • Π€Π»Π°Π³ΡŠΡ‚ "-O" Π²Π΅Ρ‡Π΅ сС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° с Ρ€Π΅ΠΆΠΈΠΌΠ° Π½Π° оптимизация "-O1" вмСсто с "-O2".
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°:
    • "-fstack-clash-protection" - позволява Π·Π°Ρ‰ΠΈΡ‚Π° срСщу прСсСчни Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° стСка ΠΈ ΠΊΡƒΠΏΡ‡ΠΈΠ½Π°Ρ‚Π°.
    • "-ffp-exception-behavior={ignore,maytrap,strict}" - позволява Π²ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π° числа с ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая.
    • "-ffp-model={precise,strict,fast}" - ΠžΠΏΡ€ΠΎΡΡ‚ΡΠ²Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ сСрия ΠΎΡ‚ спСциализирани ΠΎΠΏΡ†ΠΈΠΈ Π·Π° числа с ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая.
    • "-fpch-codegen" ΠΈ "-fpch-debuginfo" Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ Ρ…Π΅Π΄ΡŠΡ€ (PCH) с ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΠΊΠΎΠ΄ ΠΈ информация Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ.
    • β€ž-fsanitize-coverage-allowlistβ€œ ΠΈ β€ž-fsanitize-coverage-blocklistβ€œ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π±Π΅Π»ΠΈ ΠΈ Ρ‡Π΅Ρ€Π½ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ Π·Π° тСстванС Π½Π° ΠΏΠΎΠΊΡ€ΠΈΡ‚ΠΈΠ΅.
    • β€ž-mtlsize={12,24,32,48}β€œ, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° TLS (Π»ΠΎΠΊΠ°Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° нишки).
    • "-menable-experimental-extension" Π·Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° СкспСримСнтални RISC-V Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ.
  • Π Π΅ΠΆΠΈΠΌΡŠΡ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° C Π΅ "-fno-common", ΠΊΠΎΠ΅Ρ‚ΠΎ позволява ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° някои ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ.
  • ΠšΠ΅ΡˆΡŠΡ‚ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ прСмСстСн ΠΎΡ‚ /tmp Π² дирСкторията ~/.cache. Π—Π° Π΄Π° ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ„Π»Π°Π³Π° β€ž-fmodules-cache-path=β€œ.
  • Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΡŠΡ‚ Π·Π° Π΅Π·ΠΈΠΊ C ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ ΠΎΡ‚ gnu11 Π½Π° gnu17.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° GNU C Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ "asm inlineΒ» Π·Π° добавянС Π½Π° асСмблСрни Π²Π»ΠΎΠΆΠΊΠΈ. Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ всС ΠΎΡ‰Π΅ сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°, Π½ΠΎ Π½Π΅ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΏΠΎ никакъв Π½Π°Ρ‡ΠΈΠ½.
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° OpenCL ΠΈ CUDA, са Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° диагностика Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ OpenCL 2.0 ΠΈ са Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° OpenMP 5.0.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ опция IndentExternBlock към ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° clang-format Π·Π° подравняванС Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° extern "C" ΠΈ extern "C++" Π±Π»ΠΎΠΊΠΎΠ²Π΅.
  • Бтатичният Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° наслСдСни конструктори Π² C++. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ alpha.core.C11Lock ΠΈ alpha.fuchsia.Lock Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ, alpha.security.cert.pos.34c Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° опасна ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° putenv, webkit.NoUncountedMemberChecker ΠΈ webkit.RefCntblBaseVirtualDtor Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с Π½Π΅ΠΈΠ·Π±Ρ€ΠΎΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅, alpha .cplusplus .SmartPtr Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° Π΄Π΅Ρ€Π΅Ρ„Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π΅Π² ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π».
  • Π’ Π»ΠΈΠ½Ρ‚Π΅Ρ€ Π΄Ρ€ΡŠΠ½-ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ Π΄ΠΎΠ±Π°Π²ΠΈ голяма част ΠΎΡ‚ Π½ΠΎΠ²ΠΈ Ρ‡Π΅ΠΊΠΎΠ²Π΅.
  • Π‘ΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° clangd (Clang Server) Π΅ с ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° производитСлност ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π½ΠΎΠ²ΠΈ диагностични Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ.

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ LLVM 11.0:

  • БистСмата Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π΅ ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° към ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Python 3. Ако Python 3 Π½Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½, възмоТно Π΅ Π΄Π° сС Π²ΡŠΡ€Π½Π΅Ρ‚Π΅ към ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Python 2.
  • ΠŸΡ€Π΅Π΄Π½ΠΈΡΡ‚ ΠΊΡ€Π°ΠΉ с ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Π·Π° Π΅Π·ΠΈΠΊΠ° Go (llgo) Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΎΡ‚ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС прСструктурирано Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅.
  • ΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ vector-function-abi-variant Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ към ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡ‚ΠΎ прСдставянС (IR), Π·Π° Π΄Π° опишС ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ скаларни ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° повиквания. ΠžΡ‚ llvm::VectorType ΠΈΠΌΠ° Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ Ρ‚ΠΈΠΏΠ° llvm::FixedVectorType ΠΈ llvm::ScalableVectorType.
  • РазклоняванСто въз основа Π½Π° udef стойности ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° undef стойности към стандартни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сС Ρ€Π°Π·ΠΏΠΎΠ·Π½Π°Π²Π° ΠΊΠ°Ρ‚ΠΎ Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. IN
    memset/memcpy/memmove позволява ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° undef ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π½ΠΎ Π°ΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ с Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΅ Π½ΡƒΠ»Π°.

  • LLJIT Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° статични ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‡Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ LLJIT::initialize ΠΈ LLJIT::deinitialize. Π’Π½Π΅Π΄Ρ€Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° добавянС Π½Π° статични Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ към JITDylib с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° класа StaticLibraryDefinitionGenerator. Π”ΠΎΠ±Π°Π²Π΅Π½ C API Π·Π° ORCv2 (API Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ).
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° процСсори Cortex-A64, Cortex-A34, Cortex-A77 ΠΈ Cortex-X78 Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° AArch1. Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈ ARMv8.2-BF16 (BFloat16) ΠΈ ARMv8.6-A Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ RMv8.6-ECV (ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° виртуализация Π½Π° брояча), ARMv8.6-FGT (Fine Grained Traps), ARMv8.6-AMU (виртуализация Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈ Π½Π° активност) ΠΈ ARMv8.0-DGH (подсказка Π·Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ). ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ към SVE Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ инструкции.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° процСсори Cortex-M55, Cortex-A77, Cortex-A78 ΠΈ Cortex-X1 Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° ARM Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°. Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ
    Armv8.6-A Matrix Multiply ΠΈ RMv8.2-AA32BF16 BFloat16.

  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° процСсори POWER10 Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° PowerPC Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Ρ†ΠΈΠΊΡŠΠ»Π° са Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π°.
  • Π‘Π΅ΠΊΠ΅Π½Π΄ΡŠΡ‚ Π·Π° RISC-V Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° позволява ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°Ρ‡ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ СкспСримСнтални Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ инструкции, ΠΊΠΎΠΈΡ‚ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ са ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΎ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ.
  • Π‘Π΅ΠΊΠ΅Π½Π΄ΡŠΡ‚ Π·Π° AVR Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π΅ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½ ΠΎΡ‚ СкспСримСнталната катСгория Π² стабилна, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² основната дистрибуция.
  • Π‘Π΅ΠΊΠ΅Π½Π΄ΡŠΡ‚ Π·Π° x86 Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Intel AMX ΠΈ TSXLDTRK инструкции. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π° срСщу Π°Ρ‚Π°ΠΊΠΈ ΠžΠ’Πš (Π˜Π½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° стойност Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅), Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΎΠ±Ρ‰ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° потисканС Π½Π° страничния Π΅Ρ„Π΅ΠΊΡ‚ Π½Π° спСкулативното изпълнСниС Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Π°Ρ‚Π°ΠΊΠΈ, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ‚ спСкулативно изпълнСниС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° процСсора.
  • Π’ Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° SystemZ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° MemorySanitizer ΠΈ LeakSanitizer.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π·Π°Π³Π»Π°Π²Π΅Π½ Ρ„Π°ΠΉΠ» с матСматичСски константи към Libc++ .
  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΎ Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° LLD Π»ΠΈΠ½ΠΊΠ΅Ρ€. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ELF Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ "--lto-emit-asm", "--lto-whole-program-visibility", "-print-archive-stats", "-shuffle-sections", " -thinlto- Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»", "-unique", "-rosegment", "-threads=N". Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ опция β€ž--time-traceβ€œ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° прослСдяванСто във Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Ρ‡Ρ€Π΅Π· интСрфСйса chrome://tracing Π² Chrome.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€