Cabal
Cabal is a free system for building and packaging Haskell libraries and programs.
What Cabal is
Cabal is a free system for building and packaging Haskell libraries and programs. Its command-line tool installs packages with their dependencies, using Hackage by default while also supporting other suitable archives, local directories, archives, and tarballs. Cabal can configure and build local packages, generate documentation, run test suites and benchmarks, and execute single-file Haskell scripts with cabal run. A package combines Haskell software, metadata in a .cabal file, and a standard Setup.hs build interface. The system supports dependency resolution, lockfiles, workspaces, and offline installation. Users can select an installation location and Haskell implementation, and choose optimized or profiling-enabled builds. Cabal’s built-in build system is optional, allowing custom systems. Packages are source-based and typically portable, though portability is not guaranteed. Supported platforms are Linux, macOS, FreeBSD, and Windows. Formats include .cabal files, .tar.gz sources, RPM, Debian packages, and Windows installers.
Good
- Free plan
- Automatic dependency installation
- Lockfile and workspace support
- Offline installation
- Runs tests and benchmarks
Watch out
- Portability is not guaranteed
- Future-proof interface stability is not promised
- Requires Haskell package and build workflows
Who it suits
Cabal suits Haskell developers who need package installation, dependency handling, project builds, tests, documentation, or benchmarks. It supports cross-platform workflows and custom build systems.
Verdict
Cabal provides package management and build tooling for Haskell projects across major desktop platforms. Its archive support, configurable builds, and offline features cover both routine package use and customized project setups.
Plans and prices
From Cabal's own pricing page, checked 8 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| Cabal | Free | No pricing or usage limits stated |
The facts
Each one read from Cabal's own pages, with the date it was checked.
What it does
- Build workflow
- Cabal supports configuring and building local packages, as well as generating documentation and running test suites and benchmarks.checked 8 Oct 2026
- Configuration
- Users can choose where packages are installed, which Haskell implementation to use, and whether to build optimized or profiling-enabled code.checked 8 Oct 2026
- Custom build systems
- Cabal's built-in build system for simple packages is optional, and custom build systems can be used.checked 8 Oct 2026
- Customization
- Users can choose where to install a package, which Haskell implementation to use, and whether to build optimized or profiling-enabled code.checked 8 Oct 2026
- Dependency resolution
- Yeschecked 21 Sep 2026
- Distribution
- Cabal packages use compressed .tar.gz tarballs and the package format can be translated into native formats such as RPM or deb.checked 8 Oct 2026
- Downloads
- The download page recommends ghcup and also links to manually downloadable binaries for many architectures.checked 8 Oct 2026
- Installation
- The Cabal download page recommends obtaining Cabal through ghcup and provides links to manually downloaded binaries for many architectures.checked 8 Oct 2026
- Interface stability
- Cabal says it cannot promise complete future-proof stability while development continues, though its package file format is backward compatible and mostly forward compatible.checked 8 Oct 2026
- Lockfile support
- Yeschecked 21 Sep 2026
- Offline installation
- Yeschecked 21 Sep 2026
- Package archive
- Cabal uses Hackage by default to install packages from Haskell’s central package archive, and can use other suitable archives.checked 8 Oct 2026
- Package archives
- Cabal uses Hackage by default to install packages and can also work with other suitable package archives.checked 8 Oct 2026
- Package format
- Cabal packages contain Haskell software, machine-readable metadata in a .cabal file, and a standard build interface in Setup.hs.checked 8 Oct 2026
- Package formats
- .cabal files; .tar.gz source distributions; RPM; Debian packages; Windows installerschecked 21 Sep 2026
- Package management
- The cabal command-line tool can install packages and automatically install their dependencies.checked 8 Oct 2026
- Package sources
- Cabal can install packages from local directories, package archives, and local or remote tarball files.checked 8 Oct 2026
- Portability
- Cabal packages are source-based and typically, though not necessarily, portable across platforms and Haskell implementations.checked 8 Oct 2026
- Project setup
- The cabal init command creates the files needed for a Cabal package, including executable, library, or test suite projects.checked 8 Oct 2026
- Purpose
- Cabal is a system for building and packaging Haskell libraries and programs.checked 8 Oct 2026
- Security
- The official Cabal pages opened here do not state a security certification or compliance standard.checked 8 Oct 2026
The company
- Company details
- The Cabal overview and download pages do not state a maker headquarters or founding date.checked 8 Oct 2026
Money
- Free plan
- Yeschecked 21 Sep 2026
Where it runs
- Platforms
- The recommended ghcup installation method supports Linux, macOS, FreeBSD, and Windows.checked 8 Oct 2026


