Cabal-install-3.12.1.0 (and accompanying libraries) released

The cabal release team brings you the release of the cabal-install tool, version 3.12.1.0. This is the first release of the tool in the 3.12 series, and, hence, the first cabal-install supporting Cabal 3.12 packaged with GHC 9.10.1. We also update the three main libraries.

The binaries for cabal-install are available on our website and can be installed via the GHCup main channel. As usual, cabal update && cabal install cabal-install-3.12.1.0 is an option too. Our binaries are signed by "Brandon S. Allbery <allbery.b@gmail.com>" (the key is hosted on keyserver.ubuntu.com ).

We expect the official GHCup channel to be updated with the 3.12.1.0 binaries soon.

What is new

Performance

  • Significant speedups during cabal startup due to use of the latest tar

Project Organization

  • Support for asm, cmm, and js sources in executable components
  • Support for per-component builds when coverage is enabled
  • Haskell files in explicit source directories take precedence over autogenerated Haskell files
  • Fix precedence for PATH for build-tools-depends (executables from PATH don’t shadow executables from build-tool-depends anymore)

UX

  • Errors now have error codes, which will be documented on https://errors.haskell.org
  • A new subcommand, cabal path, which can be used to get information about the paths cabal will use within a project
  • Support for authentication tokens for uploading to Hackage
  • --(test-)show-details=direct is now the default
  • Shorten solver rejection messages by removing repetition
  • Show provenance of project constraints

Interaction with GHC

  • Support for loading multiple components into one repl session
  • Support for the --semaphore flag to enable interaction with GHC Job Server protocol
  • Support for GHC2024
  • Support for language extensions ExtendedLiterals¸ ListTuplePuns, and TypeAbstractions

Other Compilers

  • Micro Haskell (MHS) has been added as a known compiler. We don’t have support for driving it yet, though.

See the release notes for more details and other changes.

Contributors

50^2, Adam Gundry, Andrea Bedini, Andreas Abel, Andreas Klebinger, Arjun Kathuria, Artem Pelenitsyn, BasLaa, Bas Laarakker, Ben Gamari, Bodigrim, Brandon Chinn, brandon s allbery kf8nh, Bryan Richter, Colton Clemmer, Csaba Hruska, cydparser, Daniel Trstenjak, David Binder, David Christiansen, Edwin Marshall, Elodie Lander, Erik de Castro Lopo, Felix Yan, fendor, Finley, Francesco Ariis, Francesco Gazzetta, Fraser Tweedale, Gershom Bazerman, Hamish Mackenzie, Hécate Moonlight, Ikko Eltociear Ashimine, Jana Chadt, Javier Sagredo, Jean-Paul Calderone, Jens Petersen, Jessica Hamilton, John Paul Adrian Glaubitz, Josh Meredith, Julia Longtin, Julian Ospald, Kazuki Okamoto, Kristen Kozak, Krzysztof Gogolewski, liamzee, Liisi Kerik, Lin Runze, Malte Neuss, malteneuss, Marcin Szamotulski, Matthew Pickering, Mel Zuser, Michael Peyton Jones, Mike Pilgrem, Mikolaj Konarski, mixphix, Oleg Grenrus, Ondřej Šebek, Patrick Augusto, Patrick Dougherty, Peter Becich, Phil de Joux, Pierre Le Marre, Rebecca Turner, Rodrigo Mesquita, Ryan Scott, Samuel Thibault, Sander, Sebastian Tee, Sergey Vinokurov, Shae Erisson, sheaf, Simon Hengel, Siyuan Chen, Sören Tempel, SuganyaAK, Suganya Raju, Sylvain Henry, Taylor Fausak, Teo Camarasu, Tom Ellis, tomjaguarpaw, Tommy Bidne, Tom Smeding, Torsten Schmits, Tristan Cacqueray, Troels Henriksen, Wismill, Yvan Sraka, Zoe Zuser

We thank all contributors as well as our reviewers, QA testers, devops, and others without whom this release wouldn’t be possible.

Feedback

Please, report any issues you notice with the 3.12.1.0 release on our GitHub: GitHub - haskell/cabal: Official upstream development repository for Cabal and cabal-install

— cabal release team (Artem, Brandon, Francesco, Gershom, Hécate, Mikołaj)

33 Likes

Hooray!

I’ve already tried out --enable-multi-repl and it works great :tada:

14 Likes

GHCup provided binaries are here: Index of /ghcup/unofficial-bindists/cabal/3.12.1.0/

11 Likes

The release notes don’t say it, but it appears the external command system is part of this release?

At least Github suggests this is the case: [cabal-7825] Implement external command system by yvan-sraka · Pull Request #9063 · haskell/cabal · GitHub

3 Likes

Here’s a blog post on Multi Component Support in HLS describing how the “Support for loading multiple components into one repl session” item from the changelog above can be used in practice.

6 Likes