Cabal (software)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Original author(s)Isaac Potoczny-Jones
Developer(s)Duncan Coutts
Initial releaseJanuary 2005; 17 years ago (2005-01)
Stable release[1] / October 2021; 3 months ago (2021-10)
Written inHaskell
Operating systemAny Unix-like, Microsoft Windows
Size0.4 megabytes
Available inEnglish
TypeApplication level package manager

The Haskell Cabal (common architecture for building applications and libraries) aids in the packaging and distribution of software packages. It is contained in the Haskell Platform.


Cabal has been introduced to simplify packaging of Haskell software and modules[citation needed]. It was added to the Glasgow Haskell Compiler version 6.4 as default package manager,[2] along GHC's internal manager ghc-pkg. The actual binary cabal[3] and the library Cabal[4] are developed in different packages.

Throughout its development it has gained additional features, such as sandboxes[citation needed], which allow to escape the so-called Cabal hell (see below).


Cabal packages provide a standard set of metadata and build process; thus, it is possible to develop tools to upload Cabal packages to the CPAN-like community repository of software, Hackage, or even allow for automated downloading, compilation, and installation of desired packages from Hackage.[3]


Cabal previously used a global package repository by default, version conflicts in dependencies could lead to Cabal hell, a state where certain packages couldn't get installed without re-installing already existing ones and therefore breaking the other packages.[5][6]

In 2014, a more stable (but less bleeding edge) variant of Hackage called Stackage was created. [7] In 2015, it was extended with Haskell LTS[citation needed] and the tool stack,[8][9] which doesn't share its problems.

Cabal v3 was released in 2019.[1] A new build style resolves the hell in a manner similar to the Nix package manager.[10]


  1. ^ a b "Cabal changelog". Retrieved 2021-11-19.
  2. ^ "1.4. Release notes for version 6.4". GHC 6.4 user manual. Retrieved 2016-01-12.
  3. ^ a b "cabal-install: The command-line interface for Cabal and Hackage". Hackage. Retrieved 12 January 2016.
  4. ^ "Cabal: A framework for packaging Haskell software". Hackage. Retrieved 12 January 2016.
  5. ^ "Cabal/Survival - HaskellWiki". HaskellWiki. Retrieved 12 January 2016.
  6. ^ "How we might abolish Cabal Hell". Well-Typed - The Haskell Consultants. Retrieved 12 January 2016.
  7. ^ "Stackage Server". FP Complete. Retrieved 12 January 2016.
  8. ^ "ANNOUNCING: first public beta of stack". FP Complete. Retrieved 12 January 2016.
  9. ^ "What do Haskellers want? Over a thousand tell us". Package management with cabal is the single worst aspect of using Haskell. Asked if improvements to package management would make a difference to their future choice of Haskell for a project, 38% said it would be "crucial" and a further 29% said it would be "important". Comments connected cabal with words like hell, pain, awful, sucks, frustrating, and hideous. Only this topic showed such grave dissatisfaction.
  10. ^ Mikhail Glushenkov. "Cabal 2.0". Retrieved 2021-01-25.

External links[edit]