Випуск GCC 16.1: нові можливості для розробників
Випуск GCC 16.1: нові можливості та покращення для розробників
Розробники GCC оголосили про випуск GCC 16.1, першої стабільної версії серії GCC 16. Цей реліз входить до складу GNU Compiler Collection і пропонує нові функції для розробників.
Зміни у версії GCC 16.1
Головною зміною є те, що фронтенд C++ у GCC тепер за замовчуванням використовує GNU C++20 замість GNU C++17. Проекти, які залежать від старшої версії стандарту C++, можуть знадобитися вказати параметр -std= у своїх збіркових прапорцях або оновити свій код для GCC 16. Підтримка бібліотек C++20 тепер стабільна, але модулі C++20 залишаються експериментальними і все ще вимагають -fmodules.
Експериментальна підтримка C++26
GCC 16.1 вводить експериментальну підтримку кількох нових функцій C++26. Серед них – рефлексія, контракти, оператори розширення, constexpr виключення, а також нові елементи стандартної бібліотеки, такі як std::simd, std::inplace_vector, std::optional<T&>, std::copyable_function та std::function_ref.
Новий фронтенд для Algol 68 та оновлені діагностики
Додано новий експериментальний фронтенд компілятора Algol 68, ga68. За словами проекту GCC, цей фронтенд націлений на мову, описану у Переглянутому звіті, включаючи затверджені виправлення і реалізує вибрані розширення GNU та преамбулу POSIX.
Діагностики також оновлені. GCC 16 тепер здатен генерувати діагностики в експериментальному HTML-форматі. Вихід SARIF включає нову інформацію про управління потоками. Старий формат діагностик JSON був видалений, і користувачів просять використовувати SARIF для машиночитних діагностик.
Розширення підтримки C23 і покращення оптимізації
Цей реліз розширює підтримку C23 _BitInt на нові цільові платформи, такі як RISC-V, Arm, S/390 та LoongArch. Фронтенд C тепер підтримує атрибуцію з підрахунком для полів покажчиків. Реалізація спільної пам’яті Fortran тепер додає підтримку багатопоточності на одномісних системах.
GCC 16.1 включає покращення оптимізації, такі як вдосконалення векторизації, підтримка векторизації нерахованих циклів та покращене оброблення редукцій і ранніх виходів. Оптимізація на момент зв’язування тепер краще обробляє верхньорівневі асемблерні інструкції, використовуючи -flto-toplevel-asm-heuristics.
Оновлення підтримки апаратного забезпечення
Підтримка апаратного забезпечення також оновлена. На платформі x86, GCC 16 додає підтримку AMD Zen 6 за допомогою -march=znver6, Intel Wildcat Lake з -march=wildcatlake та Intel Nova Lake з -march=novalake. Підтримка виведення на GPU AMD тепер включає експериментальну підтримку MI300, а LoongArch і IBM Z отримують подальші покращення компілятора.
Як і з попередніми версіями GCC, деякий код, який компілювався з попередніми версіями, може вимагати змін для GCC 16.1. Новий стандарт C++20 є найбільш суттєвим моментом несумісності, особливо для проектів і систем збірки, які не встановлюють явно стандарт C++.
Більш детально з інформацією про GCC 16.1 можна ознайомитися в нотатках про реліз або оголошенні про випуск.
GCC 16.1 вже доступна на серверах випуску проекту GNU в каталозі gcc-16.1.0.




