Возрадуйтесь братия и сестры! Очередной релиз несомненно одного из самых значимых проектов был выпущен на свободу. Итак 25 марта версия 4.6 увидела свет.
Давайте кратко посмотрим, что интересного разработчики GCC предлагают нам.
Давайте кратко посмотрим, что интересного разработчики GCC предлагают нам.
- Link Time Optimization. По умолчанию оптимизация происходит только на уровне юнита компиляции (файла), но с новой версией GCC вы можете оптимизировать бинарный код на уровне приложения. Код для LTO имелся еще в 4.5, но разработчики посчитали реализацию сырой и не включили в предыдущий релиз. Сейчас же LTO работает отлично на больших опенсорсных проектах (GCC, Mozilla) — время попробовать ее и на вашем проекте. LTO ведет к значительному сокращению конечного файла, а также увеличивает скорость работы приложения. Но ничего не дается бесплатно — происходит увеличение размера промежуточных (*.o) файлов и растет потребность компилятора в памяти.
- Улучшение скоростных характеристик самого компилятора. Видимо это является ответом на критику со стороны Clang/LLVM. Теперь GCC компилирует ~ на 10% быстрее и требует меньше памяти.
- Добавлена экспериментальная поддержка некоторых фич из будущих стандартов C++0x и C1X.
- Появился frontend для языка Go. Скажем спасибо Ину Тейлору.
- Добавлена поддержка процессоров Cortex-M4.
- Теперь GCC корректно работает с Core Foundation на MacOSX. Это позволяет использовать версию 4.6 вместо устаревшей (4.2) из XCode.
- Реализован SplitStack на платформе x86/64. Теперь не нужно выделять огромный неделимый кусок памяти для стека процесса. SplitStack позволяет выделять память под стек динамически в куче. Это дает возможность масштабировать количество процессов/co-routines в 32-битном аддресном пространстве до нескольких миллионов.