The cabal team is proud to announce the release of cabal 3.10.1.0. This is mainly a bugfix release, but it has some new features and enhancements as well. The changelogs and release notes are at
and, if your code depends on the Cabal library, at
Two backward (in)compatibility notes may be of particular interest: the XDG Base Directory Specification (conditionally) replacing ~/.cabal and the --enable-documentation option by default added to all cabal haddock invocations. Please look them up at the links above.
Let me finish by thanking our esteemed benefactors, past and present, contributing code, devops, testing, feedback, comments. Representing these are the authors of all PRs included in the 3.10.1.0 release, honourably mentioned in the list of fame below.
Here are links to two issues with cabal 3.10.1.0 discovered just after the release, with some discussion and potential workarounds (the latter potentially affects any multi-GHC CI):
All the three issues will probably be addressed in cabal 3.10.2.0 (at least via explicit recommendations in release notes, perhaps via fixes), but at this point we don’t know the details yet, so for the time being we offer workarounds and gather feedback.
Thanks to @jneira, this “long paths” crash was determined to affect only cabal run on Windows and only in some circumstances. It turns out it was introduced in cabal 3.8.1.0. We are looking at potential fixes, but I’d downgrade its severity. Please let us know if it affects you and especially if you don’t have a good workaround.
Thanks to @sclv, we now understand the problem that cabal 3.10.1.0 writes ~/.cabal/config file that older cabal versions can’t read. It’s an unintended compatibility break and we want to fix it in cabal 3.10.2.0. It affects people that want to go back to an older cabal version, but preserve their manually edited config file created by cabal 3.10.1.0. (If preserving the config file is not required, wiping it out makes old cabal binaries work fine, since they promptly generate a fresh file they parse without issues.)
The workarounds include not letting cabal 3.10.1.0 write a fresh config file (e.g., one can generate the file with old cabal or copy an old file) and removing the offending “nix” line, after which the old cabal binaries can parse the config file fine.
Thanks to @andreasabel, the missing cabal update in CI problem is now well understood and worked around in Github Actions (and doesn’t seem to affect the CI scripts generated by haskell-ci). We will update cabal 3.10.1.0 release notes with a recommendation to place cabal update after CI cache restoration in any custom CI scripts in order to correctly trigger the XDG backward compatibility mechanism. That’s probably as much as needs to be done here. Please let us know if there are any corner cases we’ve missed.