Skip to content

Commit f107349

Browse files
committed
Add changelog files for 3.16
* Integrate Brandon’s suggestions.
1 parent 269c1b1 commit f107349

File tree

8 files changed

+857
-20
lines changed

8 files changed

+857
-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: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
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+
- Don't imply that Haddock docs exist, when warning not installed [#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 `cabal act-as-setup configure` fails, it prints a list of "missing or
44+
private dependencies".
45+
46+
Now, it will show you if each failing dependency is missing, private, or an
47+
incompatible version:
48+
49+
```
50+
Error: [Cabal-8010]
51+
Encountered missing or private dependencies:
52+
Lib:{bar-internal,foo-internal} (missing :bar-internal),
53+
base <=1.0 (installed: 4.18.2.1),
54+
package-that-does-not-exist (missing)
55+
```
56+
57+
- Avoid partial `Data.List.last` in autogenerated `Paths_<pkg>.hs` [#10432](https://github.com/haskell/cabal/pull/10432)
58+
59+
- Autogenerated `Paths_<pkg>.hs` now avoids use of the partial function `Data.List.last`.
60+
61+
- Fix Haddock CSS handling in multi-package projects [#10636](https://github.com/haskell/cabal/issues/10636) [#10637](https://github.com/haskell/cabal/pull/10637)
62+
63+
When the `--css=<css-file>` flag is provided to `cabal haddock-project`:
64+
65+
- the Haddock index is now properly styled by the provided CSS file
66+
- each package in the project now has its docs properly styled by the provided CSS file
67+
68+
- 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)
69+
70+
On Windows, certain filenames are reserved by the operating system such as
71+
"aux", "con", "prn", "nul", etc. When these names appear in module paths they
72+
can cause build failures on Windows systems.
73+
74+
`cabal check` now properly warns about module paths that contain Windows reserved
75+
filenames, not just filepaths which contain these reserved tokens. These warnings
76+
are controlled by the existing `invalid-win-path` category.
77+
78+
For example, module paths like:
79+
- `Exe.Aux.Test`
80+
- `Test.Aux.Module`
81+
- `Bench.Aux.Helpers`
82+
83+
will now trigger appropriate warnings during `cabal check`.
84+
85+
- 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)
86+
87+
For GHC 8.4.4 and later, Cabal now passes the `-package-env=-` flag to GHC.
88+
This prevents the `GHC_ENVIRONMENT` variable or any package environment files
89+
from affecting Cabal builds.
90+
91+
This change eliminates unexpected build behavior that could occur when users
92+
had GHC environment files configured in their system that Cabal wasn't aware
93+
of.
94+
95+
- 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)
96+
97+
Fix a regression where `<pkgname>_datadir` was set to a relative path. This
98+
caused issues when running testsuites which changed the working directory and
99+
accessed datafiles.
100+
101+
- 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)
102+
103+
`./configure` scripts run by `build-type: Configure` will now be passed the CXX and
104+
`CXXFLAGS` variables. These reflect the path and flags for the C and C++ compilers respectively.
105+
106+
If the compiler is not available, then the flags are not passed. For GHC versions `>= 9.4.*`,
107+
the `CXX` variable will always be set and available to be used.
108+
109+
This can be useful for implementing something like `system-cxx-std-lib` in user-land.
110+
111+
- Remove dead build-tool greencard [#10908](https://github.com/haskell/cabal/pull/10908)
112+
113+
Remove knowledge of the build-tool `greencard` (non-existing since GHC 7.10)
114+
and the connect of the `.gc` extension to this build-tool.
115+
116+
- Remove knowledge about hmake and haskell-suite [#10912](https://github.com/haskell/cabal/pull/10912)
117+
118+
The `hmake` tool has long been abandoned, and the `haskell-suite` compiler did not emerge.
119+
Knowledge about these tools has been removed from `Cabal`.
120+
121+
- Haddock documentation added to Paths_pkgname and PackageInfo_pkgname modules [#10941](https://github.com/haskell/cabal/pull/10941)
122+
123+
The automatically-generated modules `Paths_pkgname` and `PackageInfo_pkgname`
124+
now include Haddock documentation.
125+
126+
- ghc-options added to js, cmm and asm [#10949](https://github.com/haskell/cabal/pull/10949)
127+
128+
Now we have the ability to pass `ghc-options` flags to all component.
129+
130+
```
131+
js-sources: jsbits/lib.js
132+
ghc-options: -optJSP-your_flag
133+
```
134+
135+
- Adding JavaScript Preprocessor Support [#10967](https://github.com/haskell/cabal/pull/10967)
136+
137+
Adding new syntax `jspp-options` that would support the `-optJSP` preprocessor flag for js sources.
138+
139+
```
140+
js-sources: jsbits/lib.js
141+
jspp-options: -DYOUR_FLAG
142+
```
143+
144+
- 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)
145+
146+
- Allow parsing the AbiTag for developmement versions of GHC.
147+
148+
- Take `--working-dir` into account in runPreProcessorWithHsBootHack [#11000](https://github.com/haskell/cabal/issues/11000) [#10991](https://github.com/haskell/cabal/pull/10991)
149+
150+
The preprocessor hs-boot hack handles the situation in which a file to be
151+
preprocessed is supplied alongside an hs-boot file, e.g. Foo.x and Foo.hs-boot
152+
are given together.
153+
154+
This code now respects the `--working-dir` Cabal global argument. This fixes
155+
build failures of the form:
156+
157+
``attempting to use module `Foo' (Foo.hs-boot) which is not loaded``
158+
159+
- 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)
160+
161+
This small patch fixes a little oversight in 'reusingGHCCompilationArtifacts',
162+
which would unconditionally attempt to copy over the GHC build artifacts to be
163+
re-used by Haddock, even when those artifacts did not exist (which caused
164+
an error).
165+
166+
- add SPDX license data version 3.26 [#11014](https://github.com/haskell/cabal/pull/11014)
167+
168+
- Update SPDX license list to version 3.26.0 2024-12-30
169+
170+
- Use response files when calling `ghc` [#9367](https://github.com/haskell/cabal/pull/9367)
171+
172+
Cabal now passes GHC arguments through a response file. This prevents an error
173+
where very large packages would fail to build due to the module names exceeding
174+
the `ARG_MAX` command-line length limit:
175+
176+
```
177+
ghc: createProcess: posix_spawnp: resource exhausted (Argument list too long)
178+
```
179+
180+
Notes:
181+
- RTS options (like `+RTS -H32m -S -RTS`) will not be included in response
182+
files.
183+
- For reproducing commands after Cabal exits, `--keep-temp-files` can be used
184+
to prevent the response files from being deleted.
185+
186+
- New licence constructors for SPDX licences starting with a digit [#10356](https://github.com/haskell/cabal/pull/10356)
187+
188+
- LicenseId constructor `NullBSD` is now `N_0BSD`.
189+
- LicenseId constructor `DS389_exception` is now and `N_389_exception`.
190+
- LicenseId constructor `X3D_Slicer_1_0` is now and `N_3D_Slicer_1_0`.
191+
192+
### Migration guide
193+
194+
- `data Flag a = Flag a | NoFlag` has been replaced with `type Flag = Data.Monoid.Last`,
195+
while `pattern Flag a = Last (Just a)` and `pattern NoFlag = Last Nothing` are provided
196+
for backward compatibility.
197+
Imports of form `import Distribution.Simple.Flag (Flag (..))` should be replaced
198+
with `import Distribution.Simple.Flag (Flag, pattern Flag, pattern NoFlag)`
199+
(the latter form is backwards compatible with older versions of Cabal).
200+
Enable `{-# LANGUAGE PatternSynonyms #-}` if required. In the unlikely case
201+
of defining instances for `Flag`, `{-# LANGUAGE TypeSynonymInstances #-}`
202+
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)