GCC 16

Bir yillik rivojlanishdan keyin e'lon qilindi выпуск свободного Π½Π°Π±ΠΎΡ€Π° компиляторов GCC 16.1, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ выпуск Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ GCC 16.x. Π’ соотвСтствии со схСмой Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ выпусков, вСрсия 16.0 использовалась Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° Π½Π΅Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° GCC 16.1 ΡƒΠΆΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Π²ΠΈΠ»Π°ΡΡŒ Π²Π΅Ρ‚ΠΊΠ° GCC 17.0, Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ сформирован ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· GCC 17.1.

asosiy o'zgartirish:

  • Π Π΅ΠΆΠΈΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для языка C++ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π½Π° использованиС стандарта C ++ 20 (Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ GNU C++20, -std=gnu++20) вмСсто Ρ€Π°Π½Π΅Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π²ΡˆΠ΅Π³ΠΎΡΡ C ++ 17. РСализация C++20 Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ объявлСна ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ.
  • Π’ состав Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ фронтэнд ga68 для компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° языкС программирования Алгол 68 (Algol 68).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° диагностичСской ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ HTML. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π° информация ΠΎ Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠ°Ρ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ диагностики Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ SARIF, основанном Π½Π° JSON (ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Β«-fdiagnostics-format=jsonΒ» ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π°).
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° этапС связывания (LTO, Link-Time Optimization). Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«-flto-toplevel-asm-heuristicsΒ», Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ эвристику для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° с ассСмблСрными вставками. Π’Π΅Ρ…Π½ΠΈΠΊΠ° спСкулятивной Π΄Π΅Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (-fdevirtualize-speculatively) Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Π² прямыС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π»ΡŽΠ±Ρ‹Ρ… косвСнных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.
  • Kompilyatsiya vaqtida iteratsiya soni noma'lum bo'lgan sikllarni vektorlashtirishni qo'llab-quvvatlash amalga oshirildi. Dastlabki sikl chiqishlarini (masalan, break orqali) boshqarish samaradorligi yaxshilandi.
  • Eksperimental yordam qo'shildi ko'pchilik imkoniyatlar Π½Π΅Π΄Π°Π²Π½ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Ρ‘Π½Π½ΠΎΠ³ΠΎ стандарта C ++ 26. НапримСр, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹:
    • Reflektsiya (aks, Β«-freflectionΒ»), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° стадии компиляции. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Β«^^ (open-std.org)Β» для получСния ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ грамматичСской конструкции ΠΈ Β«[:…:]Β» для выполнСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прСобразования. Для прСобразования ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Π² Ρ…ΠΎΠ΄Π΅ инспСктирования ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° std::meta ΠΈ доступны Ρ‚Π°ΠΊΠΈΠ΅ возмоТности, ΠΊΠ°ΠΊ вычислСния с константами.
    • ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (shartnomalar), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ спСцификации интСрфСйсов ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Ρ€Ρ‘Ρ… Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²: pre (прСдусловиС), post (постусловиС) ΠΈ contract_assert (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° утвСрТдСния). ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«preΒ» опрСдСляСт ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…); Β«postΒ» β€” условия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ послС выполнСния (трСбования ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ); contract_assert β€” условия возникновСния ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ появится Π² GCC 16.
    • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Β«template forΒ» для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ рСфлСксии (ΠΌΠ΅Ρ‚Π°ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹), Π½Π° этапС компиляции Π² стилС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Β«template forΒ» Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° раскрываСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΈ каТдая итСрация обрабатываСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ области видимости, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ элСмСнт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ итСрируСтся Ρ†ΠΈΠΊΠ», являСтся константой для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² константных выраТСниях (constexpr). Π’ контСкстС рСфлСксии Β«template forΒ» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для ΠΎΠ±Ρ…ΠΎΠ΄Π° свойств классов ΠΈΠ»ΠΈ пСрСчислСний.
    • std::simd kutubxonasi standart C++ tipidagi tizim yordamida AVX-512 va NEON kabi SIMD ko'rsatmalar to'plamlari yordamida ma'lumotlar operatsiyalarini parallellashtirish uchun.
    • Kutubxonalar std::inplace_vector, std::ixtiyoriy , std::copyable_function, std::function_ref, std::indirect, std::polymorphic va std::owner_teng.
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ возмоТности, связанныС со стандартом C++23, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ явноС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ qo'llab-quvvatlash указания ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ символов диагностичСских сообщСний.
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° стандарта C23 (opennet.ru), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Β«counted_byΒ» для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности использования ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.
  • Davomi рСализация стандартов OpenMP 5.0, 5.1, 5.2 ΠΈ 6.0 (Open Multi-Processing), ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… API ΠΈ способы примСнСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования Π½Π° многоядСрных ΠΈ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹Ρ… (CPU+GPU/DSP) систСмах с ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ (SIMD). Yaxshilangan рСализация спСцификаций ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования OpenACC 3.0, 3.3 ΠΈ 3.4, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… срСдства для выноса ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (offloading) Π½Π° GPU ΠΈ спСциализированныС процСссоры, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ NVIDIA PTX.
  • x86 orqa tomoni endi Zen6 mikroarxitekturasiga (-march=znver6) asoslangan AMD protsessorlarini, shuningdek, Intel Wildcat Lake (-march=wildcatlake) va Nova Lake (-march=novalake) protsessorlarini qo'llab-quvvatlaydi.
  • AMD Radeon GPU (GCN) kod generatsiya qilish orqa tomoni endi AMD Instinct MI300 (gfx942) tezlatgichlarini qo'llab-quvvatlaydi.
  • RISC-V, ARM, S/390 va LoongArch arxitekturalari uchun belgilangan bitlar soniga ega butun sonlarni aniqlash uchun "_BitInt(N)" turini qo'llab-quvvatlash amalga oshirildi.

Manba: linux.org.ru

a Izoh qo'shish