GHC | |
---|---|
![]() | |
Тип | компилятор, открытое программное обеспечение, свободное и открытое программное обеспечение и Оптимизация компилятора |
Разработчик | Университет Глазго |
Написана на | Си и Haskell |
Операционные системы | Linux, FreeBSD, NetBSD, OpenBSD, Solaris, macOS, Windows и DragonFly BSD |
Первый выпуск | 1989 |
Последняя версия | |
Репозиторий | gitlab.haskell.org/ghc/g… |
Лицензия | модифицированная лицензия BSD[вд][2] |
Сайт | haskell.org/ghc/ (англ.) |
GHC (англ. Glasgow Haskell Compiler) — один из самых мощных и развитых компиляторов функционального языка программирования Haskell, разрабатывается под координацией лаборатории университета Глазго; ключевые разработчики — Саймон Пейтон-Джонс и Саймон Марлоу (англ. Simon Marlow). Свободно распространяется под модифицированной лицензией BSD; работает на большинстве популярных Unix-систем и входит в большинство дистрибутивов Linux, есть версии для Windows и macOS.
Обеспечивается три варианта компиляции: непосредственно в машинные коды целевой архитектуры, компиляция через промежуточный код на языке Си или C--, компиляция под LLVM. Сам компилятор в основном написан на Haskell, но среда исполнения для скомпилированных программ реализована на Си и C--. Кроме компилятора, включает интерпретирующую REPL-среду GHCi.
Обеспечивает полную поддержку стандартов Haskell-98 и Haskell-2010, дополнительно реализован широкий список расширений. Одна из особенностей — параллельное исполнение программ, для которой не требуется явное выделение потоков выполнения (лишь требуется явная аннотация от разработчика программы). Реализованы значительные возможности по оптимизации программ, включая межмодульную оптимизацию. Поддерживаются различные варианты профилирования.
Некоторые поддерживаемые расширения системы типов: экзистенциальный полиморфизм, полиморфизм высших порядков, импредикативный полиморфизм, обобщённые алгебраические типы данных, семейства типов (индексированные синонимы типов, индексированные типы данных).