Edsko de Vries, Finley McIlwaine
Wednesday, 22 January 2025
Over the last year, Well-Typed have carried out significant work in Cabal,
Haskell’s build system, thanks to funding from the Sovereign Tech
Fund. Our main goal was to re-think the Cabal
architecture for building packages. This was historically tied to the Setup
command-line interface, with each package technically capable of providing its
own independent build system via the Custom
build-type. In practice, the full
generality of this interface is not useful, and it obstructs the development of
new features and created a drag on maintenance, so there has long been an
appetite to reimagine this interface within Cabal.1
With the release of Cabal-3.14.0.0
and cabal-install-3.14.1.1
,
the new Hooks
build-type we have developed, together with the Cabal-hooks
library, are now available to package authors. Over time, we hope to see packages that
depend on the Custom
build-type gradually migrate to use Hooks
instead.
For more background on this work, check out:
our HF Tech Proposal in which the design was discussed with the developer community, and
In the remainder of this post, we will:
dive into the background details of how Cabal works,
provide an introduction to the new interfaces for package authors who may wish to adapt their packages.
This post is based on Sam’s talk at the Haskell Ecosystem Workshop 2024.
(read more)