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

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

НовитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² LLVM 10.0 Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° C++ Concepts, Π²Π΅Ρ‡Π΅ Π½Π΅ изпълнява Clang ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ процСс, ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° CFG (Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° контролния ΠΏΠΎΡ‚ΠΎΠΊ) ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π° Windows ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π½ΠΎΠ²ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° процСсора.

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

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° "концСпцията", Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π° C++ шаблон, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ бъдС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² слСдващия стандарт с ΠΊΠΎΠ΄ΠΎΠ²ΠΎ ΠΈΠΌΠ΅ C++2a (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΎΡ‚ Ρ„Π»Π°Π³Π° -std=c++2a).
    ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈΡ‚Π΅ Π²ΠΈ позволяват Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ изисквания към ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° шаблона, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚ Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ΅Ρ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° шаблона. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° избягванС Π½Π° логичСски Π½Π΅ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ свойствата Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² шаблона, ΠΈ свойствата Π½Π° Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½ΠΈ Π½Π° Π²Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ.

    шаблон
    концСпция EqualityComparable = requires(T a, T b) {
    { a == b } -> std::boolean;
    { a != b } -> std::boolean;
    };

  • По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ стартиранСто Π½Π° ΠΎΡ‚Π΄Π΅Π»Π΅Π½ процСс (β€œclang -cc1”), Π² ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° компилация, Π΅ спряно. ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡΡ‚Π° Π²Π΅Ρ‡Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π² основния процСс ΠΈ опцията "-fno-integrated-cc1" ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° старото ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
  • Нови диагностични Ρ€Π΅ΠΆΠΈΠΌΠΈ:
    • β€ž-Wc99-designatorβ€œ ΠΈ β€ž-Wreorder-init-listβ€œ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π²Π°Ρ‚ срСщу ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° C99 ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌ C++ Π² случаитС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ са ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈ Π² C99, Π½ΠΎ Π½Π΅ ΠΈ Π² C++20.
    • "-Wsizeof-array-div" - улавя ситуации ΠΊΠ°Ρ‚ΠΎ "int arr[10]; …sizeof(arr) / sizeof(short)…” (трябва Π΄Π° бъдС β€žsizeof(arr) / sizeof(int)”).
    • β€ž-Wxor-used-as-poβ€œ – ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π²Π° срСщу ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° конструкции ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€ž^β€œ (xor) Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠ±ΡŠΡ€ΠΊΠ°Π½ΠΈ с стСпСнуванС (2^16).
    • "-Wfinal-dtor-non-final-class" - ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π²Π° Π·Π° класовС, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ със спСцификатора "final", Π½ΠΎ ΠΈΠΌΠ°Ρ‚ дСструктор с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ "final".
    • β€ž-Wtautological-bitwise-compareβ€œ Π΅ Π³Ρ€ΡƒΠΏΠ° ΠΎΡ‚ прСдупрСТдСния Π·Π° диагностициранС Π½Π° Ρ‚Π°Π²Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΈ сравнСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Π° опСрация ΠΈ константа ΠΈ Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° Π²ΠΈΠ½Π°Π³ΠΈ Π²Π΅Ρ€Π½ΠΈ сравнСния, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Π°Ρ‚Π° опСрация Π˜Π›Π˜ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° към Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π½ΠΎ число.
    • β€ž-Wbitwise-условни-ΡΠΊΠΎΠ±ΠΈβ€œ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π²Π° Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡ€ΠΈ смСсванС Π½Π° логичСскитС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ И (&) ΠΈ Π˜Π›Π˜ (|) с условния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (?:).
    • β€ž-Wmisleading-indentationβ€œ Π΅ Π°Π½Π°Π»ΠΎΠ³ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° със ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ ΠΎΡ‚ GCC, която ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π²Π° Π·Π° ΠΈΠ·Ρ€Π°Π·ΠΈ с ΠΎΡ‚ΡΡ‚ΡŠΠΏ, сякаш са част ΠΎΡ‚ Π±Π»ΠΎΠΊ if/else/for/while, Π½ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚Π΅ Π½Π΅ са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ Π±Π»ΠΎΠΊ .
    • ΠšΠΎΠ³Π°Ρ‚ΠΎ сС посочи β€ž-Wextraβ€œ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° β€ž-Wdeprecated-copyβ€œ Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π°, ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π²Π°ΠΉΠΊΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° конструктори
      "прСмСстванС" ΠΈ "ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅" Π² класовС с ΠΈΠ·Ρ€ΠΈΡ‡Π½Π° дСфиниция Π½Π° дСструктор.

    • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ β€ž-Wtautological-overlap-compareβ€œ, β€ž-Wsizeof-pointer-divβ€œ, β€ž-Wtautological-compareβ€œ, β€ž-Wrange-loop-analysisβ€œ са Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ.
    • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ "-Wbitwise-op-parentheses" ΠΈ "-Wlogical-op-parentheses" са Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.
  • Π’ ΠΊΠΎΠ΄Π° Π½Π° C ΠΈ C++ Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π» са Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ само Π² масиви. Π”Π΅Π·ΠΈΠ½Ρ„Π΅ΠΊΡ†ΠΈΡ€Π°Ρ‰ΠΎΡ‚ΠΎ срСдство Π·Π° Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌ "-fsanitize=pointer-overflow" Π²Π΅Ρ‡Π΅ улавя случаи ΠΊΠ°Ρ‚ΠΎ добавянС Π½Π° Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎ отмСстванС към Π½ΡƒΠ»Π΅Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π» ΠΈΠ»ΠΈ създаванС Π½Π° Π½ΡƒΠ»Π΅Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π» ΠΏΡ€ΠΈ ΠΈΠ·Π²Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° цяло число ΠΎΡ‚ Π½Π΅Π½ΡƒΠ»Π΅Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π».
  • Π Π΅ΠΆΠΈΠΌΡŠΡ‚ "-fsanitize=implicit-conversion" (Implicit Conversion Sanitizer) Π΅ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Π½ Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ ΠΈ намаляванС Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ с Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π±ΠΈΡ‚ΠΎΠ²Π΅Ρ‚Π΅, ΠΏΠΎ-малък ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Π½Π° Ρ‚ΠΈΠΏΠ° "int".
  • ΠŸΡ€ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° x86 Ρ†Π΅Π»Π΅Π²ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ "-march=skylake-avx512", "-march=icelake-client", "-march=icelake-server", "-march=cascadelake" ΠΈ "-march=cooperlake" ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ във Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠ΄ΡŠΡ‚ Π΅ спрял Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° 512-Π±ΠΈΡ‚ΠΎΠ²ΠΈ zmm рСгистри, с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎΡ‚ΠΎ ΠΈΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π² изходния ΠΊΠΎΠ΄. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π΅, Ρ‡Π΅ чСстотата Π½Π° процСсора намалява ΠΏΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° 512-Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° повлияС Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ Π½Π° цялостната производитСлност. Π—Π° Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π΅ прСдоставСна опцията "-mprefer-vector-width=512".
  • ΠŸΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π»Π°Π³Π° "-flax-vector-conversions" Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° GCC: ΠΈΠΌΠΏΠ»ΠΈΡ†ΠΈΡ‚Π½ΠΈΡ‚Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ прСобразувания Π½Π° Π±ΠΈΡ‚ΠΎΠ²Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†Π΅Π»ΠΈ числа ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈ с ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая са Π·Π°Π±Ρ€Π°Π½Π΅Π½ΠΈ. Π—Π° Π΄Π° сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ Ρ‚ΠΎΠ²Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ„Π»Π°Π³ΡŠΡ‚
    "-flax-vector-conversions=all", ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° MIPS процСсори ΠΎΡ‚ сСмСйството Octeon. Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ "octeon+" към списъка с Π²Π°Π»ΠΈΠ΄Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ процСсори.
  • ΠŸΡ€ΠΈ асСмблиранС Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebAssembly Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ wasm-opt, Π°ΠΊΠΎ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ Π² систСмата.
  • Π—Π° систСми, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° RISC-V, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° рСгистри, ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‰ΠΈ стойности с ΠΏΠ»Π°Π²Π°Ρ‰Π° запСтая, Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π² условни Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ вмъквания Π½Π° асСмблСр.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°: "-fgnuc-version" Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° стойността Π½Π° вСрсията Π·Π° "__GNUC__" ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ макроси; "-fmacro-prefix-map=OLD=NEW" Π·Π° замяна Π½Π° прСфикса Π½Π° дирСкторията OLD с NEW Π² макроси ΠΊΠ°Ρ‚ΠΎ "__FILE__"; "-fpatchable-function-entry=N[,M]" Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π±Ρ€ΠΎΠΉ NOP инструкции ΠΏΡ€Π΅Π΄ΠΈ ΠΈ слСд Π²Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° функцията. Π—Π° RISC-V
    Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ„Π»Π°Π³ΠΎΠ²Π΅Ρ‚Π΅ "-ffixed-xX", "-mcmodel=medany" ΠΈ "-mcmodel=medlow".

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° '__attribute__((target(β€œbranch-protection=..."))), Ρ‡ΠΈΠΉΡ‚ΠΎ Π΅Ρ„Π΅ΠΊΡ‚ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° опцията -mbranch-Π·Π°Ρ‰ΠΈΡ‚Π°.
  • На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Windows, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΡƒΠΊΠ°Π·Π²Π° Ρ„Π»Π°Π³ΡŠΡ‚ β€ž-cfguardβ€œ, сС ΠΏΡ€ΠΈΠ»Π°Π³Π° замСстванС Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ Π·Π° цСлостта Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½Π° изпълнСниС (Control Flow Guard) Π·Π° ΠΈΠ½Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΈ извиквания Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π° Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ подмяната Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ„Π»Π°Π³Π° β€ž-cfguard-nochecksβ€œ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° β€ž__declspec(guard(nocf))β€œ.
  • ΠŸΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° gnu_inline Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° GCC Π² случаитС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±Π΅Π· ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° "extern".
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° OpenCL ΠΈ CUDA, са Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° OpenMP 5.0.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ опция Standard към ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° clang-format, която Π²ΠΈ позволява Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ вСрсията Π½Π° стандарта C++, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ (Най-Π½ΠΎΠ²ΠΈ, Auto, c++03, c++11, c++14, c++17, c++20 ).
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ към статичния Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€: alpha.cplusplus.PlacementNew Π·Π° опрСдСлянС Π΄Π°Π»ΠΈ ΠΈΠΌΠ° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ място Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅, fuchsia.HandleChecker Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Ρ‚Π΅Ρ‡ΠΎΠ²Π΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° Fuchsia, security.insecureAPI.decodeValueOfObjCType Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° [NSCoder decodeValueOfObjCType :at:] .
  • Π”Π΅Π·ΠΈΠ½Ρ„Π΅ΠΊΡ‚Π°Π½Ρ‚ΡŠΡ‚ Π·Π° Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (UBSan) Ρ€Π°Π·ΡˆΠΈΡ€ΠΈ своитС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π° ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ Π½Π° указатСля, Π·Π° Π΄Π° улавя ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΈ отмСствания към NULL ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Ρ‚ΠΈΡ‡Π°Ρ‰ΠΎΡ‚ΠΎ добавянС Π½Π° NULL отмСстванС Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π».
  • Π’ Π»ΠΈΠ½Ρ‚Π΅Ρ€ Π΄Ρ€ΡŠΠ½-ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ Π΄ΠΎΠ±Π°Π²ΠΈ голяма част ΠΎΡ‚ Π½ΠΎΠ²ΠΈ Ρ‡Π΅ΠΊΠΎΠ²Π΅.

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

  • Към Ρ€Π°ΠΌΠΊΠ°Ρ‚Π° ΠŸΡ€ΠΈΠΏΠΈΡΠ²Π°Ρ‡ Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ. ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·Π²Π° сС ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° 19 Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ 12 Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, 12 LLVM IR ΠΈ 7 абстрактни Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, ΠΊΠ°Ρ‚ΠΎ ТизнСност.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΈ матСматичСски Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° (Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ характСристики), ΠΊΠΎΠΈΡ‚ΠΎ сС замСнят с Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ инструкции ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° компилация.
  • Бяха Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ±Ρ€ΠΎΠΉΠ½ΠΈ подобрСния Π² Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° X86, AArch64, ARM, SystemZ, MIPS, AMDGPU ΠΈ PowerPC Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ. Π”ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° процСсора
    Cortex-A65, Cortex-A65AE, Neoverse E1 ΠΈ Neoverse N1. Π—Π° ARMv8.1-M ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ сС появи ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ†ΠΈΠΊΠ»ΠΈ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ) ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° автовСкторизация с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ MVE. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° MIPS Octeon Π½Π° процСсора. Π—Π° PowerPC Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° вСкторизацията Π½Π° матСматичСски ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° MASSV (Mathematical Acceleration SubSystem), Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏΡŠΡ‚ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΎΡ‚ Ρ†ΠΈΠΊΠ»ΠΈ Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½. Π—Π° x86 ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ v2i32, v4i16, v2i16, v8i8, v4i8 ΠΈ v2i8 Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½Π°.

  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ΄ Π·Π° WebAssembly. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° TLS (Thread-Local Storage) ΠΈ инструкции atomic.fence. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° SIMD Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π°. ΠžΠ±Π΅ΠΊΡ‚Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° WebAssembly Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚ способността Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ сигнатури Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΌΠ½ΠΎΠ³ΠΎ стойности.
  • ΠΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ†ΠΈΠΊΠ»ΠΈ MemorySSA, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ°ΠΌΠ΅Ρ‚. MemorySSA ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ ΠΈ изпълнСниС ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° вмСсто AliasSetTracker Π±Π΅Π· Π·Π°Π³ΡƒΠ±Π° Π½Π° производитСлност.
  • Π”Π΅Π±ΡŠΠ³Π΅Ρ€ΡŠΡ‚ LLDB ΠΈΠΌΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° DWARF v5. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ с MinGW
    ΠΈ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° Windows Π·Π° ARM ΠΈ ARM64 Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ описания Π½Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π½ΠΈΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΏΡ€ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄ΠΎΠ²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° въвСТданС Ρ‡Ρ€Π΅Π· натисканС Π½Π° tab.

  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΎ Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° LLD Π»ΠΈΠ½ΠΊΠ΅Ρ€. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ELF Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ осигуряванС Π½Π° пълна ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ Π½Π° glob шаблони с GNU Π»ΠΈΠ½ΠΊΠ΅Ρ€, добавянС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° компрСсирани сСкции Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ".zdebug", добавянС Π½Π° свойството PT_GNU_PROPERTY Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° сСкцията .note.gnu.property (ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ Linux ядра),
    Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈ са Ρ€Π΅ΠΆΠΈΠΌΠΈΡ‚Π΅ β€ž-z noseparate-codeβ€œ, β€ž-z ΠΎΡ‚Π΄Π΅Π»Π΅Π½-ΠΊΠΎΠ΄β€œ ΠΈ β€ž-z ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ-Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π΅ΠΌΠΈ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚ΠΈβ€œ. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° MinGW ΠΈ WebAssembly.

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

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