Вышла новая версия набора компиляторов GNU — 4.8.0. Среди нововведений:
- Теперь для сборки GCC требуется компилятор С++.
- Формат отладочной информации по умолчанию изменён на DWARF4, который поддерживается в GDB 7.5, Valgrind 3.8.0 и elfutils 0.154.
- Добавлен новый уровень оптимизации -Og, предназначенный для быстрой компиляции и отладки, обеспечивая при этом приемлемую производительность.
- Убран ряд узких мест в оптимизаторе, что существенно ускорило компиляцию чрезвычайно больших функций.
- Добавлены AddressSanitizer (быстрый детектор ошибок работы с памятью) и ThreadSanitizer (детектор гонок данных).
- Улучшены сообщения об ошибках, исходная строка выводится полностью, а колонка с ошибкой отмечается знаком ^. Опция ftrack-macro-expansion=2 теперь включена по умолчанию, что показывает стек раскрытия макросов:
t.c:1:94: error: invalid operands to binary < (have ‘struct mystruct’ and ‘float’) #define MYMAX(A,B) __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; }) ^ t.c:7:7: note: in expansion of macro 'MYMAX' X = MYMAX(P, F);
- Улучшена поддержка стандарта C++11: поддерживается ключевое слово thread_local, синтаксис атрибутов, спецификаторов выравнивания и наследование конструкторов. Также добавлена опция -std=C++1y для поддержки будущего стандарта, пока она добавляет только возможность автоматического определения типа результата в определении функций.
- Реализована предварительная версия языка Go 1.1.
- Добавлена поддержка архитектуры AArch64.
>>> Подробности