Glasgow Haskell Compiler (GHC) — один из самых мощных и развитых на сегодняшний день компиляторов функционального языка программирования Haskell.
GHC является компилятором языка Haskell, основанным на идеологии открытого исходного кода.
Возможности и особенности компилятора:
- Кроме собственно компилятора, имеется интерпретирующая интерактивная среда (GHCi).
- Полная поддержка стандарта языка Haskell-2010, дополнительно поддерживается широкий список расширений.
- Автоматическое распараллеливание выполнения программы (без явного использования нитей) в системах с многоядерными процессорами. Поскольку отсутствие побочных эффектов в чистых функциях гарантировано, в любом вызове функции всегда допустимо параллельное вычисление двух различных параметров — порядок их вычисления не может оказать влияния на результат вызова.
- Работа на разнообразных платформах (включая Windows, многие варианты Unix).
- Большие возможности по оптимизации программ, включая межмодульную оптимизацию.
- Три варианта компиляции: непосредственно в машинные коды целевой архитектуры, компиляция через промежуточный код на языке C или C--, компиляция под виртуальную машину LLVM.
- Поддерживаются различные варианты профилирования.
Основные изменения в новой версии компилятора:
- Добавлена реализация линейных типов (расширение LinearTypes). Линейные типы позволяют отслеживать использование ресурсов на стадии компиляции и могут использоваться, среди прочих вещей, для статического управления памятью в стиле Rust.
- Новая встроенная библиотека для работы с числами неограниченного размера: ghc-bignum. Её использование помогает с переносимостью в системах, где библиотека GMP по каким-либо причинам недоступна.
- Улучшения в кодогенераторе, значительно увеличивающие производительность многих программ.
- Улучшения в коде проверки сравнения с образцом (pattern matching), позволяющие находить лишние проверки в случаях, где раньше это было невозможно.
- Новый IO-менеджер для платформы Windows. Раньше на Windows был использован IO-менеджер для Unix-систем, что приводило в худшей производительности на этой платформе. Также прекращена поддержка Windows Vista. Теперь для сборки и запуска программ на Haskell требуется минимум Windows 7.
- Добавлено расширение QualifiedDo, расширяющее возможности по переопределению поведения кода.
- Для сборки с LLVM теперь требуется версия 9.0 или выше.