Tags: haskell.

We’ve just released versions 1.24 of both Cabal and cabal-install . The 1.24 release incorporates more than a thousand commits by 89 different contributors. This post describes what’s new and improved in this version.

Nix-style local builds in cabal-install (so far only a technical preview). See this post by Edward Z. Yang for more details.

Integration of a new security scheme for Hackage based on The Update Framework. So far this is not enabled by default, pending some changes on the Hackage side. See these three posts by Edsko de Vries and Duncan Coutts for more information.

Support for specifying setup script dependencies in .cabal files. Setup scripts are also now built with the cabal_macros.h -style macros for conditional compilation. See this post by Duncan Coutts for more information.

Support for HTTPS downloads in cabal-install . HTTPS is now used by default for downloads from Hackage. This uses either curl or wget or, on Windows, PowerShell, under the hood. Install target URLs can now also use HTTPS, e.g. cabal install https://example.com/foo-1.0.tar.gz .

cabal upload learned how to upload documentation to Hackage ( cabal upload --doc ) (#2890).

In related news, cabal haddock now can generate documentation intended for uploading to Hackage ( cabal haddock --for-hackage , #2852). cabal upload --doc runs this command automatically if the documentation for current package hasn’t been generated yet.

New cabal-install command: gen-bounds for easy generation of version bounds. See this post by Doug Beardsley for more information.

It’s now possible to limit the scope of --allow-newer to single packages in the install plan, both on the command line and in the config file. See here for an example.

The --allow-newer option can be now used with ./Setup configure (#3163).

New cabal user-config subcommand: init , which creates a default config file in either the default location ( ~/.cabal/config ) or as specified by --config-file (#2553).

New config file field extra-framework-dirs for specifying extra locations to find OS X frameworks in (#3158). Can be also specified as an argument for install and configure commands.

cabal-install solver now takes information about extensions and language flavours into account (#2873). The solver is now also aware of pkg-config constraints (#3023).

New cabal-install option: --offline , which prevents cabal-install from downloading anything from the Internet.

New cabal upload option -P / --password-command for reading Hackage password from arbitrary program output.

New --profiling-detail=$level flag with a default for libraries and executables of ‘exported-functions’ and ‘toplevel-functions’ respectively (GHC’s -fprof-auto-{exported,top} flags) (#193).

New --show-detail mode: --show-detail=direct ; like streaming , but allows the test program to detect that is connected to a terminal, and works reliable with a non-threaded runtime (#2911, and serves as a work-around for #2398)

Macros VERSION_$pkgname and MIN_VERSION_$pkgname are now also generated for the current package (#3235).

The builddir option can now be specified via the CABAL_BUILDDIR environment variable and in cabal.config (#2484).