Glasgow Haskell Compiler 9.0.1 (GHC)

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 или выше.

Разрабатывается свободной рабочей группой из многочисленных разработчиков, собранных по всему миру и координируемых из лаборатории университета Глазго.