The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

22.04.2014 19:48  Релиз набора компиляторов GCC 4.9

После 13 месяцев разработки увидел свет релиз свободного набора компиляторов GCC 4.9. Новый выпуск примечателен реализацией поддержки OpenMP 4.0 и Cilk Plus, улучшением поддержки стандартов C++11 и C++14, режимом подсветки предупреждений и ошибок при выводе на экран, включением в состав детектора неопределенного поведения программы.

Основные изменения:

  • Реализована поддержка спецификации OpenMP 4.0 (Open Multi-Processing), определяющей API и способы применения методов параллельного программирования для языков Си, Си++ и Фортран (в GCC OpenMP 4.0 пока доступен только для Си и Си++ ). В OpenMP 4.0 обеспечена поддержка ускорения за счет привлечения мощностей GPU, представлены значительные улучшения в модели выполнения задач, добавлены механизмы обработки ошибок, добавлена поддержка определенных пользователем редукций, обеспечена векторизация циклов с использованием инструкции SIMD, добавлен ряд расширений для поддержки параллельного выполнения на уровне задач;
  • Частично реализована поддержка набора расширений Cilk Plus, предлагающего новую эффективную методику параллельного программирования для языков Си и Си++, позволяющую существенно упростить разработку программ, части которых выполняются параллельно с задействованием разных процессорных ядер и векторных сопроцессоров (Vector Units). Для управления генерацией кода с улучшенной векторизацией предусмотрена pragma simd. Поддерживается два метода увеличения производительности - параллелизм данных и параллельное выполнение подпрограмм. В первом случае, обеспечиваются механизмы прозрачного распараллеливания типовых операций над массивами данных и автоматическое задействование SIMD-инструкций. Для организации параллелизма на уровне подпрограмм в обиход вводится три ключевых слова: _Cilk_spawn - запуск функции в параллельном режиме, _Cilk_sync - ожидание завершения параллельно выполняемой функции, и _Cilk_for - организация работы цикла в параллельном режиме. "_Cilk_for" в GCC пока не поддерживается.
  • Для языков C и C++ добавлен компонент UBSAN (Undefined Behavior Sanitizer) с реализацией детектора неопределенного поведения, выявляющего во время выполнения программы ситуации, когда поведение программы становится неопределенным (зависит от реализации компилятора) из-за ошибки программиста. Для включения UBSAN следует использовать опцию "-fsanitize=undefined";
  • Улучшена работа оптимизаций во время динамического связывания (LTO, Link Time Optimization) и межпроцедурных оптимизаций, в которых устранена серия негативно сказывающихся на масштабируемости узких мест. В реализации межпроцедурных оптимизаций добавлен новый проход для выполнения спекулятивной девиртуализации (-fdevirtualize-speculatively), а также добавлен новый модуль с анализов наследования типов. В LTO переписан код слияния типов, новая реализация значительно быстрее и потребляет меньше памяти. Реализована техника раннего удаления виртуальных методов и загрузки функций по мере необходимости, что позволило снизить потребление памяти во время связывания. В итоге потребление памяти при сборке Firefox в отладочном режиме удалось сократить с 15 до 3.5 Гб, а время связывания уменьшить с 1700 до 350 секунд;
  • Улучшена техника оптимизации на основе обратной связи (Feedback directed). Добавлен новый проход для изменения порядка функций (-freorder-functions), позволяющий значительно сократить время запуска больших приложений;
  • Распределитель локальных регистров (Local Register Allocator), ранее доступный только для ia32 и x86-64, теперь адаптирован и включен по умолчанию для целевых архитектур Aarch64, ARM, S/390 и ARC, а также реализован в качестве опции для платформ PowerPC и RX;
  • Существенно расширена поддержка архитектуры ARM. Внесены оптимизации для процессоров Cortex-A15, Cortex-M4, Cortex-A52, Cortex-A53 и Cortex-A57. Добавлены оптимизации для big.LITTLE. Обеспечена поддержка архитектуры ARMv8-A. Добавлены опции для поддержи процессоров Cortex-A12 (-mcpu=cortex-a12), Cortex-R7 (-mcpu=cortex-r7), Cortex-A53 - Cortex-A57 (-mcpu=cortex-a5x);
  • Поддержка новой little-endian платформы powerpc64le-linux для которой предлагается новый PowerPC ELFV2 ABI. Поддержка Power ISA 2.07, включая транзакционную память;
  • В компоненте Address Sanitizer обеспечена поддержка архитектуры ARM в дополнение к ранее поддерживаемым архитектурам x86 и x86_64. Address Sanitizer позволяет выявлять ошибки работы с памятью и факты некорректного обращения к памяти, такие как обращение к областям памяти, после их освобождения ("use-after-free"), разрушение кучи, повреждение стека и переполнение буферов;
  • Прекращена поддержка устаревшего runtime-детектора утечек памяти mudflap;
  • Добавлена поддержка некоторых новшеств, развиваемых в рамках будущего стандарта C++14, например, реализованы массивы переменного размера, форма инициализации "[x = 42]{ ... };", разделители цифр (int j = 1'048'576;). В стандартную библиотеку С++ добавлена поддержка компонента "regex". Внесена серия улучшений, связанная с поддержкой стандарта C++11;
  • По реализации возможностей уровень поддержки стандарта C11 доведён до C99. В новой версии добавлена поддержка таких компонентов С11, как _Atomic, _Generic и _Thread_local. Добавлено новое Си-расширение __auto_type, предоставляющее для GNU C подмножество функциональности "auto" из C++11;
  • Улучшена поддержка языка ADA. GNAT переведён на использование по умолчанию стандарта ADA 2012, вместо ADA 2005;
  • В компиляторе для языка Fortran улучшена поддержка спецификации Fortran 2008 и добавлена поддержка Fortran 2003 finalization;
  • Обеспечена поддержка развиваемого компанией Google языка программирования Go 1.2.1;
  • Реализовано поддержка микроархитектур Intel Silvermont (-march=silvermont) и Broadwell (-march=broadwell), процессоров 15 семейства процессоров AMD (Excavator, -march=bdver4 и -mtune=bdver4), процессоров IBM Power8 и RX100, RX200 и RX600;
  • Для процессоров Intel добавлена поддержка инструкций AVX-512, которая может использоваться для целевых архитектур x86-64 и ia32;
  • Возможность подсветки текста выводимых ошибок и предупреждений ("-fdiagnostics-color=auto");
  • Объявлена устаревшей поддержка платформы Solaris 9 (*-*-solaris2.9), код для которой будет удалён в выпуске GCC 4.10. Компания Oracle прекратила стандартную поддержку Solaris 9 в 2011 году, расширенная платная поддержка завершится в октябре 2014 года.


  1. Главная ссылка к новости (http://gcc.gnu.org/ml/gcc/2014...)
  2. OpenNews: В условиях конкуренции с Clang Эрик Реймонд предложил отменить ограничения GCC в области плагинов
  3. OpenNews: Ричард Столлман указал на недопустимость проприетарных надстроек над GCC
  4. OpenNews: Для GCC подготовлен фронтэнд с поддержкой языка Rust, развиваемого проектом Mozilla
  5. OpenNews: Наиболее интересные новшества, ожидаемые в GCC 4.9
  6. OpenNews: Выпущен набор компиляторов GCC 4.8
Лицензия: CC-BY
Тип: Интересно / Программы
Ключевые слова: gcc, compile
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, MSlinux, 20:37, 22/04/2014 [ответить] [смотреть все]
  • –9 +/
    Теперь мы будем ждать новой версии Cygwin
     
     
  • 2.71, Аноним, 15:20, 25/04/2014 [^] [ответить] [смотреть все] [показать ветку]
  • +1 +/
    Чувак, не мучай себя, переходи на пингвины Это я тебе как бывший юзер цыгвин... весь текст скрыт [показать] [показать ветку]
     
  • 1.2, Константин, 20:44, 22/04/2014 [ответить] [смотреть все]  
  • +1 +/
    отличнейшая новость для тех кто любит все усорять без большого геммороя > Реализована поддержка спецификации OpenMP 4.0
     
     
  • 2.3, ананим, 20:54, 22/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    > усорять

    Хорошо сказал.
    И главное правда.

     
     
  • 3.17, metallica, 23:27, 22/04/2014 [^] [ответить] [смотреть все]  
  • –1 +/
    Из всех способов размножения потоков, самый практичный, удобный и даже элегантны... весь текст скрыт [показать]
     
     
  • 4.21, ананим, 00:41, 23/04/2014 [^] [ответить] [смотреть все]  
  • –1 +/
    Ложь И это мягко говоря Вообще-то сикол называется clone2 Через него тотже фо... весь текст скрыт [показать]
     
     
  • 5.25, Crazy Alex, 02:34, 23/04/2014 [^] [ответить] [смотреть все]  
  • +3 +/
    Насчет засрать поддерживаю, но omp таки удобно там, где нужно просто наплодить... весь текст скрыт [показать]
     
     
  • 6.60, arisu, 12:35, 24/04/2014 [^] [ответить] [смотреть все]  
  • –1 +/
    внимательно осматривая снова что-то мне std parallelism из D больше нравится ... весь текст скрыт [показать]
     
  • 5.33, Аноним, 06:31, 23/04/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    Прописывать лимиты на процесс снова внезапно в цене Дык это - скорее хорошо ... весь текст скрыт [показать]
     
  • 5.45, metallica, 11:27, 23/04/2014 [^] [ответить] [смотреть все]  
  • –1 +/
    Как ещё изящнее могу запустить пару потоков, чем так code pragma omp paralle... весь текст скрыт [показать]
     
     
  • 6.46, анонимище, 11:59, 23/04/2014 [^] [ответить] [смотреть все]  
  • +/
    std thread prl detach std thread prl detach ... весь текст скрыт [показать]
     
     
  • 7.47, metallica, 12:42, 23/04/2014 [^] [ответить] [смотреть все]  
  • –1 +/
    Ничего изящного А если 30 потоков И чтоб без циклов ... весь текст скрыт [показать]
     
     
  • 8.48, анонимище, 12:57, 23/04/2014 [^] [ответить] [смотреть все]  
  • –1 +/
    Что за дурные ограничения, парниша Я так же могу А сделай с OMP что пользовате... весь текст скрыт [показать]
     
     
  • 9.49, pavlinux, 14:33, 23/04/2014 [^] [ответить] [смотреть все]  
  • –1 +/
    pragma omp parallel for for i 0, i 20 i pthread_create thread i , ... весь текст скрыт [показать]
     
     
  • 10.59, Аноним, 11:24, 24/04/2014 [^] [ответить] [смотреть все]  
  • –2 +/
    Создавать несколько потоков только для того, чтобы каждый из них породил по ещё ... весь текст скрыт [показать]
     
     
  • 11.67, Аноним, 08:10, 25/04/2014 [^] [ответить] [смотреть все]  
  • +2 +/
    Чаво?
     
  • 11.68, Аноним, 14:34, 25/04/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    Вы там что, форкбомбу оптимизируете под мнеогоядерность ... весь текст скрыт [показать]
     
  • 2.6, Вук, 21:20, 22/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    А вы из тех, кто любит удалять всё "лишнее" из рабочей системы? Гг
     
  • 1.4, Аноним, 21:15, 22/04/2014 [ответить] [смотреть все]  
  • –1 +/
    Ждем-с чем ответит Цланг, хо-хо-хо!
     
     
  • 2.32, Аноним, 04:43, 23/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Что значит догонять Во-первых, он никогда не был отстающим, он шёл и идёт парал... весь текст скрыт [показать] [показать ветку]
     
  • 1.7, Аноним, 21:27, 22/04/2014 [ответить] [смотреть все]  
  • +/
    Никто не знает, как работает UBSAN? И что за неопределённое поведение?
     
     
  • 2.8, _, 21:55, 22/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    http stackoverflow com questions 20738232 gcc-4-9-undefined-behavior-sanitizer... весь текст скрыт [показать] [показать ветку]
     
  • 2.9, Vkni, 21:55, 22/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Как работает - не знаем Что такое UB - вот http www viva64 com ru t 0066 ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.72, Аноним, 15:23, 25/04/2014 [^] [ответить] [смотреть все]  
  • +/
    Жаль что вам не объяснили что пиарить проприетарный win-only продукт при рассказ... весь текст скрыт [показать]
     
     
  • 4.73, Vkni, 06:13, 30/04/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    Некультурно делать в слове из 4-х букв одну ошибку - Не надо компостировать ... весь текст скрыт [показать]
     
  • 2.26, Crazy Alex, 02:37, 23/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Если вы не знаете, что такое неопределенное поведение - для начала надо хотя бы ... весь текст скрыт [показать] [показать ветку]
     
  • 2.50, pavlinux, 14:48, 23/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Это когда ничего не делаешь, а оно делается и при это ошибки не возникает И при... весь текст скрыт [показать] [показать ветку]
     
  • 2.61, arisu, 12:37, 24/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    если человек задаёт второй вопрос, то ответ на первый ему не нужен ему хороший ... весь текст скрыт [показать] [показать ветку]
     
     ....нить скрыта, показать (7)

  • 1.11, Аноним, 22:18, 22/04/2014 [ответить] [смотреть все]  
  • +/
    К сожалению, не попало Кроме этого, в состав GCC 4 9 имеют шанс попасть библио... весь текст скрыт [показать]
     
     
  • 2.62, arisu, 12:39, 24/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    к счастью надеюсь, эту фиготень тихонько закопают если не уже ... весь текст скрыт [показать] [показать ветку]
     
  • 1.13, Аноним, 22:42, 22/04/2014 [ответить] [смотреть все]  
  • +/
    Релиз набора компиляторов GCC 4.9... весь текст скрыт [показать]
     
     
  • 2.15, cdome, 23:04, 22/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    -fsanitize=address
     
  • 2.69, Аноним, 15:14, 25/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > Подскажите, что сейчас вместо mudflap?

    Valgrind.

     
  • 1.19, kachsheev, 23:54, 22/04/2014 [ответить] [смотреть все]  
  • +/
    Интересно, когда-нибудь из thread уберут макрос проверки версии языка/компилятора?
     
     
  • 2.51, Аноним, 15:36, 23/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • –3 +/
    Используйте llvm'ский libc++ вместо убогого libstdc++
     
     
  • 3.53, kachsheev, 16:33, 23/04/2014 [^] [ответить] [смотреть все]  
  • +/
    Желаю Вам успешно скомпилировать Linux клэнгом.
     
     
  • 4.54, Аноним, 17:23, 23/04/2014 [^] [ответить] [смотреть все]  
  • –1 +/
    FreeBSD скомпилировали Над Linux усиленно работают Если чере пару минорных рел... весь текст скрыт [показать]
     
     
  • 5.55, kachsheev, 17:48, 23/04/2014 [^] [ответить] [смотреть все]  
  • +2 +/
    Похлопаю, порадуюсь и продолжу использовать OpenMP с gcc.
     
     
  • 6.57, Аноним, 03:13, 24/04/2014 [^] [ответить] [смотреть все]  
  • +/
    Все соснули http://clang-omp.github.io/
     
     
  • 7.66, kachsheev, 22:08, 24/04/2014 [^] [ответить] [смотреть все]  
  • +/
    Хлопаю, радуюсь... и прохожу мимо.
     
  • 5.70, Аноним, 15:18, 25/04/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    Да у бздюков вечно какие-то PoC крутизны А как до дела - уйма грабель на ровном... весь текст скрыт [показать]
     
  • 1.20, Аноним, 00:29, 23/04/2014 [ответить] [смотреть все]  
  • +/
    А std function всё так же память выделяет на каждый чих, млять, вместо того, чт... весь текст скрыт [показать]
     
     
  • 2.52, Аноним, 15:37, 23/04/2014 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Используйте llvm ский libc вместо убогого libstdc ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.63, arisu, 12:40, 24/04/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    у llvm появился libc откуда зачем O_O... весь текст скрыт [показать]
     
     
  • 4.64, Andrey Mitrofanov, 12:47, 24/04/2014 [^] [ответить] [смотреть все]  
  • +1 +/
    libstd was moved to a port and libc was imported http wiki freebsd org... весь текст скрыт [показать]
     
     
  • 5.65, arisu, 12:49, 24/04/2014 [^] [ответить] [смотреть все]  
  • +/
    я спрашиваю, откуда оно в llvm и зачем оно там в clang 8212 это я бы ещё п... весь текст скрыт [показать]
     
  • 1.36, Аноним, 07:43, 23/04/2014 [ответить] [смотреть все]  
  • +/
    вау сколько ВСЕГО полезного и Нужного из оффтопа скоро Эскаватор и Пауэр... весь текст скрыт [показать]
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor