Cabal (software)
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.
Original author(s) | Isaac Potoczny-Jones |
---|---|
Developer(s) | Duncan Coutts |
Initial release | January 2005 |
Stable release | 3.2.1.0[1]
/ April 2020 |
Repository | |
Written in | Haskell |
Operating system | Any Unix-like, Microsoft Windows |
Size | 0.4 megabytes |
Available in | English |
Type | Application level package manager |
License | BSD |
Website | www |
History
Cabal has been introduced to simplify packaging of Haskell software and modules. 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, which allow to escape the so-called Cabal hell (see below).
Use
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
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 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
- "Cabal changelog". Retrieved 2021-01-25.
- "1.4. Release notes for version 6.4". GHC 6.4 user manual. Retrieved 2016-01-12.
- "cabal-install: The command-line interface for Cabal and Hackage". Hackage. Retrieved 12 January 2016.
- "Cabal: A framework for packaging Haskell software". Hackage. Retrieved 12 January 2016.
- "Cabal/Survival - HaskellWiki". HaskellWiki. Retrieved 12 January 2016.
- "How we might abolish Cabal Hell". Well-Typed - The Haskell Consultants. Retrieved 12 January 2016.
- "Stackage Server". FP Complete. Retrieved 12 January 2016.
- "ANNOUNCING: first public beta of stack". FP Complete. Retrieved 12 January 2016.
- "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.
- Mikhail Glushenkov. "Cabal 2.0". Retrieved 2021-01-25.
External links
Wikibooks has a book on the topic of: Haskell/Packaging |
- Official website
- "The Haskell Cabal: A Common Architecture for Building Applications and Tools" -(the original proposal and specification, by Isaac Jones, Simon Peyton Jones, Simon Marlow, Malcolm Wallace, and Ross Patterson; a version was submitted to the Haskell Workshop, 2005)
- Cabal talk -(slides)