Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Cabal-hooks/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Changelog for `Cabal-hooks`

## 3.16.1 – November 2025
* No changes

## 3.16.0 – July 2025
* No changes

Expand Down
2 changes: 1 addition & 1 deletion Cabal-syntax/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.16.0.0.md
Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.16.1.0.md
3 changes: 3 additions & 0 deletions Cabal/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# 3.16.1.0 [Artem Pelenitsyn](mailto:a@pelenitsyn.top) November 2025
* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.16.1.0.md

# 3.16.0.0 [Artem Pelenitsyn](mailto:a@pelenitsyn.top) July 2025
* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.16.0.0.md

Expand Down
2 changes: 1 addition & 1 deletion cabal-install-solver/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Please see https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.16.0.0.md
Please see https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.16.1.0.md
4 changes: 4 additions & 0 deletions cabal-install/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Change-log

## 3.16.1.0 [Artem Pelenitsyn](mailto:a@pelenitsyn.top) November 2025

* See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.16.1.0.md

## 3.16.0.0 [Artem Pelenitsyn](mailto:a@pelenitsyn.top) July 2025

* See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.16.0.0.md
Expand Down
14 changes: 0 additions & 14 deletions changelog.d/pr-11101

This file was deleted.

24 changes: 0 additions & 24 deletions changelog.d/pr-11232.md

This file was deleted.

11 changes: 0 additions & 11 deletions changelog.d/pr-11266

This file was deleted.

15 changes: 15 additions & 0 deletions release-notes/Cabal-3.16.1.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Cabal and Cabal-syntax 3.16.1.0 changelog and release notes
---

- Always pass `--interactive` as the first ghc argument [#11099](https://github.com/haskell/cabal/issues/11099) [#11101](https://github.com/haskell/cabal/pull/11101)

We recently changed Cabal to use response files for all GHC arguments by default.
Unfortunately, this broke a couple of downstream consumers of cabal, notably Haskell Language Server and doctest, which both assume that `--interactive` is the first argument of the `ghc` invocation by `cabal repl`.

This regression was fixed by implementing the `--with-repl` (#9115) argument, and tools, such as hie-bios and doctest, have been updated to take advantage of this. However, this renders already published HLS binaries, so any HLS version <=2.12.0.0, incompatible with `cabal-3.16`, as these old binaries can't be easily updated.

In other words, no released HLS binary (at the point of this commit), is compatible with the cabal-3.16.0.0. Users have to build HLS from source to have a working toolchain.

To give us a slightly better migration window, we undo some of the improvements to cabal, and make sure that `--interactive` is always passed as the first argument to the underlying `ghc` invocation. This hack is supposed to be temporary, and removed for cabal 3.18.

(Ed. note: see https://github.com/haskell/cabal/issues/11305 re deprecation.)
29 changes: 29 additions & 0 deletions release-notes/cabal-install-3.16.1.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
cabal-install and cabal-install-solver 3.16.1.0 changelog and release notes
---

### Significant changes

- Don't pass the executable name to external commands [#10275](https://github.com/haskell/cabal/issues/10275) [#11232](https://github.com/haskell/cabal/pull/11232)

Previously the executable name of the external command was passed to external commands as the first argument.

This behaviour was adapted from cargo which does this because of reasons that are internal to rust that do not affect GHC Haskell, and are even orthogonal to patterns that see common use in Haskell.

Additionally, it complicates the 'simple' case which is what we should optimize for when building such a feature - with this change, for any executable `cabal-foo` in your search-path, `cabal foo` will be a valid invocation of that command.

The previous use case (one executable that serves multiple external subcommands) is still possible by the following means:

- using a wrapper around the executable
- using a symlink and check argv\[0\] in the executable

Additionally, the variable `$CABAL` that was set by `cabal-install` was renamed to `CABAL_EXTERNAL_CABAL_PATH`. This has two reasons:
1. it makes migration easier for users of the external command feature that were previously expecting the name of the executable to appear in `argv[1]`

2. it does not unnecessarily pollute the environment variable namespace as it turns out some other tools have been and are already using this name, historically

### Other changes

- Add compiler ABI tag and store path to `cabal path` output [#10165](https://github.com/haskell/cabal/issues/10165) [#11266](https://github.com/haskell/cabal/pull/11266)

This adds the GHC Project Unit ID (ABI tag) and store path to the cabal path output as "compiler-abi-tag" and "compiler-store-path". These have been used in cabal-install since 3.12.1.0.

Loading