GCC 4.8 завершил миграцию на C++

от автора

С выпуском GCC 4.8.0 разработчики набора компиляторов GNU Compiler Collection завершили переход на язык C++ в реализации GCC. Работа по переводу кодовой базы компилятора на C++ продолжалась c 2008 года, и теперь подошла к концу. Миграция на C++ означает, что теперь для сборки GCC из исходников обязательно требуется компилятор С++ 2003.

Ричард Столлман написал первый вариант GCC в 1985 году на непереносимом диалекте языка Паскаль. В 1987 году компилятор был переписан на языке Си, и в таком виде существовал до 2013 года.

В новой версии GCC 4.8 улучшена производительность, реализован новый уровень оптимизации –Og для сверхбыстрой компиляции почти без оптимизаций. Добавлены детектор ошибок в памяти Address Sanitizer от компании Google и детектор гонок данных Thread Sanitizer, который обнаруживает совместный доступ к одним и тем же данным из различных нитей многопоточного приложения. Более подробно о нововведениях см. release notes.

Детектор Address Sanitizer модно использовать на платформах Linux (IA-32, x86-64, x32, PowerPC, PowerPC64) и Darwin (x86-64), при этом скорость компиляции замедляется примерно в два раза.

Детектор Thread Sanitizer замедляет компиляцию примерно в 10 рах.

Кроме того, в GCC 4.8 улучшена поддержка C++11 и появилась поддержка архитектуры AArch64(ARM64), присутствующей в процессорах с набором команд ARMv8, хотя на рынке пока нет устройств с таким набором команд.

GCC — официальный компилятор системы GNU, он также является главным компилятором для ряда других операционных систем, в том числе разные варианты Linux и BSD, Mac OS X, ReactOS, BeOS и проч.

Подробнее о причинах миграции на C++ и конкретно о внесённых изменениях см. в GCC Wiki: C++ Conversion. Вкратце, причина в популярности языка C++ и более чистом коде на «плюсах».

Исходный код GCC 4.8.0
Официальный SVN-сервер
GCC-мануалы

К счастью, переход на C++ практически никак не отразился на производительности.

ссылка на оригинал статьи http://habrahabr.ru/post/174017/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *