Вышли компиляторы GCC 4.9.0 с множеством новых «фишек»

    Якуб Елинек (Jakub Jelinek) от имени всех разработчиков свободных компиляторов GNU Compiler Collection из Фонда свободного ПО официально объявил о выпуске новой версии GCC 4.9.0.

    «Один год и один месяц прошли с момента выпуска последней мажорной версии GNU Compiler Collection, — пишет Елинек, — так что пришло время объявить о новом основном релизе. GCC 4.9.0 несёт в себе важные новые функции, недоступные в GCC 4.8.x или предыдущих версиях GCC».

    Среди самого главного можно отметить поддержку OpenMP 4.0, последней версии спецификаций программирования для многоядерных процессоров. Кстати говоря, в LLVM/Clang вообще отсутствует поддержка хоть какой-нибудь версии OpenMP.

    Значительно улучшено качество оптимизации при компоновке (link-time optimization, LTO), а также улучшены некоторые другие алгоритмы оптимизации, в том числе межпроцедурная оптимизация и оптимизация с обратной связью (feedback-directed optimization). К примеру, благодаря LTO использование памяти при компиляции Firefox уменьшилось с 15 ГБ до 3,5 ГБ, а время выполнения этой процедуры — с 1700 до 350 секунд.

    Средства диагностики GCC 4.9.0 теперь работают в цвете, подцвечивая маркеры ошибок, предупреждения и т.д.

    Улучшена поддержка языка программирования C в стандарте ISO C11, а также сделана значительная работа по предварительной поддержке C++1y (C++14), реализована поддержка Google Go 1.2.1.

    Во многом продвинулась поддержка ARM-процессоров, в том числе сделан новый местный распределитель регистров памяти для AArch64, оптимизация для Cortex-A53 и Cortex-A57 и архитектуры big.LITTLE, а также другие улучшения.

    GCC 4.9.0 благодаря патчу от Intel поддерживает расширения Advanced Vector Extensions 512 (AVX-512), которые появятся в процессорах Intel не ранее, чем в конце 2015 года. Если говорить о поддержке оборудования Intel, то GCC 4.9.0 уже умеет генерировать бинарники, оптимизированные для процессоров Atom Silvermont и процессоров Broadwell, которые Intel выпустит уже в этом году. Процессоры AMD тоже не забыты: новая версия компилятора оптимизирует код для процессоров Bulldozer 4 / Excavator APU/CPU, хотя они выйдут только через год.

    Добавлена поддержка процессоров IBM Power8.

    Полный список изменений в GCC 4.9.0 см. в changelog’е. На сайте Phoronix можно найти бенчмарки, сравнивающие производительность GCC 4.9.0 по сравнению с предыдущими версиями и LLVM/Clang.
    Поддержать автора
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 22

      +18
      Из статьи как-то кажется, что ничего интересного, кроме LTO, не сделали. На самом деле, реализовали дофига всего из C++14.

      Няшки из С++
      Improved support for C++11, including:
      support for ;
      The associative containers in and and the unordered associative containers in <unordered_map> and <unordered_set> meet the allocator-aware container requirements;
      Improved experimental support for the upcoming ISO C++ standard, C++14, including:
      fixing constexpr member functions without const;
      implementation of the std::exchange() utility function;
      addressing tuples by type;
      implemention of std::make_unique;
      implemention of std::shared_lock;
      making std::result_of SFINAE-friendly;
      adding operator() to integral_constant;
      adding user-defined literals for standard library types std::basic_string, std::chrono::duration, and std::complex;
      adding two range overloads to non-modifying sequence oprations std::equal and std::mismatch;
      adding IO manipulators for quoted strings;
      adding constexpr members to , , , and some containers;
      adding compile-time std::integer_sequence;
      adding cleaner transformation traits;
      making s operator functors easier to use and more generic;
      An implementation of std::experimental::optional.
      An implementation of std::experimental::string_view.
      The non-standard function std::copy_exception has been deprecated and will be removed in a future version. std::make_exception_ptr should be used instead.

        0
        распределитель регистров памяти

        ох…
          +13
          Средства диагностики GCC 4.9.0 теперь работают в цвете, подцвечивая маркеры ошибок, предупреждения и т.д.

          Потребовалось сколько лет для того, чтобы осознать, что цветные терминалы — это не роскошь? :-)
            0
            И средства диагностики :-)
              +2
              По-моему это просто никому не нужно. Вот и делали с низким приоритетом. Куда важнее, например, поддержку C++11 было сделать быстрее.
                +8
                По-моему это просто никому не нужно

                Пока не появился clang и не показал насколько это удобно
                +1
                Примерно 12 лет от первой версии фильтра colorgcc :3
                +3
                Там ещё немало улучшений в стандартной библиотеке. Наконец-то std::regex заработал.
                  0
                  regexes in stl? классно. я как-то по старинке использую boost.regex
                    0
                    Да, появился он там ещё во времена 4.7.4, или даже раньше. Даже, что-то пытался делать, но жестоко обломился, когда попробовал [] использовать. В общем: www.cplusplus.com/reference/regex/
                  0
                  А как там с поддержкой транзакционной памяти интеловских процессоров?
                    +2
                    Поддержку добавили ещё в GCC 4.7: www-users.cs.umn.edu/~boutcher/stm/
                    Вроде бы на данный момент всё что есть в Intel TSX поддерживается.
                    +1
                    Отличная новость, ждём в дистрибутивах!

                    Помимо OpenMP 4.0 добавлена поддержка Cilk Plus:
                    Support for Cilk Plus has been added and can be enabled with the -fcilkplus option. Cilk Plus is an extension to the C and C++ languages to support data and task parallelism. The present implementation follows ABI version 1.2; all features but _Cilk_for have been implemented.

                    Смутила фраза:
                    Кстати говоря, в LLVM/Clang вообще отсутствует поддержка хоть какой-нибудь версии OpenMP.
                    Как же, вот: clang-omp.github.io/. Если мне не изменяет память, релиза с поддержкой OpenMP пока не было, но будет.
                      0
                      >будущих процессоров Atom Silvermont
                      Уже не будущих, несколько месяцев как можно купить, например, ark.intel.com/products/78953/Intel-NUC-Kit-DN2820FYK
                        +2
                        благодаря LTO использование памяти при компиляции Firefox уменьшилось с 15 ГБ до 3,5 ГБ

                        Скорее вопреки, без LTO немного памяти надо. 15 ГБ это на старых версиях GCC и с LTO.
                          +7
                          Критерий Ализара второго рода: переводная (но не отмеченная как перевод) статья из вторичного источника, по малознакомой автору теме.

                          Значительно улучшено качество оптимизации при сборке (link-time optimization, LTO), а также внедрены некоторые другие алгоритмы оптимизации, в том числе межпроцедурная оптимизация и оптимизация с обратной связью (feedback-directed optimization).
                          И не при сборке, а при компоновке, и FDO уже в GCC почти с начала ветки 4.0, а межпроцедурная оптимизация появилась в GCC ещё раньше.
                          +2
                          Пошел пересобирать Gentoo…
                            0
                            Возник вопрос: и как успехи?

                            Сам все никак не решусь перейти пока замаскирована, и так на ~amd64 ветке сижу, периодически проблем со сборкой хватает.
                              0
                              Множество косяков с поддержкой LTO и Graphite — либо в компиляторе, либо в самих программах. Для пары десятков пакетов пришлось отключить, иначе вообще не линкуется (обычно — не находит адресов каких-либо функций).
                            0
                            GCC 4.9.0 благодаря патчу от Intel поддерживает расширения Advanced Vector Extensions 512 (AVX-512)

                            Теперь не надо покупать Intel Composer XE 2013 для Xeon Phi?
                              0
                              Существующий на данный момент Xeon Phi использует набор инструкций LRBni, который несовместим с AVX-512.
                                +1
                                Для Xeon Phi почти всегда достаточно использовать открытый компилятор ispc.github.io. Всё равно код придётся переписывать под mic.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое