Cabal (software)

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

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.

History[edit]

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).

Use[edit]

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]

Criticism[edit]

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]

References[edit]

  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]