ИздањС ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚Π° ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€Π° Π›Π›Π’Πœ 22

Након ΡˆΠ΅ΡΡ‚ мСсСци Ρ€Π°Π·Π²ΠΎΡ˜Π°, ΠΎΠ±Ρ˜Π°Π²Ρ™Π΅Π½ јС LLVM 22.1.0. Развија Π°Π»Π°Ρ‚Π΅ (ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€Π΅, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΠΊΠΎΠ΄Π°) који ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Ρ˜Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅ Ρƒ ΠΌΠ΅Ρ’ΡƒΠ±ΠΈΡ‚Π½ΠΈ ΠΊΠΎΠ΄ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈΡ… ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ˜Π° сличних RISC-Ρƒ (Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° машина ниског Π½ΠΈΠ²ΠΎΠ° са систСмом ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π΅ Π½Π° вишС Π½ΠΈΠ²ΠΎΠ°). ГСнСрисани псСудокод ΠΌΠΎΠΆΠ΅ сС ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΠ²Π°Ρ‚ΠΈ Ρƒ машински ΠΊΠΎΠ΄ Π·Π° Π΄Π°Ρ‚Ρƒ Ρ†ΠΈΡ™Π½Ρƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠ»ΠΈ Π³Π° ΠΌΠΎΠΆΠ΅ користити JIT (just-in-time) ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡΠ°ΡšΠ΅ ΠΌΠ°ΡˆΠΈΠ½ΡΠΊΠΈΡ… ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ˜Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Ρ‚ΠΎΠΊΠΎΠΌ ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. На основу LLVM Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°, ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ Ρ€Π°Π·Π²ΠΈΡ˜Π° Clang ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€, који ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π° програмскС јСзикС C, C++ ΠΈ Objective-C. ΠŸΠΎΡ‡Π΅Π²ΡˆΠΈ ΠΎΠ΄ Π³Ρ€Π°Π½Π΅ 18.x, ΠΏΡ€ΠΎΡ˜Π΅ΠΊΠ°Ρ‚ јС ΠΏΡ€Π΅ΡˆΠ°ΠΎ Π½Π° Π½ΠΎΠ²Ρƒ ΡˆΠ΅ΠΌΡƒ Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π΅ Π²Π΅Ρ€Π·ΠΈΡ˜Π°, ΠΏΡ€Π΅ΠΌΠ° којој сС издањС 0 (β€žN.0β€œ) користи Ρ‚ΠΎΠΊΠΎΠΌ Ρ€Π°Π·Π²ΠΎΡ˜Π°, Π° ΠΏΡ€Π²Π° стабилна Π²Π΅Ρ€Π·ΠΈΡ˜Π° јС нумСрисана ΠΊΠ°ΠΎ β€žN.1β€œ.

