Haskell
Небольшие заметки по Haskell/GHC
в Сизифе
Вводные термины
Haskell - чистый функциональный язык программирования общего назначения.
GHC - на данный момент основной и самый продвинутый компилятор Haskell
.
cabal - менеджер пакетов для Haskell
. Так же называется расширение файлов с метаинформацией о пакете. Непосредственно запускаемую программу cabal
для большей ясности будем называть cabal-install
(по имени пакета)
Текущее состояние дел
В Sisyphus собрана достаточно актуальная (на 2025 год) версия компилятора GHC - 9.6.6 и cabal-install 3.14.2.0
Это два определяющих инфраструктуру пакета, их сборка происходит в режиме бутстрапа (см. статью Haskell/GHC)
Версионирование GHC
Политика наименования пакетов с GHC
следующая:
В версии X.Y.Z число X.Y будем называть мажором, а Z - релизом.
В Сизифе может быть произвольное число мажорных релизов компилятора, причём установленных в системе параллельно (они в общем никак никому не мешают, только возможны периодические FTBFS на этапе создания документации. ).
Основной пакет с компилятором именуется следующим образом: ghc{мажор}
, т.е. для GHC
9.6.6 пакет будет называться ghc9.6
(так же и gear репозиторий)
Сборка пакетов
Среди всех мажоров компилятора выделяется один - "стабильный". Он ставится при помощи метапакета ghc. Его же и следует (но не обязательно) использовать для сборки пакетов.
RPM макросы находятся в rpm-build-haskell
(-vendored
для статически слинкованных)
См. статьи Haskell/RPM и Haskell/Vendored
Наименование пакетов
Запускаемые программы, написанные на Haskell
, должны называться просто по апстримному наименованию. Например alex
или cabal-install
.
Библиотеки называются следующим образом: ghc{мажор}-{название_библиотеки}
, в случае сборки библиотеки со "стабильным" GHC
библиотеку следует называть ghc-{название_библиотеки}
Основные репозитории
- Текущие мажоры GHC:
- ghc9.6 - стабильный
- Метапакет - ghc