1 cabal-install 3.14.0.0 changelog and release notes.
5 ### Significant changes
7 - `haddock-project` support for subcomponents [#9821](https://github.com/haskell/cabal/pull/9821)
9 - `haddock-project` handles sublibraries, test suites and benchmarks.
10 - `haddock` receives `--package-name` flag which allows to set names of
11 components which are included in the main `index.html` file.
12 - added `--use-unicode` flag to `haddock` and `haddock-project` commands.
13 - The directory structure of `./dist-newstyle` has changed. `haddock`
14 subcommand will install `package:sublib` component in a directory
15 `package/sublib` under `l/sublib/doc/html/`. This is important for
16 `haddock-project` command and in the future might will be useful for hackage
17 support of sublibraries. See
18 https://github.com/haskell/cabal/pull/9821#discussion_r1548557115.
20 - Redefine `build-type: Configure` in terms of `Hooks` [#9969](https://github.com/haskell/cabal/pull/9969)
22 The `build-type: Configure` is now implemented in terms of `build-type: Hooks`
23 rather than in terms of `build-type: Custom`. This moves the `Configure`
24 build-type away from the `Custom` issues. Eventually, `build-type: Hooks` will
25 no longer imply packages are built in legacy-fallback mode. When that
26 happens, `Configure` will also stop implying `legacy-fallback`.
28 The observable aspect of this change is `runConfigureScript` now having a
29 different type, and `autoconfSetupHooks` being exposed from `Distribution.Simple`.
30 The former is motivated by internal implementation details, while the latter
31 provides the `SetupHooks` value for the `Configure` build type, which can be
32 consumed by other `Hooks` clients (e.g. eventually HLS).
36 - Add support for building profiled dynamic way [#4816](https://github.com/haskell/cabal/issues/4816) [#9900](https://github.com/haskell/cabal/pull/9900)
39 New options for `cabal.project` and `./Setup` interface:
41 * `profiling-shared`: Enable building profiling dynamic way
42 * Passing `--enable-profiling` and `--enable-executable-dynamic` builds
43 profiled dynamic executables.
45 Support for using `profiling-shared` is guarded behind a constraint
46 which ensures you are using `Cabal >= 3.13`.
50 * `ghc-prof-shared-options`, for passing options when building in
53 - Fix interaction of `--*-shared` and `--*-executable-dynamic` options. [#10050](https://github.com/haskell/cabal/issues/10050) [#9900](https://github.com/haskell/cabal/pull/9900)
55 If you explicitly request `--disable-shared` it should disable the building of
56 a shared library and override any automatic ways this option is turned on.
58 Passing `--enable-executable-dynamic` turns on `--enable-shared` if the option is
59 not specified explicitly.
61 Before this patch, writing `--disable-shared` on its own would not disable the building of shared libraries. Writing `--disable-shared` and `--disable-executable-dynamic` would disable shared library
62 creation (despite `--disable-executable-dynamic` being the default).
66 * If you specify `--enable-shared` then shared objects are built.
67 * If you specify `--disabled-shared` then shared objects are not built.
68 * If you don't explicitly specify whether you want to build shared libraries then
69 * `--enable-executable-dynamic` will automatically turn on building shared libraries
70 * `--enable-executable-dynamic --enable-profiling` will automatically turn on building
71 shared profiling libraries (if supported by your compiler).
73 - `curl` transport now supports Basic authentication [#10089](https://github.com/haskell/cabal/pull/10089)
75 - The `curl` HTTP transport previously only supported the HTTP Digest
76 authentication scheme. Basic authentication is now supported
77 when using HTTPS; Curl will use the scheme offered by the server.
78 The `wget` transport already supports HTTPS.
80 - Enhance error detection for cabal root project files, including broken symlinks [#9937](https://github.com/haskell/cabal/issues/9937) [#10103](https://github.com/haskell/cabal/pull/10103)
82 - Added proper detection and reporting for issues with cabal root project files. Previously, these files were silently ignored if they were broken symlinks. Now, `cabal` will exit
83 with an error in such case.
85 - Let cabal init remember chosen language within current session [#10096](https://github.com/haskell/cabal/issues/10096) [#10115](https://github.com/haskell/cabal/pull/10115)
87 When `cabal init` asks for a language, the last choice made will be used as the new default for the current prompt.
89 - Filter out `-dinitial-unique` and `-dunique-increment` from package hash [#10122](https://github.com/haskell/cabal/pull/10122)
91 `-dinitial-unique` and `-dunique-increment` are now filtered out when computing the
92 store hash of a package.
94 These options shouldn't affect the output of the package and hence
95 shouldn't affect the store hash of a package.
97 - Warn about `git://` protocol [#10261](https://github.com/haskell/cabal/pull/10261)
99 `cabal check` will warn about the insecure (and no longer supported by GitHub or Gitlab, among others) `git://` protocol in `source-repository`.
101 See [Git Book](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols#_the_cons_4)
104 - Enable recompilation avoidance during Haddock generation [#9175](https://github.com/haskell/cabal/issues/9175) [#9177](https://github.com/haskell/cabal/pull/9177)
106 * Haddock no longer writes compilation files by default, so we do not need to
107 pass tmp dirs for `-hidir`, `-stubdir`, and `-odir` via `--optghc`. Indeed, we
108 do not *want* to do so, since it results in recompilation for every invocation
109 of Haddock via Cabal. We now stop this from happening for Haddock versions
110 2.28 and greater, since that is when Hi Haddock was introduced.
112 * We no longer define the `__HADDOCK_VERSION__` macro when invoking GHC through
113 Haddock, since doing so essentially guarantees recompilation during
114 documentation generation. We audited all uses of `__HADDOCK_VERSION__` in
115 hackage, ensuring there was a reasonable path forward to migrate away from
116 using `__HADDOCK_VERSION__` for each, while generating the same documentation
118 If you are a user of `__HADDOCK_VERSION__`, please take a look at the
119 discussion in https://github.com/haskell/cabal/pull/9177 and reach out to us
120 if your use case is not covered.
122 * Rename the `--haddock-lib` flag to `--haddock-resources-dir` (and
123 `haddock-lib:` cabal.project field to `haddock-resources-dir:`), and add this
124 flag to the users guide since it was missing an entry.
126 * `documentation: true` or `--enable-documentation` now implies `-haddock` for
129 - Bug fix - Don't pass `--coverage-for` for non-dependency libs of testsuite [#10046](https://github.com/haskell/cabal/issues/10046) [#10250](https://github.com/haskell/cabal/pull/10250)
131 - Added `--all` and `--haddock-all` switches to `haddock-project` subcommand [#10051](https://github.com/haskell/cabal/issues/10051) [#10163](https://github.com/haskell/cabal/pull/10163)
133 - Clarify error message when `pkg-config` is not found [#10122](https://github.com/haskell/cabal/pull/10122)
135 - The error message when `pkg-config` is not found or querying it fails will no
136 longer incorrectly claim that the package is missing in the database.
138 - Update the SPDX License List to version 3.25
140 The LicenseId and LicenseExceptionId types are updated to reflect the SPDX
141 License List version 3.25 (2024-08-19).