ΠŸΠΎΠ±ΠΎΡ™ΡˆΠ°ΡšΠ° Ρƒ Π¦Π»Π°Π½Π³ 22 ΡƒΠΊΡ™ΡƒΡ‡ΡƒΡ˜Ρƒ:

  • Π”ΠΎΠ΄Π°Ρ‚Π° јС ΠΏΠΎΠ΄Ρ€ΡˆΠΊΠ° Π·Π° Ρ‚ΠΎΠΊΠ΅Π½Π΅ Π·Π° Π°Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅ (Алокациони Ρ‚ΠΎΠΊΠ΅Π½ΠΈ) Π·Π° обСлСТавањС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π°Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜Π΅ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅ којС сС ΠΈΠ·Π²ΠΎΠ΄Π΅ ΠΏΠΎΠΌΠΎΡ›Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° ΠΊΠ°ΠΎ ΡˆΡ‚ΠΎ јС malloc Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. Алокациони Ρ‚ΠΎΠΊΠ΅Π½ΠΈ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π°Ρ˜Ρƒ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π° ΠΎ Ρ…ΠΈΠΏΡƒ, ΠΏΠΎΡ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Ρ™ΡƒΡ˜Ρƒ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅ Ρ†ΡƒΡ€Π΅ΡšΠ° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅ ΠΈ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π°Ρ˜Ρƒ Π³Ρ€ΡƒΠΏΠΈΡΠ°ΡšΠ΅ ΠΎΠ±Ρ˜Π΅ΠΊΠ°Ρ‚Π° Π½Π° основу ΡšΠΈΡ…ΠΎΠ²Π΅ Π½Π°ΠΌΠ΅Π½Π΅ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π·Π°Ρ†Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ (Π½ΠΏΡ€. одвајањС β€žΠ²Ρ€ΡƒΡ›ΠΈΡ…β€œ ΠΎΠ΄ β€žΡ…Π»Π°Π΄Π½ΠΈΡ…β€œ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°). Π”Π° бистС ΠΎΠΌΠΎΠ³ΡƒΡ›ΠΈΠ»ΠΈ, користитС заставицу β€ž-fsanitize=alloc-tokenβ€œ.
  • ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ Π²Π΅Π·Π°Π½Π΅ Π·Π° C јСзик:
    • Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ јС Π½Π°Ρ†Ρ€Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π΅ који Π΄Π΅Ρ„ΠΈΠ½ΠΈΡˆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ΠΎΠ³ ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ° β€ždeferβ€œ, ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π°Ρ˜ΡƒΡ›ΠΈ ΠΈΠ·Π²Ρ€ΡˆΠ°Π²Π°ΡšΠ΅ Π°ΠΊΡ†ΠΈΡ˜Π° ΠΊΠ°Π΄Π° Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½ΠΈ опсСг ΠΈΠ·Π°Ρ’Π΅ ΠΈΠ· њС. Π”ΠΎΠ΄Π°Ρ‚Π° јС заставица β€ž-fdefer-tsβ€œ Π΄Π° Π±ΠΈ сС ΠΎΠΌΠΎΠ³ΡƒΡ›ΠΈΠ»Π° ΠΏΠΎΠ΄Ρ€ΡˆΠΊΠ° Π·Π° β€ždeferβ€œ.
    • Π”ΠΎΠ΄Π°Ρ‚Π° јС ΡƒΠ³Ρ€Π°Ρ’Π΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° __builtin_stack_address(), која јС слична ΡΠ»ΠΈΡ‡Π½ΠΎΡ˜ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜ΠΈ Ρƒ GCC-Ρƒ. Ова Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π²Ρ€Π°Ρ›Π° адрСсу стСка, ΠΎΠ΄Π²Π°Ρ˜Π°Ρ˜ΡƒΡ›ΠΈ област стСка Ρ‚Ρ€Π΅Π½ΡƒΡ‚Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ која јС ΠΏΠΎΠ·Π²Π°Π»Π° __builtin_stack_address() ΠΎΠ΄ Π½Π°Ρ€Π΅Π΄Π½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° којС ΠΎΠ½Π° ΠΏΠΎΠ·ΠΈΠ²Π°.
  • ΠœΠΎΠ³ΡƒΡ›Π½ΠΎΡΡ‚ΠΈ којС сС Ρ€Π°Π·Π²ΠΈΡ˜Π°Ρ˜Ρƒ Π·Π° Π±ΡƒΠ΄ΡƒΡ›ΠΈ C2y стандард:
    • Π”ΠΎΠ΄Π°Ρ‚Π° јС ΠΏΠΎΠ΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π΅ ΠΏΠ΅Ρ‚Ρ™Π΅, која Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° Π΄ΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ‚Ρ™Π°ΠΌΠ° ΠΈ switch Π½Π°Ρ€Π΅Π΄Π±Π°ΠΌΠ°, којС сС ΠΌΠΎΠ³Ρƒ навСсти Ρƒ Π½Π°Ρ€Π΅Π΄Π±Π°ΠΌΠ° break ΠΈ continue Π΄Π° Π±ΠΈ сС Сксплицитно дСфинисала ΠΏΠ΅Ρ‚Ρ™Π° ΠΈΠ· којС сС ΠΈΠ·Π»Π°Π·ΠΈ. outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // ΠΈΠ΄ΠΈ Π½Π° CONT1 continue outer; // ΠΈΠ΄ΠΈ Π½Π° CONT2 // CONT1 } // CONT2 }
    • Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ΠΎΠ³ ΠΌΠ°ΠΊΡ€ΠΎΠ° β€ž__COUNTER__β€œ, Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ΠΎΠ³ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡΠ°ΡšΠ΅ Ρ˜Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½ΠΈΡ… идСнтификаторских ΠΈΠΌΠ΅Π½Π°, ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅Π½Π° јС ΠΈ ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½Π° Ρƒ стандард. ΠŸΠΎΡΡ‚Π°Π²Ρ™Π΅Π½ΠΎ јС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠ΅ ΠΎΠ΄ 2147483647 ΠΏΠΎΠ·ΠΈΠ²Π° ΠΎΠ²ΠΎΠΌ ΠΌΠ°ΠΊΡ€ΠΎΡƒ; ΠΏΡ€Π΅ΠΊΠΎΡ€Π°Ρ‡Π΅ΡšΠ΅ ΠΎΠ²ΠΎΠ³ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠ° гСнСрисаћС Π³Ρ€Π΅ΡˆΠΊΡƒ.
    • УклоњСно јС ΡƒΠΏΠΎΠ·ΠΎΡ€Π΅ΡšΠ΅ (-Wstatic-in-inline) ΠΏΡ€ΠΈ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΡƒ статичких Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Ρ™ΠΈΠ²ΠΈΡ… ΡƒΠ½ΡƒΡ‚Π°Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° дСкларисаних ΠΊΠ°ΠΎ β€žextern inlineβ€œ.
  • ΠœΠΎΠ³ΡƒΡ›Π½ΠΎΡΡ‚ΠΈ дСфинисанС Ρƒ стандарду C23 C:
    • Π—Π°Π³Π»Π°Π²Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° float.h сада ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π° ΠΌΠ°ΠΊΡ€ΠΎΠ΅ FLT_SNAN, DBL_SNAN ΠΈ LDBL_SNAN, који ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ˜Ρƒ сигнализиранС (ΠΈΠ·Π°Π·ΠΈΠ²Π°Ρ˜ΡƒΡ›ΠΈ ΠΈΠ·ΡƒΠ·Π΅Ρ‚Π°ΠΊ ΠΊΠ°Π΄Π° сС користС Ρƒ Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‡ΠΊΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π°ΠΌΠ°) NaN врСдности Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ float, double ΠΈ long double.
    • Π˜ΡΠΏΡ€Π°Π²Ρ™Π΅Π½Π° јС Π³Ρ€Π΅ΡˆΠΊΠ° Π³Π΄Π΅ су Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π°Π½ΠΈ ΠΊΠ°ΠΎ ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π½ΠΈ ΡƒΠ½ΡƒΡ‚Π°Ρ€ истС Ρ˜Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ Π·Π° ΠΏΡ€Π΅Π²ΠΎΠ΄ Π°ΠΊΠΎ су ΠΈΠΌΠ°Π»ΠΈ иста ΠΏΠΎΡ™Π°.
    • Заставица β€ž-MGβ€œ која сС користи Π·Π° ΠΈΠ³Π½ΠΎΡ€ΠΈΡΠ°ΡšΠ΅ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ˜ΡƒΡ›ΠΈΡ… Π·Π°Π³Π»Π°Π²Π½ΠΈΡ… Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Ρ‚ΠΎΠΊΠΎΠΌ ΡΠΊΠ΅Π½ΠΈΡ€Π°ΡšΠ° зависности ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅Π½Π° јС Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π΅ β€ž#embedβ€œ ΠΈ сада ΠΏΠΎΡ‚ΠΈΡΠΊΡƒΡ˜Π΅ Π³Ρ€Π΅ΡˆΠΊΡƒ β€žΠ΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° нијС ΠΏΡ€ΠΎΠ½Π°Ρ’Π΅Π½Π°β€œ ΠΊΠ°Π΄Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π½Π°Π²Π΅Π΄Π΅Π½Π° Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈ β€ž#embedβ€œ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ˜Π΅.
  • ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΠ²Π΅Π·Π°Π½Π΅ са C++:
    • Π”ΠΎΠ΄Π°Ρ‚Π° јС могућност ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ° структурираних повСзивања Ρƒ контСксту β€žconstexprβ€œ, ΠΊΠ°ΠΊΠΎ јС Ρ€Π°Π·Π²ΠΈΡ˜Π΅Π½ΠΎ Ρƒ C++2c (C++26) ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜ΠΈ. Π’ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†Π΅ Π½Π° константнС ΠΈΠ·Ρ€Π°Π·Π΅ сада самС ΠΌΠΎΠ³Ρƒ Π±ΠΈΡ‚ΠΈ константни ΠΈΠ·Ρ€Π°Π·ΠΈ. Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° јС ΠΏΠΎΠ΄Ρ€ΡˆΠΊΠ° Π·Π° Π½ΠΈΠ·ΠΎΠ²Π΅ ΠΈ Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π΅ структурС (Ρ‚ΠΎΡ€ΠΊΠ΅ још ΡƒΠ²Π΅ΠΊ нису ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π½Π΅). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • Како Π·Π°Ρ…Ρ‚Π΅Π²Π° стандард C++20, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅ΡšΠ° сС сада ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΡƒΡ˜Ρƒ Ρƒ стандардни ΠΎΠ±Π»ΠΈΠΊ ΠΏΡ€Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅, ΡˆΡ‚ΠΎ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° ΠΏΡ€Π΅Ρ†ΠΈΠ·Π½ΠΈΡ˜Π΅ Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΡ‡ΠΊΠ΅ ΠΏΠΎΡ€ΡƒΠΊΠ΅ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Ρ€ΡƒΠΊΠΎΠ²Π°ΡšΠ΅ Π³Ρ€Π΅ΡˆΠΊΠ°ΠΌΠ° Π·Π°ΠΌΠ΅Π½Π΅ Ρƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΠΌΠ° шаблона који сС користС само Ρƒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΠΌΠ°.
    • Π”ΠΎΠ΄Π°Ρ‚Π° јС Ρ„Π°ΠΌΠΈΠ»ΠΈΡ˜Π° ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° β€ž__builtin_[lt|gt|le|ge]_synthesizes_from_spaceshipβ€œ Π΄Π° Π±ΠΈ сС ΡƒΡ‚Π²Ρ€Π΄ΠΈΠ»ΠΎ Π΄Π° Π»ΠΈ су ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ ΠΏΠΎΡ€Π΅Ρ’Π΅ΡšΠ° β€ž<β€œ, β€ž>β€œ, β€ž<=" ΠΈ β€ž>=" синтСтизовани ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€ž<=>β€œ.
    • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ β€ž-Wincompatible-pointer-typesβ€œ јС ΠΏΡ€ΠΎΠΌΠ΅ΡšΠ΅Π½ Ρ‚Π°ΠΊΠΎ Π΄Π° ΠΏΡ€ΠΈΠΊΠ°Π·ΡƒΡ˜Π΅ Π³Ρ€Π΅ΡˆΠΊΡƒ умСсто ΡƒΠΏΠΎΠ·ΠΎΡ€Π΅ΡšΠ°. Π”Π° бистС сС Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π½Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ понашањС, користитС ΠΎΠΏΡ†ΠΈΡ˜Ρƒ β€ž-Wno-error=incompatible-pointer-typesβ€œ.
  • Π”ΠΎΠ΄Π°Ρ‚Π΅ су ΡƒΠ³Ρ€Π°Ρ’Π΅Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ __builtin_bswapg, __builtin_elementwise_ldexp, __builtin_elementwise_fshl, __builtin_elementwise_fshr, __builtin_elementwise_minnumnum, __builtin_elementwise_maxnumnum, __builtin_masked_load, __builtin_masked_expand_load, __builtin_masked_store, __builtin_masked_compress_store, __builtin_masked_gather, __builtin_masked_scatter ΠΈ __builtin_dedup_pack. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, builtin_dedup_pack Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›Π°Π²Π° Π΄Π° ΡƒΠΊΠ»ΠΎΠ½ΠΈΡ‚Π΅ Π΄ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ‚Π΅ са листС Ρ‚ΠΈΠΏΠΎΠ²Π°: користСћи MyTypeList = TypeList<__builtin_dedup_pack …>; // Ρ€Π΅Π·ΡƒΠ»Ρ‚ΡƒΡ˜ΡƒΡ›ΠΈ Ρ‚ΠΈΠΏ Ρ›Π΅ Π±ΠΈΡ‚ΠΈ TypeList
  • ΠŸΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΎΡ‚ΠΊΠ»Π°ΡšΠ°ΡšΠ° Π³Ρ€Π΅ΡˆΠ°ΠΊΠ° нСдСфинисаног понашања ΠΏΠΎΠΌΠΎΡ›Ρƒ UBSan-Π° (-fsanitize=undefined -fsanitize-trap=undefined), ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ ΠΎ ΡƒΠ·Ρ€ΠΎΠΊΡƒ Π³Ρ€Π΅ΡˆΠΊΠ΅ су сада ΡƒΠΊΡ™ΡƒΡ‡Π΅Π½Π΅ Ρƒ гСнСрисанС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ ΠΎ ΠΎΡ‚ΠΊΠ»Π°ΡšΠ°ΡšΡƒ Π³Ρ€Π΅ΡˆΠ°ΠΊΠ°. Π”ΠΎΠ΄Π°Ρ‚Π° јС заставица β€ž-fsanitize-debug-trap-reasonsβ€œ Π΄Π° Π±ΠΈ сС ΠΎΠ΄Ρ€Π΅Π΄ΠΈΠΎ Π½ΠΈΠ²ΠΎ Π΄Π΅Ρ‚Π°Ρ™Π° Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π°ΠΌΠ° ΠΎ Π³Ρ€Π΅ΡˆΡ†ΠΈ. МоТС сС подСсити Π½Π° β€žΠΎΡΠ½ΠΎΠ²Π½ΠΎβ€œ Π·Π° ΠΎΠΏΡˆΡ‚Π΅ описС (Π½ΠΏΡ€. β€žΠŸΡ€Π΅ΠΊΠΎΡ€Π°Ρ‡Π΅ΡšΠ΅ ΡΠ°Π±ΠΈΡ€Π°ΡšΠ° Ρ†Π΅Π»ΠΈΡ… Π±Ρ€ΠΎΡ˜Π΅Π²Π°β€œ) ΠΈ β€žΠ΄Π΅Ρ‚Π°Ρ™Π½ΠΎβ€œ Π΄Π° Π±ΠΈ сС ΡƒΠΊΡ™ΡƒΡ‡ΠΈΠ»Π΅ Π΄Π΅Ρ‚Π°Ρ™Π½Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ (Π½ΠΏΡ€. β€žΠΏΡ€Π΅ΠΊΠΎΡ€Π°Ρ‡Π΅ΡšΠ΅ ΡΠ°Π±ΠΈΡ€Π°ΡšΠ° потписаних Ρ†Π΅Π»ΠΈΡ… Π±Ρ€ΠΎΡ˜Π΅Π²Π° Ρƒ 'a + b'β€œ).
  • Π”ΠΎΠ΄Π°Ρ‚Π΅ Π½ΠΎΠ²Π΅ ΠΎΠ·Π½Π°ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€Π°:
    • β€ž-f[no-]sanitize-debug-trap-reasonsβ€œ Π΄Π° Π±ΠΈ сС контролисало Π΄Π° Π»ΠΈ су Ρ€Π°Π·Π»ΠΎΠ·ΠΈ Π·Π° Π·Π°Ρ€ΠΎΠ±Ρ™Π°Π²Π°ΡšΠ΅ ΠΈΠ·ΡƒΠ·Π΅Ρ‚Π°ΠΊΠ° ΡƒΠ³Ρ€Π°Ρ’Π΅Π½ΠΈ Ρƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ ΠΎ Π΄Π΅Π±Π°Π³ΠΎΠ²Π°ΡšΡƒ ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°ΡšΠ° са Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ β€ž-fsanitize-trapβ€œ.
    • β€ž-fsanitize=alloc-tokenβ€œ, β€ž-falloc-token-maxβ€œ, β€ž-fsanitize-alloc-token-fast-abiβ€œ ΠΈ β€ž-fsanitize-alloc-token-extendedβ€œ Π·Π° ΡƒΠΏΡ€Π°Π²Ρ™Π°ΡšΠ΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠΌΠ° Π·Π° Π°Π»ΠΎΠΊΠ°Ρ†ΠΈΡ˜Ρƒ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅.
    • β€ž-fmatrix-memory-layoutβ€œ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Ρƒ распорСда ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²Π° (Π½ΠΏΡ€. ΠΊΠΎΠ»ΠΎΠ½Π°-Π³Π»Π°Π²Π½Π° Π·Π° ΠΊΠΎΠ»ΠΎΠ½Ρƒ-Π³Π»Π°Π²Π½Ρƒ, Ρ€Π΅Π΄-Π³Π»Π°Π²Π½ΠΈ Π·Π° Ρ€Π΅Π΄-Π³Π»Π°Π²Π½ΠΈ).
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ сада ΠΈΠΌΠ°Ρ˜Ρƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ β€žmalloc_spanβ€œ, сличан Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ malloc, Π°Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ™ΠΈΠ² Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ којС Π²Ρ€Π°Ρ›Π°Ρ˜Ρƒ структурС сличнС span-Ρƒ којС садрТС ΠΏΠΎΠΊΠ°Π·ΠΈΠ²Π°Ρ‡ ΠΈ ΠΏΠΎΡ™Π΅ са Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·ΠΈΠ²Π°Ρ‡ Π½Π° ΠΊΡ€Π°Ρ˜ Π±Π»ΠΎΠΊΠ°.
  • Π”ΠΎΠ΄Π°Ρ‚ јС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ β€žmodular_formatβ€œ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ ΠΈΠ·Π±ΠΎΡ€ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π΅ статички ΠΏΠΎΠ²Π΅Π·Π°Π½Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ printf ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ повСзивања.
  • Алати Π·Π° Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΠΊΡƒ ΠΈ статичку Π°Π½Π°Π»ΠΈΠ·Ρƒ су ΠΏΡ€ΠΎΡˆΠΈΡ€Π΅Π½ΠΈ, Π΄ΠΎΠ΄Π°Ρ‚Π΅ су Π½ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅ (Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ дСсСтина ΠΏΠΎΠ±ΠΎΡ™ΡˆΠ°ΡšΠ° Π²Π΅Π·Π°Π½ΠΈΡ… Π·Π° Π΄ΠΈΡ˜Π°Π³Π½ΠΎΡΡ‚ΠΈΠΊΡƒ).
  • Π”ΠΎΠ΄Π°Ρ‚Π½Π΅ ΠΈΠ½Ρ‚Ρ€ΠΈΠ½Π·ΠΈΡ‡Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Π·Π° SSE, AVX ΠΈ AVX512 Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π΅ су Π΄ΠΎΠ΄Π°Ρ‚Π΅ X86 Π±Π΅ΠΊΠ΅Π½Π΄Ρƒ. Π”ΠΎΠ΄Π°Ρ‚ΠΈ су Ρ€Π΅ΠΆΠΈΠΌΠΈ ΠΈΠ·Π³Ρ€Π°Π΄ΡšΠ΅ Π·Π° Intel процСсорС заснованС Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°ΠΌΠ° Wildcat Lake (-march=wildcatlake) ΠΈ Nova Lake (-march=novalake).
  • Π‘Π΅ΠΊΠ΅Π½Π΄ AArch64 сада ΠΏΠΎΠ΄Ρ€ΠΆΠ°Π²Π° процСсорС Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium) ΠΈ Arm C1-Ultra (c1-ultra). Π”ΠΎΠ΄Π°Ρ‚Π΅ су Π΄ΠΎΠ΄Π°Ρ‚Π½Π΅ ΡƒΠ³Ρ€Π°Ρ’Π΅Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ Π·Π° ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ˜Π΅ FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US] ΠΈ FCVTA[US]. ΠŸΠΎΠ΄Ρ€ΡˆΠΊΠ° Π·Π° Π²ΠΈΡˆΠ΅Π²Π΅Ρ€Π·ΠΈΠΎΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Ρ™Π°ΡšΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°ΠΌΠ° (FMV) јС стабилизована. ΠšΠΎΡ€ΠΈΡΠ½ΠΈΡ†ΠΈ сада ΠΌΠΎΠ³Ρƒ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΡ… Π²Π΅Ρ€Π·ΠΈΡ˜Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°.
  • Π”ΠΎΠ΄Π°Ρ‚Π° јС ΠΏΠΎΠ΄Ρ€ΡˆΠΊΠ° Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ LoongArch32 (LA32R, LA32S).
  • ΠŸΠΎΠ±ΠΎΡ™ΡˆΠ°Π½ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²ΠΈ Π·Π° ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly ΠΈ PowerPC Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅.

Π˜Π·Π²ΠΎΡ€: ΠΎΠΏΠ΅Π½Π½Π΅Ρ‚.Ρ€Ρƒ

ΠšΡƒΠΏΠΈΡ‚Π΅ ΠΏΠΎΡƒΠ·Π΄Π°Π½ хостинг Π·Π° ΡΠ°Ρ˜Ρ‚ΠΎΠ²Π΅ са Π”Π”ΠΎΠ‘ Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΎΠΌ, Π’ΠŸΠ‘ Π’Π”Π‘ сСрвСрС πŸ”₯ ΠšΡƒΠΏΠΈΡ‚Π΅ ΠΏΠΎΡƒΠ·Π΄Π°Π½ Π²Π΅Π± хостинг са DDoS Π·Π°ΡˆΡ‚ΠΈΡ‚ΠΎΠΌ, VPS VDS сСрвСрС | ProHoster