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

Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ GCC 10.1, ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ голямо ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π² новия ΠΊΠ»ΠΎΠ½ Π½Π° GCC 10.x. Π’ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ със Π½ΠΎΠ²Π° схСма Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° издания, вСрсия 10.0 Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² процСса Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΈ пусканСто Π½Π° GCC 10.1, ΠΊΠ»ΠΎΠ½ΡŠΡ‚ Π½Π° GCC 11.0 Π²Π΅Ρ‡Π΅ сС Π΅ Ρ€Π°Π·ΠΊΠ»ΠΎΠ½ΠΈΠ», Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π° слСдващата Π·Π½Π°Ρ‡ΠΈΠΌΠ° вСрсия, GCC 11.1.

GCC 10.1 сС ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π° с внСдряванСто Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ Π² Π΅Π·ΠΈΠΊΠ° C++, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π·Π° стандарта C++20, подобрСния, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π±ΡŠΠ΄Π΅Ρ‰ΠΈΡ Π΅Π·ΠΈΠΊΠΎΠ² стандарт C (C2x), Π½ΠΎΠ²ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π±Π΅ΠΊΠ΅Π½Π΄Π° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° ΠΈ СкспСримСнтална ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Ρ€Π΅ΠΆΠΈΠΌ Π½Π° статичСн Π°Π½Π°Π»ΠΈΠ·. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Ρ‚Π° Π½Π° Π½ΠΎΠ² ΠΊΠ»ΠΎΠ½, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ ΠΎΡ‚ SVN към Git.

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ СкспСримСнталСн Ρ€Π΅ΠΆΠΈΠΌ Π½Π° статичСн Π°Π½Π°Π»ΠΈΠ· "-Ρ„Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€β€œ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ€Π΅ΡΡƒΡ€ΡΠΎΠ΅ΠΌΡŠΠΊ ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅Π½ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΡŠΡ‚ΠΈΡ‰Π°Ρ‚Π° Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. Π Π΅ΠΆΠΈΠΌΡŠΡ‚ Π΅ способСн Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° компилация, ΠΊΠ°Ρ‚ΠΎ Π΄Π²ΠΎΠΉΠ½ΠΈ извиквания Π½Π° функцията free() Π·Π° Π΅Π΄Π½Π° област Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ дСскриптори, Π΄Π΅Ρ€Π΅Ρ„Π΅Ρ€ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π΅Π²ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ освободСни Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ стойности ΠΈ Ρ‚.Π½. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° новия Ρ€Π΅ΠΆΠΈΠΌ Π·Π° OpenSSL ΠΊΠΎΠ΄ Π²Π΅Ρ‡Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈ възмоТно ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ опасна уязвимост.
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΠΏΡƒΡΠΊΡŠΡ‚ IPA-SRA (ΠΌΠ΅ΠΆΠ΄ΡƒΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Π° скаларна сподСлСна замяна) Π΅ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½, Π·Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΈ, Π½Π°Ρ€Π΅Π΄ с Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅Ρ‰Π°, сСга ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° изчислСнитС ΠΈ Π²ΡŠΡ€Π½Π°Ρ‚ΠΈΡ‚Π΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ стойности. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ° Π½Π° оптимизация "-O2" Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° опцията "-finline-functions", която Π΅ прСнастроСна, Π·Π° Π΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π° ΠΏΠΎ-компактния ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π΄ производитСлността Π½Π° изпълнСниС. Π Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Свристиката Π·Π° внСдряванС Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½Π° функция Π΅ ускорСна. Евристиката Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° информация Π·Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ Π½Π° стойности, Π·Π° Π΄Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈ СфСктивността Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈΡ‚Π΅ трансформации. Π—Π° C++, точността Π½Π° Ρ€Π°Π·Π±ΠΎΡ€Π° Π½Π° псСвдоними, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Ρ‚ΠΈΠΏ, Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π°.
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ (LTO). Π”ΠΎΠ±Π°Π²Π΅Π½ Π½ΠΎΠ² изпълним Ρ„Π°ΠΉΠ» lto-ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΡΠΌ Π·Π° Π½ΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° информация Π·Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с LTO Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄. ΠŸΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈΡ‚Π΅ LTO пропуски Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ опрСдСлят броя Π½Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Π½ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° създаванС ΠΈ, Π°ΠΊΠΎ Ρ‚Π΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° информация Π·Π° броя Π½Π° процСсорнитС ядра ΠΊΠ°Ρ‚ΠΎ Ρ„Π°ΠΊΡ‚ΠΎΡ€ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° компрСсиранС Π½Π° LTO Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ° zstd.
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° оптимизация, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° (PGO - Profile-guided optimization), ΠΊΠΎΠΉΡ‚ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΏΠΎ-ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ ΠΊΠΎΠ΄ въз основа Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° характСристикитС Π½Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄Π°. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° компилация ΠΈ раздСлянС Π½Π° Π³ΠΎΡ€Π΅Ρ‰ΠΎ/студСно ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅. Π§Ρ€Π΅Π· опцията "-fprofile-стойности» Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° слСди Π΄ΠΎ 4 стойности Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΈΠ½Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΈ повиквания ΠΈ прСдоставянС Π½Π° ΠΏΠΎ-Ρ‚ΠΎΡ‡Π½Π° информация Π·Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°.
  • БпСцификация Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, Π²Π½Π΅Π΄Ρ€Π΅Π½Π° Π·Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ C, C++ ΠΈ Fortran OpenACC 2.6, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° инструмСнти Π·Π° Ρ€Π°Π·Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Ρ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° GPU ΠΈ спСциализирани процСсори ΠΊΠ°Ρ‚ΠΎ NVIDIA PTX. ВнСдряванСто Π½Π° стандарта Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ MP 5.0 (Open Multi-Processing), ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° API ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π²ΡŠΡ€Ρ…Ρƒ многоядрСни ΠΈ Ρ…ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΈ (CPU+GPU/DSP) систСми със сподСлСна ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ Π·Π° вСкторизация (SIMD). Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ условни ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ lastprivate, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΈ Π·Π° сканиранС ΠΈ Ρ†ΠΈΠΊΡŠΠ», ΠΈΠ·Ρ€Π°Π·ΠΈ Π·Π° ΠΏΠΎΡ€ΡŠΡ‡ΠΊΠ° ΠΈ use_device_addr. Π—Π° OpenMP ΠΈ OpenACC Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° Ρ€Π°Π·Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈ процСсори AMD Radeon (GCN) ΠΎΡ‚ Ρ‡Π΅Ρ‚Π²ΡŠΡ€Ρ‚ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ (Π€ΠΈΠ΄ΠΆΠΈ) ΠΈ ΠΏΠ΅Ρ‚ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ (VEGA 10/VEGA 20).
  • Π—Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ ΠΎΡ‚ сСмСйството C Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° функцията β€žΠ΄ΠΎΡΡ‚ΡŠΠΏβ€œ, Π·Π° Π΄Π° опишС Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π½Π° функцията Π΄ΠΎ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΏΡ€Π΅Π΄Π°Π²Π°Π½ΠΈ Ρ‡Ρ€Π΅Π· ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠ° ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π», ΠΈ Π΄Π° асоциира Ρ‚Π°ΠΊΠΈΠ²Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ с цСлочислСни Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ информация Π·Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅. Π—Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ във Π²Ρ€ΡŠΠ·ΠΊΠ° с β€žΠ΄ΠΎΡΡ‚ΡŠΠΏβ€œ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ β€žΡ‚ΠΈΠΏβ€œ Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΎΡ‚ потрСбитСлски Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ запис Π½Π° стойности Π² област извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° масива. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΡŠΡ‚ "symver" Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° символи Π² ELF Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° вСрсията.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ прСдупрСТдСния:
    • β€œ-Wstring-compare” (Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ с β€œ-Wextra”) - ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π²Π° Π·Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈ, Π² ΠΊΠΎΠΈΡ‚ΠΎ Π½ΡƒΠ»Π°Ρ‚Π° сС сравнява с Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ strcmp ΠΈ strncmp, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎ Π½Π° константа ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° Π΅Π΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π΅ ΠΏΠΎ-голям ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° масива във втория Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.
    • β€ž-Wzero-length-boundsβ€œ (Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ с β€ž-Warray-boundsβ€œ) – ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π²Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° масив с Π½ΡƒΠ»Π΅Π²Π° дълТина, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ прСзаписванС Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Π΄Π°Π½Π½ΠΈ.
    • ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡΡ‚Π° β€ž-Warray-boundsβ€œ, β€ž-Wformat-overflowβ€œ, β€ž-Wrestrictβ€œ, β€ž-Wreturn-local-addrβ€œ ΠΈ β€ž-Wstringop-overflowβ€œ са Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ, Π·Π° Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΡΡ‚ броя Π½Π° ситуациитС извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡˆΠΈΡ€ΠΎΠΊΠΈ Π·Π½Π°Ρ†ΠΈ Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ (UTF-8 ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅), Π° Π½Π΅ UCN нотация (\uNNNN ΠΈΠ»ΠΈ \UNNNNNNNN). НапримСр:

    static const int Ο€ = 3;
    int get_naΓ―ve_pi() {
    Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Ο€;
    }

  • Π—Π° Π΅Π·ΠΈΠΊΠ° C са Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈ част ΠΎΡ‚ Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° стандарта C2X (Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΈ Ρ‡Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° -std=c2x ΠΈ -std=gnu2x): появи сС ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° синтаксиса β€ž[[]]β€œ Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ Π² C++ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ [[gnu ::const]], [[deprecated]], [[fallthrough]] ΠΈ [[maybe_unused]]. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° синтаксис "u8" Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° константи с UTF-8 Π·Π½Π°Ρ†ΠΈ.
    Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ макроси към . Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са замСствания "%OB" ΠΈ "%Ob" към strftime.

  • Π Π΅ΠΆΠΈΠΌΡŠΡ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° C Π΅ "-fno-common", ΠΊΠΎΠ΅Ρ‚ΠΎ позволява ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° някои ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ.
  • Π—Π° C++ са въвСдСни ΠΎΠΊΠΎΠ»ΠΎ 16 ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ нововъвСдСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π² стандарта C++20. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π΅Π½Π°Ρ‚Π° ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π° Π΄ΡƒΠΌΠ° β€žconstinitβ€œ
    ΠΈ Π΅ въвСдСна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° шаблони "концСпцията". ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈΡ‚Π΅ Π²ΠΈ позволяват Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ изисквания към ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° шаблона, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚ Π½Π°Π±ΠΎΡ€Π° ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ΅Ρ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° шаблона. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° избягванС Π½Π° логичСски Π½Π΅ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ свойствата Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² шаблона, ΠΈ свойствата Π½Π° Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½ΠΈ Π½Π° Π²Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ.

  • G++ осигурява ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΎ ΠΎΡ‚ промяна Π½Π° постоянни ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Ρ‡Ρ€Π΅Π· constexpr. НамалСна консумация Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΈ изчисляванС Π½Π° constexpr. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ прСдупрСТдСния β€ž-Wmismatched-tagsβ€œ ΠΈ β€ž-Wredundant-tagsβ€œ.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π½Π° командния Ρ€Π΅Π΄:
    • "-fallocation-dce" Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° Π½Π΅Π½ΡƒΠΆΠ½ΠΈΡ‚Π΅ Π΄Π²ΠΎΠΉΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ "Π½ΠΎΠ²" ΠΈ "ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅".
    • "-fprofile-partial-training" Π·Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π·Π° ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ няма изпълнСниС Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.
    • "-fprofile-reproducible Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°.
    • β€ž-fprofile-prefix-pathβ€œ, Π·Π° Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ основната дирСктория Π·Π° компилация Π½Π° ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π·Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ» (Π·Π° β€ž-fprofile-generate=profile_dirβ€œ ΠΈ β€ž-fprofile-use=profile_dirβ€œ).
  • Π’ прСдупрСдитСлния тСкст Π·Π° спомСнатитС ΠΎΠΏΡ†ΠΈΠΈ са прСдоставСни Ρ…ΠΈΠΏΠ΅Ρ€Π²Ρ€ΡŠΠ·ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π΄ΠΎ докумСнтацията Π·Π° Ρ‚Π΅Π·ΠΈ ΠΎΠΏΡ†ΠΈΠΈ. Замяната Π½Π° URL сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° опцията "-fdiagnostics-urls".
  • Π”ΠΎΠ±Π°Π²Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π° прСпроцСсор "__ΠΈΠΌΠ°_Π²Π³Ρ€Π°Π΄Π΅Π½β€œ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½ΠΎΠ²Π° Π²Π³Ρ€Π°Π΄Π΅Π½Π° функция "__builtin_roundeven" с рСализация Π½Π° функцията Π·Π° Π·Π°ΠΊΡ€ΡŠΠ³Π»ΡΠ²Π°Π½Π΅, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π° Π² спСцификацията ISO/IEC TS 18661, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° "ΠΊΡ€ΡŠΠ³Π»Π°", Π½ΠΎ Π·Π°ΠΊΡ€ΡŠΠ³Π»ΡΡ‰Π° част ΠΏΠΎ-голяма ΠΎΡ‚ 0.5 Π½Π°Π³ΠΎΡ€Π΅ (Π΄ΠΎ ΠΏΠΎ-голяма стойност), ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠ° ΠΎΡ‚ 0.5 - Π½Π°Π΄ΠΎΠ»Ρƒ (Π΄ΠΎ Π½ΡƒΠ»Π°), ΠΈ Ρ€Π°Π²Π½ΠΎ Π½Π° 0.5 - Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ ΠΏΠ°Ρ€ΠΈΡ‚Π΅Ρ‚Π° Π½Π° прСдпослСдната Ρ†ΠΈΡ„Ρ€Π°.
  • Π—Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° AArch64 Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ SVE2 ΠΈ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° SVE (Scalable Vector Extension), Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ SVE ACLE Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° вСкторизация. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° LSE (Π³ΠΎΠ»Π΅ΠΌΠΈ систСмни Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ) ΠΈ TME (Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚) Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π°. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ инструкции, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π² Armv8.5-A ΠΈ Armv8.6-A, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ инструкции Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ числа, Π·Π°ΠΊΡ€ΡŠΠ³Π»ΡΠ½Π΅, ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Ρ‚Π°Π³ΠΎΠ²Π΅ с ΠΏΠ°ΠΌΠ΅Ρ‚,
    bfloat16 ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π”ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° процСсор
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 ΠΈ
    Marvell ThunderX3.

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ABI FDPIC (32-Π±ΠΈΡ‚ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ) Π·Π° ARM64. ΠŸΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° 64-Π±ΠΈΡ‚ΠΎΠ²ΠΈ Ρ†Π΅Π»ΠΈ числа. Π”ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° процСсора
    Arm Cortex-A77,
    Arm Cortex-A76AE ΠΈ
    Ръка Cortex-M35P. Π Π°Π·ΡˆΠΈΡ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° инструкции Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ ACLE, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ 32-Π±ΠΈΡ‚ΠΎΠ² SIMD, 16-Π±ΠΈΡ‚ΠΎΠ²ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΠΊΠ° с Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° DSP Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ СкспСримСнтална ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ACLE CDE (Custom Datapath Extension) инструкции.

  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ ΠΈ вСкторизация Π² Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° AMD Π³Ρ€Π°Ρ„ΠΈΡ‡Π½ΠΈ процСсори, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° GCN.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° XMEGA-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ устройства Π·Π° AVR Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809, ATmega1608, ATmega1609 3208, ATmega3209, ATmega4808 4809, ATmegaXNUMX ΠΈ ATmegaXNUMX.

  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΅ Π½ΠΎΠ²ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ инструкции Π½Π° Intel ENQCMD (-menqcmd) Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ IA-32/x86-64. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° процСсори Intel Cooperlake (-march=cooperlake, Π²ΠΊΠ»ΡŽΡ‡Π²Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ AVX512BF16 ISA) ΠΈ Tigerlake (-march=tigerlake, Π²ΠΊΠ»ΡŽΡ‡Π²Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡΡ‚Π° MOVDIRI, MOVDIR64B ΠΈ AVX512VP2INTERSECT ISA).
  • ВнСдряванСто Π½Π° HSAIL (ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Π΅Π·ΠΈΠΊ Π·Π° Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Π° систСмна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°) Π·Π° Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΈ изчислитСлни систСми, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° HSA, Π΅ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΎ ΠΈ вСроятно Ρ‰Π΅ бъдС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΎ Π² Π±ΡŠΠ΄Π΅Ρ‰Π° вСрсия.

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

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