- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

Детектор 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 [4]. Вкратце, причина в популярности языка C++ и более чистом коде на «плюсах».

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

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

Автор: alizar

Источник [9]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/30240

Ссылки в тексте:

[1] GCC 4.8.0: http://gcc.gnu.org/gcc-4.8/changes.html

[2] Address Sanitizer: https://code.google.com/p/address-sanitizer/

[3] Thread Sanitizer: https://code.google.com/p/data-race-test/wiki/Thread Sanitizer

[4] GCC Wiki: C++ Conversion: http://gcc.gnu.org/wiki/cxx-conversion

[5] Исходный код GCC 4.8.0: http://gcc.gnu.org/mirrors.html

[6] Официальный SVN-сервер: http://gcc.gnu.org/svn.html

[7] GCC-мануалы: http://gcc.gnu.org/onlinedocs/4.8.0/

[8] не отразился: http://rusty.ozlabs.org/?p=330

[9] Источник: http://habrahabr.ru/post/174017/