GCC (GNU Compiler Collection) 10.1, основна версия на платформата, беше публикувана на 7 май 2020 г., с акценти, включително C ++ 20 възможности и поддръжка на език C2X. C2X е следващата голяма ревизия на езика C, която се очаква през 2022 г.
Бележките по изданието за GCC 10 показват, че са внедрени множество функции на C ++ 20, включително разрешаване на вградено сглобяване във функциите на constexpr и разширяване на структурирани обвързвания. Също така за C ++ 20, GCC 10 разрешава преобразувания в масиви с неизвестна обвързаност, позволява тривиална инициализация по подразбиране в контексти на constexpr, добавя constinit
ключовата дума и отменя ключовата volatile
дума.
За C2X, предстоящата ревизия на стандарта ISO C, се поддържат няколко функции със синтаксиса -std=c2x
и -std+gnu2x
. Сред тях са и strftime
формат проверка който носи %OB
и %Ob
формати и UTF-8 константи характер с помощта на U8 '' синтаксис.
GCC, който съществува повече от 33 години, включва предни краища и библиотеки за C, C ++, Fortran, Ada, Go и D. Публикуван е бюлетин за пренасяне към GCC 10. Други нови възможности в GCC 10.1 включват
- Добавени са вградени функции, включително
has_builtin
оператор на препроцесор, който може да се използва за заявка за поддръжка за вградени функции, предоставени от GCC и други компилатори, които го поддържат. - Добавени са командни опции. Те включват
-fallocation-dce
, за да се премахнат ненужните двойкиnew
иdelete
оператори и-fanalyzer
да се даде възможност за нов пропуск за статичен анализ и свързани предупреждения. Последният вариант трябва да се разглежда като фаза на експеримента. - Направени са подобрения на междупроцедурната оптимизация. Те включват повторно внедряване на междупроцедурните скаларни замествания на агрегати (IPA-SRA), който е преработен, за да работи по време на свързване. IPA-SRA вече може също така да премахва изчисленията и да връща неизползвани стойности за връщане.
- Подобренията за оптимизиране на времето за връзка включват нов двоичен файл
ito-dump
. Програмата може да изхвърля различна информация заbyte
обектния файл на LTO . - Направени са подобрения на оптимизацията, управлявани от профили, включително подобряване на поддръжката на профила по време на компилация и разделяне на горещо / студено.
- За семейството C
access
функцията иtype
атрибутът са добавени, за да опишат как функция осъществява достъп до обекти, предадени към нея чрез указател или препратка, и да свързват такива аргументи с цели числа, обозначаващи размера на обекта. Атрибутът се използва, за да позволи откриването на невалидни достъпи от дефинирани от потребителя функции. Има и нови предупреждения и подобрения на съществуващите предупреждения. Едно предупреждение,-Wzero-length-bounds
предупреждава за достъп до елементи от масиви с нулева дължина, които могат да се припокриват с други членове на същия обект. - Поправена е ABI несъвместимост между C ++ 14 и C ++ 17. На някои цели клас с нулев размер на субект ще бъде предаден неправилно, когато се компилира като C ++ 17 или C ++ 20.