Active Code Updates

Posted on by Chris Warburton

GHC 8 has been out for a while now, and I've been tentatively upgrading. Since I'm using Nix, it's trivial to use different versions of GHC for different applications/projects, but it would be nice to have all of my own stuff working at least. To investigate this, I've had my Hydra continuous integration server build all of my projects using all versions of GHC >= 7.8 which are available in nixpkgs; this includes 7.8.3, 7.8.4, 7.10.2, 7.10.3, 8.0.1 and 8.0.2. A ghcHEAD version is also available, but I've had to filter out things like the integer-simple and ghcjs variants as the packages seem to be broken.

One thing I learned in the process is that my active code scripts don't work with the latest (1.19) version of pandoc! It looks like the JSON format has changed. This isn't so much of a problem: I can just force a working version (1.17) in the dependencies of PanPipe and PanHandle.

It turns out that the Cabal files for these projects were a bit of a mess! They date back to my first forays into Cabal, and it appears I'd used cabal init to generate a package with a bunch of example dependencies, and never removed those examples!

These packages are all cleaned up now, and pushed to git. I've set the version bounds on their other dependencies (including base) such that they'll hopefully build with GHC versions between 7.8 and 8.0; Hydra's currently churning through them :)

I've also taken this opportunity to finally sort out the naming of these packages. They are now panpipe and panhandle, which is in line with pandoc. Whilst their English names are still "PanPipe" and "PanHandle" (as well as their module names!) there's no longer a PanPipe package name, and I've tried to remove all remaining references to the original name "pan handler" (which is a noun rather than a verb).

Finally, both PanPipe and PanHandle have been pushed to Hackage. This makes them easier to discover and install, via Cabal and Nix (and maybe even Stack) :)