Skip to content

Commit dc96a96

Browse files
committed
Add changelog files for 3.16
* Integrate Brandon’s suggestions. * Integrate Brandon’s suggestions /II. * Integrate Bodigrim’s suggestions. * Integrate Artem’s suggestions. * Correctly capitalize “AArch” in preparation of #11047 backport
1 parent 269c1b1 commit dc96a96

File tree

8 files changed

+854
-20
lines changed

8 files changed

+854
-20
lines changed

Cabal-hooks/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Changelog for `Cabal-hooks`
22

3+
## 3.16.0 – July 2025
4+
* No changes
5+
36
## 3.14.2 – April 2025
47
* No changes
58

Cabal-syntax/ChangeLog.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.2.0.md
1+
Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.16.0.0.md

Cabal/ChangeLog.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# 3.16.0.0 [Artem Pelenitsyn](mailto:[email protected]) July 2025
2+
* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.16.0.0.md
3+
14
# 3.14.2.0 [Mikolaj Konarski](mailto:[email protected]) April 2025
25
* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.2.0.md
36

cabal-install-solver/ChangeLog.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Please see https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.14.2.0.md
1+
Please see https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.16.0.0.md

cabal-install/ChangeLog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change-log
22

3+
## 3.16.0.0 [Artem Pelenitsyn](mailto:[email protected]) July 2025
4+
5+
* See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.16.0.0.md
6+
37
## 3.14.2.0 [Mikolaj Konarski](mailto:[email protected]) April 2025
48

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

