Cabal-matrix – a matrix builder for cabal

Hello all! I want to announce the initial release of cabal-matrix – a matrix builder for cabal packages. Its purpose is to run builds in a variety of configurations, such as different compiler versions, or different dependency versions.

This tool should be useful to anyone who’s managing packages on Hackage. It helps you come up with dependency version bounds, and validate that existing bounds are correct.

Here’s a demo of it in action:
demo

In the demo example I’ve instructed cabal-matrix to build a package of mine against combinations of a compiler version, a containers version, and an mtl version, but I’ve instructed it not to simultaneously constrain containers and mtl, as that provides no benefit, and would be too many builds.

Exactly which configurations you want to test will depend on the nature of your package, which is why the set of configurations is specified using a DSL. For more information see the README.

31 Likes

Reminds me of GitHub - phadej/trustee: Hackage Trustee helper tool (command-line only).

3 Likes

This is great! I currently use some scripts to do something similar with plans from CI jobs – creating CSVs, that I then load into a spreadsheet and update, but it’s too manual, and too much CI round-tripping. I can see this really speeding things up.

1 Like