ΠžΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ LLVM 11.0

По ΡˆΠ΅ΡΡ‚ мСсСци Ρ€Π°Π·Π²ΠΎΡ˜ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ LLVM 11.0 β€” Алатки ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π½ΠΈ со GCC (ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΈ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° ΠΊΠΎΠ΄), ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π²ΠΎ срСдСн Π±ΠΈΡ‚ΠΊΠΎΠ΄ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ инструкции слични Π½Π° RISC (Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° машина Π½Π° ниско Π½ΠΈΠ²ΠΎ со систСм Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° повСќС Π½ΠΈΠ²ΠΎΠ°). Π“Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈΠΎΡ‚ псСвдокод ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π° со помош Π½Π° JIT ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ Π²ΠΎ машински инструкции Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΡ‚ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°.

ΠšΠ»ΡƒΡ‡Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π° Π²ΠΎ Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ бСшС Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠšΡ€ΠΈΠ»ΠΎ, ΠΏΡ€Π΅Π΄Π΅Π½ Π΄Π΅Π» Π·Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ Π€ΠΎΡ€Ρ‚Ρ€Π°Π½. 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 ΡˆΡ‚ΠΎ Π½Π΅ Π³ΠΈ ΠΎΠΏΡ„Π°ΡœΠ° ситС ΠΌΠΎΠΆΠ½ΠΈ врСдности.
    • β€ž-Wuninicialized-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β€œ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π±Π΅Π»ΠΈ ΠΈ Ρ†Ρ€Π½ΠΈ листи Π·Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° покриСност.
    • β€ž-mtls-size={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 Π·Π° ΠΏΠΎΡ€Π°ΠΌΠ½ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ СкстСрнитС Π±Π»ΠΎΠΊΠΎΠ²ΠΈ β€žCβ€œ ΠΈ Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ β€žC++β€œ.
  • Π‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠΈΠΎΡ‚ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ со наслСдСнитС конструктори Π²ΠΎ C++. Π”ΠΎΠ΄Π°Π΄Π΅Π½ΠΈ сС Π½ΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ alpha.core.C11Lock ΠΈ alpha.fuchsia.Lock Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π±Ρ€Π°Π²ΠΈ, alpha.security.cert.pos.34c Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅ Π½Π΅Π±Π΅Π·Π±Π΅Π΄Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° putenv, webkit.NoUncountedMemberChecker ΠΈ webkit.RefCntblBaseVirtualDtor Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ со Π½Π΅Π±Ρ€ΠΎΠΈ .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 Π½Π° стандарднитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сС ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π° ΠΊΠ°ΠΊΠΎ Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅. Π’Πž
    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 (Ρ„ΠΈΠ½ΠΎ зрнСсти стапици), ARMv8.6-AMU (Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈ Π½Π° активност) ΠΈ ARMv8.0-DGH (Π‘ΠΎΠ²Π΅Ρ‚ Π·Π° ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ). ОбСзбСдСна Π΅ моТност Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Π²Ρ€Π·ΡƒΠ²Π°ΡšΠ° Π·Π° инструкции Π·Π° Π²Π΅ΠΊΡ‚ΠΎΡ€ SVE.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°Ρ‚Π° Π·Π° процСсоритС Cortex-M55, Cortex-A77, Cortex-A78 ΠΈ Cortex-X1 Π΅ Π΄ΠΎΠ΄Π°Π΄Π΅Π½Π° Π²ΠΎ Π·Π°Π΄Π½ΠΈΠΎΡ‚ Π΄Π΅Π» Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ARM. Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ СкстСнзии
    Armv8.6-A Matrix Multiply and RMv8.2-AA32BF16 BFloat16.

  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°Ρ‚Π° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ ΠΊΠΎΠ΄ Π·Π° процСсоритС POWER10 Π΅ Π΄ΠΎΠ΄Π°Π΄Π΅Π½Π° Π²ΠΎ Π·Π°Π΄Π½ΠΈΠΎΡ‚ Π΄Π΅Π» Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° PowerPC. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Ρ˜Π°ΠΌΠΊΠ°Ρ‚Π° сС ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅Π½ΠΈ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°Ρ‚Π° Π·Π° ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Π° Π·Π°ΠΏΠΈΡ€ΠΊΠ° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π°.
  • Π—Π°Π΄Π½ΠΈΠ½Π°Ρ‚Π° Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° RISC-V ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° ΠΏΡ€ΠΈΡ„Π°ΡœΠ°ΡšΠ΅ Π½Π° Π·Π°ΠΊΡ€ΠΏΠΈ ΠΊΠΎΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π°Π°Ρ‚ СкспСримСнтални ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈ инструкциски мноТСства ΠΊΠΎΠΈ сè ΡƒΡˆΡ‚Π΅ Π½Π΅ сС ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π½ΠΎ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ.
  • Π—Π°Π΄Π½ΠΈΠ½Π°Ρ‚Π° Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° AVR Π΅ ΠΏΡ€Π΅Ρ„Ρ€Π»Π΅Π½Π° ΠΎΠ΄ СкспСримСнтална ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡ˜Π° Π²ΠΎ стабилна, Π²ΠΊΠ»ΡƒΡ‡Π΅Π½Π° Π²ΠΎ основната Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π°.
  • Π—Π°Π΄Π½ΠΈΠ½Π°Ρ‚Π° Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° x86 ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° инструкции Π½Π° Intel AMX ΠΈ TSXLDTRK. Π”ΠΎΠ΄Π°Π΄Π΅Π½Π° Π·Π°ΡˆΡ‚ΠΈΡ‚Π° ΠΎΠ΄ Π½Π°ΠΏΠ°Π΄ΠΈ LVI (Load Value Injection), Π° исто Ρ‚Π°ΠΊΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° ΠΎΠΏΡˆΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° ΠΏΠΎΡ‚ΠΈΡΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° нСсакани Π΅Ρ„Π΅ΠΊΡ‚ΠΈ Π½Π° ΡˆΠΏΠ΅ΠΊΡƒΠ»Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½Π°ΠΏΠ°Π΄ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΈ ΠΎΠ΄ ΡˆΠΏΠ΅ΠΊΡƒΠ»Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° процСсорот.
  • Π’ΠΎ Π·Π°Π΄Π½ΠΈΠΎΡ‚ Π΄Π΅Π» Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° SystemZ, Π΄ΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° MemorySanitizer ΠΈ LeakSanitizer.
  • Libc++ Π΄ΠΎΠ΄Π°Π²Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° насловна Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° со ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡ΠΊΠΈ константи .
  • ΠŸΡ€ΠΎΡˆΠΈΡ€Π΅Π½ Бпособности Π·Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° LLD. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΡ‚ ELF, Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ Π³ΠΈ Π΄ΠΎΠ΄Π°Π΄Π΅Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ β€ž--lto-emit-asmβ€œ, β€ž--lto-whole-program-visibilityβ€œ, β€ž-print-archive-statsβ€œ, β€ž-shuffle-sectionsβ€œ, β€ž -thinlto- Π΅Π΄Π΅Π½-ΠΌΠΎΠ΄ΡƒΠ»", "-ΡƒΠ½ΠΈΠΊΠ°Ρ‚Π΅Π½", "-Ρ€ΠΎΠ·Π΅Π³ΠΌΠ΅Π½Ρ‚", "-threads=N". Π”ΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΎΠΏΡ†ΠΈΡ˜Π°Ρ‚Π° β€ž--time-traceβ€œ Π·Π° Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ‚Ρ€Π°Π³Π°Ρ‚Π° Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, која ΠΏΠΎΡ‚ΠΎΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΏΡ€Π΅ΠΊΡƒ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΎΡ‚ chrome://tracing Π²ΠΎ Chrome.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€