release-notes/Cabal-3.16.0.0.md

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
Cabal and Cabal-syntax 3.16.0.0 changelog and release notes
2+
---
3+
4+
### Significant changes
5+
6+
- Make `Flag a` a type synonym for `Last (Maybe a)` [#10948](https://github.com/haskell/cabal/pull/10948)
7+
8+
Refer to the [Migration guide](#migration-guide) for an upgrade path.
9+
10+
- Add support for Windows AArch64 [#10705](https://github.com/haskell/cabal/pull/10705)
11+
12+
Adds to preprocessor branches the option to support the `aarch64_HOST_ARCH` platform on the Windows AArch64 target.
13+
The `ccall` convention is used on AArch64, as with `x86_64_HOST_ARCH`. Introduce `zIsAArch64` to make paths generation support the Windows AArch64 target.
14+
15+
### Other changes
16+
17+
- Add `--with-repl` flag to specify alternative REPL program [#9115](https://github.com/haskell/cabal/issues/9115) [#10996](https://github.com/haskell/cabal/pull/10996)
18+
19+
Added a new `--with-repl` command-line option that allows specifying an alternative
20+
program to use when starting a REPL session, instead of the default GHC.
21+
22+
This is particularly useful for tools like `doctest` and `hie-bios` that need to
23+
intercept the REPL session to perform their own operations. Previously, these tools
24+
had to use `--with-ghc` which required them to proxy all GHC invocations, including
25+
dependency compilation, making the implementation more complex.
26+
27+
The `--with-repl` option only affects the final REPL invocation, simplifying the
28+
implementation of such wrapper tools.
29+
30+
Example usage:
31+
```bash
32+
cabal repl --with-repl=doctest
33+
cabal repl --with-repl=/path/to/custom/ghc
34+
```
35+
36+
This change also removes the special handling for response files with `--interactive`
37+
mode, as tools are now expected to handle response files appropriately.
38+
39+
- In the warning about Haddock docs not being installed, don't imply that the docs exist [#9694](https://github.com/haskell/cabal/issues/9694) [#9695](https://github.com/haskell/cabal/pull/9695)
40+
41+
- Show why `cabal act-as-setup configure` failed [#10273](https://github.com/haskell/cabal/pull/10273)
42+
43+
When configuring fails, we print a list of "missing or private dependencies".
44+
45+
Now, it will show you if each failing dependency is missing, private, or an
46+
incompatible version:
47+
48+
```
49+
Error: [Cabal-8010]
50+
Encountered missing or private dependencies:
51+
Lib:{bar-internal,foo-internal} (missing :bar-internal),
52+
base <=1.0 (installed: 4.18.2.1),
53+
package-that-does-not-exist (missing)
54+
```
55+
56+
- Avoid partial `Data.List.last` in autogenerated `Paths_<pkg>.hs` [#10432](https://github.com/haskell/cabal/pull/10432)
57+
58+
- Autogenerated `Paths_<pkg>.hs` now avoids use of the partial function `Data.List.last`.
59+
60+
- Fix Haddock CSS handling in multi-package projects [#10636](https://github.com/haskell/cabal/issues/10636) [#10637](https://github.com/haskell/cabal/pull/10637)
61+
62+
When the `--css=<css-file>` flag is provided to `cabal haddock-project`:
63+
64+
- the Haddock index is now properly styled by the provided CSS file
65+
- each package in the project now has its docs properly styled by the provided CSS file
66+
67+
- Add checks for Windows reserved filenames in module paths [#10295](https://github.com/haskell/cabal/issues/10295) [#10816](https://github.com/haskell/cabal/pull/10816)
68+
69+
On Windows, certain filenames are reserved by the operating system such as
70+
"aux", "con", "prn", "nul", etc. When these names appear in module paths they
71+
can cause build failures on Windows systems.
72+
73+
`cabal check` now properly warns about module paths that contain Windows reserved
74+
filenames, not just filepaths which contain these reserved tokens. These warnings
75+
are controlled by the existing `invalid-win-path` category.
76+
77+
For example, module paths like:
78+
- `Exe.Aux.Test`
79+
- `Test.Aux.Module`
80+
- `Bench.Aux.Helpers`
81+
82+
will now trigger appropriate warnings during `cabal check`.
83+
84+
- Isolate Cabal from the GHC_ENVIRONMENT variable [#10759](https://github.com/haskell/cabal/issues/10759) [#10828](https://github.com/haskell/cabal/pull/10828) [#10990](https://github.com/haskell/cabal/pull/10990)
85+
86+
For GHC 8.4.4 and later, Cabal now passes the `-package-env=-` flag to GHC.
87+
This prevents the `GHC_ENVIRONMENT` variable or any package environment files
88+
from affecting Cabal builds.
89+
90+
This change eliminates unexpected build behavior that could occur when users
91+
had GHC environment files configured in their system that Cabal wasn't aware
92+
of.
93+
94+
- Set `<pkgname>_datadir` to an absolute path when running tests [#10717](https://github.com/haskell/cabal/issues/10717) [#10830](https://github.com/haskell/cabal/pull/10830)
95+
96+
Fix a regression where `<pkgname>_datadir` was set to a relative path. This
97+
caused issues when running testsuites which changed the working directory and
98+
accessed datafiles.
99+
100+
- Pass `CXX` and `CXXFLAGS` to `./configure` scripts run by Configure build-type [#10797](https://github.com/haskell/cabal/issues/10797) [#10844](https://github.com/haskell/cabal/pull/10844)
101+
102+
`./configure` scripts run by `build-type: Configure` will now be passed the `CXX` and
103+
`CXXFLAGS` variables. These reflect the path and flags for the C++ compiler respectively.
104+
105+
If the compiler is not available, then the flags are not passed. For GHC versions `>= 9.4.*`,
106+
the `CXX` variable will always be set and available to be used.
107+
108+
This can be useful for implementing something like `system-cxx-std-lib` in user-land.
109+
110+
- Remove dead build-tool greencard [#10908](https://github.com/haskell/cabal/pull/10908)
111+
112+
Remove knowledge of the build-tool `greencard` (non-existing since GHC 7.10)
113+
and the connect of the `.gc` extension to this build-tool.
114+
115+
- Remove knowledge about hmake and haskell-suite [#10912](https://github.com/haskell/cabal/pull/10912)
116+
117+
The `hmake` tool has long been abandoned, and the `haskell-suite` compiler did not emerge.
118+
Knowledge about these tools has been removed from `Cabal`.
119+
120+
- Haddock documentation added to Paths_pkgname and PackageInfo_pkgname modules [#10941](https://github.com/haskell/cabal/pull/10941)
121+
122+
The automatically-generated modules `Paths_pkgname` and `PackageInfo_pkgname`
123+
now include Haddock documentation.
124+
125+
- `ghc-options` take effect for components built out of js-, cmm- and asm-sources [#10949](https://github.com/haskell/cabal/pull/10949)
126+
127+
Now we have the ability to pass `ghc-options` flags to all component.
128+
129+
```
130+
js-sources: jsbits/lib.js
131+
ghc-options: -optJSP-your_flag
132+
```
133+
134+
- Adding JavaScript Preprocessor Support [#10967](https://github.com/haskell/cabal/pull/10967)
135+
136+
Adding new syntax `jspp-options` that would support the `-optJSP` preprocessor flag for js sources.
137+
138+
```
139+
js-sources: jsbits/lib.js
140+
jspp-options: -DYOUR_FLAG
141+
```
142+
143+
- Fix parsing the AbiTag with development versions of GHC [#10170](https://github.com/haskell/cabal/issues/10170) [#10979](https://github.com/haskell/cabal/pull/10979)
144+
145+
- Take `--working-dir` into account in `runPreProcessorWithHsBootHack` [#11000](https://github.com/haskell/cabal/issues/11000) [#10991](https://github.com/haskell/cabal/pull/10991)
146+
147+
The preprocessor hs-boot hack handles the situation in which a file to be
148+
preprocessed is supplied alongside an hs-boot file, e.g. Foo.x and Foo.hs-boot
149+
are given together.
150+
151+
This code now respects the `--working-dir` Cabal global argument. This fixes
152+
build failures of the form:
153+
154+
``attempting to use module `Foo' (Foo.hs-boot) which is not loaded``
155+
156+
- Haddock: don't try to copy build dir if it doesn't exist [#11001](https://github.com/haskell/cabal/issues/11001) [#10992](https://github.com/haskell/cabal/pull/10992)
157+
158+
This small patch fixes a little oversight in 'reusingGHCCompilationArtifacts',
159+
which would unconditionally attempt to copy over the GHC build artifacts to be
160+
re-used by Haddock, even when those artifacts did not exist (which caused
161+
an error).
162+
163+
- add SPDX license data version 3.26 [#11014](https://github.com/haskell/cabal/pull/11014)
164+
165+
- Update SPDX license list to version 3.26.0 2024-12-30
166+
167+
- Use response files when calling `ghc` [#9367](https://github.com/haskell/cabal/pull/9367)
168+
169+
Cabal now passes GHC arguments through a response file. This prevents an error
170+
where very large packages would fail to build due to the module names exceeding
171+
the `ARG_MAX` command-line length limit:
172+
173+
```
174+
ghc: createProcess: posix_spawnp: resource exhausted (Argument list too long)
175+
```
176+
177+
Notes:
178+
- RTS options (like `+RTS -H32m -S -RTS`) will not be included in response
179+
files.
180+
- For reproducing commands after Cabal exits, `--keep-temp-files` can be used
181+
to prevent the response files from being deleted.
182+
183+
- New licence constructors for SPDX licences starting with a digit [#10356](https://github.com/haskell/cabal/pull/10356)
184+
185+
- LicenseId constructor `NullBSD` is now `N_0BSD`.
186+
- LicenseId constructor `DS389_exception` is now and `N_389_exception`.
187+
- LicenseId constructor `X3D_Slicer_1_0` is now and `N_3D_Slicer_1_0`.
188+
189+
### Migration guide
190+
191+
- `data Flag a = Flag a | NoFlag` has been replaced with `type Flag = Data.Monoid.Last`,
192+
while `pattern Flag a = Last (Just a)` and `pattern NoFlag = Last Nothing` are provided
193+
for backward compatibility.
194+
Imports of form `import Distribution.Simple.Flag (Flag (..))` should be replaced
195+
with `import Distribution.Simple.Flag (Flag, pattern Flag, pattern NoFlag)`
196+
(the latter form is backwards compatible with older versions of Cabal).
197+
Enable `{-# LANGUAGE PatternSynonyms #-}` if required. In the unlikely case
198+
of defining instances for `Flag`, `{-# LANGUAGE TypeSynonymInstances #-}`
199+
is needed.

release-notes/WIP-Cabal-3.16.x.0.md

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)