Spec-Zone.ru › Haskell 8

2. Введение в GHC

Это руководство по использованию Glasgow Haskell Compiler (GHC): интерактивной и пакетной системы компиляции для языка Haskell 2010.

GHC состоит из двух основных компонентов: интерактивного интерпретатора Haskell (также известного как GHCi), описанного в Использование GHCi, и пакетного компилятора, описанного в Использование GHC. Фактически, GHC представляет собой одну программу, которая запускается с различными опциями для предоставления либо интерактивной, либо пакетной системы.

Пакетный компилятор может использоваться вместе с GHCi: скомпилированные модули могут быть загружены в интерактивную сессию и использоваться так же, как интерпретированный код, и на самом деле, при использовании GHCi большая часть кода библиотек будет предварительно скомпилирована. Это означает, что вы получаете лучшее из обоих миров: быстродействие предварительно скомпилированного кода библиотек и быструю компиляцию для частей вашей программы, активно разрабатываемых.

GHC поддерживает множество расширений языка, включая конкурентность, интерфейс для внешних функций, исключения, расширения системы типов, такие как многопараметрические классы типов, локальные универсальные и экзистенциальные квантификации, функциональные зависимости, область действия переменных типов и явные необработанные типы. Все это описано в Особенности языка GHC.

GHC имеет всеобъемлющий оптимизатор, поэтому когда вы хотите «полностью использовать возможности» (и у вас есть время) GHC может создавать довольно быстрый код. В качестве альтернативы, по умолчанию используется компиляция с максимальной скоростью, не уделяя большого внимания оптимизации сгенерированного кода (хотя GHC, вероятно, не относится к числу быстрых компиляторов :-).

Система профилирования GHC поддерживает «стеки центров затрат»: способ просмотра профиля программы Haskell в структуре графа вызовов. Подробнее см. в Профилирование.

GHC поставляется с рядом библиотек. Эти библиотеки описаны в отдельной документации.

2.1. Получение GHC

Перейдите на главную страницу GHC и следуйте ссылке «скачать», чтобы загрузить GHC для вашей платформы.

Если вы хотите скомпилировать GHC самостоятельно, перейдите к руководству по сборке GHC, чтобы узнать, как получить исходные файлы и скомпилировать их на вашей системе. Обратите внимание, что сам GHC написан на языке Haskell, поэтому вам по-прежнему потребуется установить GHC для его сборки.

2.2. Метаинформация: веб-сайты, списки рассылки и т. д.

В сети Интернет есть несколько полезных ссылок:

  • Главная страница GHC
  • Главная страница разработчиков GHC (документация для разработчиков, вики и система отслеживания ошибок)

Мы ведем следующие списки рассылки о GHC. Мы рекомендуем вам присоединиться, если это соответствует вашим потребностям.

glasgow-haskell-users

Этот список предназначен для общения пользователей GHC между собой. Если у вас есть конкретный вопрос о GHC, сначала проверьте часто задаваемые вопросы.

Подписчики могут отправлять сообщения на список по адресу glasgow-haskell-users@haskell.org. Дополнительную информацию можно найти на странице Mailman.

ghc-devs

Здесь общаются разработчики GHC. Если вы работаете с API GHC или у вас есть вопрос об реализации GHC, смело задавайте его.

Подписчики могут отправлять сообщения на список по адресу ghc-devs@haskell.org. Дополнительную информацию можно найти на странице Mailman.

Существуют и другие списки рассылки, связанные с Haskell и GHC, которые обслуживаются www.haskell.org. Полный список можно найти по адресу http://www.haskell.org/mailman/listinfo/.

2.3. Отчёт об ошибках в GHC

Glasgow Haskell — это постоянно развивающаяся система, поэтому в ней неизбежно будут ошибки. Если вы найдёте ошибку, ознакомьтесь со этой страницей вики для получения информации о том, как её сообщить.

2.4. Политика нумерации версий GHC

Начиная с версии GHC 6.8, мы приняли следующую политику нумерации версий GHC:

Стабильные ветки нумеруются x.y, где ⟨y⟩ — чётное число. Релизы на стабильной ветке x.y нумеруются x.y.z, где ⟨z⟩ (>= 1) — номер исправления. Исправления — это только исправления ошибок, и они никогда не изменяют интерфейс программиста для любого системного кода. Однако, если вы устанавливаете новое исправление поверх старого, вам необходимо перекомпилировать любой код, который был скомпилирован с использованием старых библиотек.

Значение __GLASGOW_HASKELL__ (см. Параметры, влияющие на препроцессор C) для основной версии x.y.z — это целое число ⟨xyy⟩ (если ⟨y⟩ — однозначное число, то добавляется ведущая нуль, например, в версии 6.8.2 GHC у нас будет __GLASGOW_HASKELL__==608).

Мы можем предоставить для скачивания снимки текущей стабильной ветки доступны для скачивания, а последние исходные коды доступны в репозиториях Git.

Стабильные снимки выпускаются под названием x.y.z.YYYYMMDD. где YYYYMMDD — дата исходных кодов, из которых был создан снимок, а x.y.z+1 — следующий выпуск, который будет сделан на этой ветке. Например, 6.8.1.20040225 будет снимком ветки 6.8 во время разработки 6.8.2.

Мы можем предоставить для скачивания снимки HEAD доступны для скачивания, а последние исходные коды доступны в репозиториях Git.

Нестабильные снимки выпускаются под названием x.y.YYYYMMDD. где YYYYMMDD — дата исходных кодов, из которых был создан снимок. Например, 6.7.20040225 будет снимком HEAD до создания ветки 6.8.

Значение __GLASGOW_HASKELL__ для снимка выпуска — целое число ⟨xyy⟩. Однако вы никогда не должны писать условный код, проверяющий это значение: поскольку интерфейсы изменяются ежедневно, и у нас нет более точного разделения значений __GLASGOW_HASKELL__, вы должны условно компилировать только с помощью предикатов, проверяющих, является ли __GLASGOW_HASKELL__ равным, более поздним или более ранним, чем определённая основная версия.

Номер версии вашего экземпляра GHC можно найти, вызвав ghc со флагом --version (см. Параметры подробности).

Версию компилятора можно проверить в скомпилированном коде с помощью макроса препроцессора MIN_VERSION_GLASGOW_HASKELL (определён только при использовании CPP). Подробности см. в Стандартные макросы препроцессора C++.

© 2002–2007 The University Court of the University of Glasgow. All rights reserved.
Licensed under the Glasgow Haskell Compiler License.
https://downloads.haskell.org/~ghc/8.10.2/docs/html/users_guide/intro.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API