Skip to content
Snippets Groups Projects
Unverified Commit 7ee3d544 authored by Artem Pelenitsyn's avatar Artem Pelenitsyn Committed by GitHub
Browse files

Changelogs 3.14 (#10336)


* changelogs for Cabal-3.14 and (incomplete) cabal-install-3.16

* cleanup changelog-d files afer creating the 3.14 changelog

* Apply suggestions from geekosaur

Co-authored-by: Brandon S. Allbery's avatarbrandon s allbery kf8nh <allbery.b@gmail.com>

* Apply more suggestions from geekosaur

* Apply suggestions from geekosaur (contd.)

Co-authored-by: Brandon S. Allbery's avatarbrandon s allbery kf8nh <allbery.b@gmail.com>

---------

Co-authored-by: Brandon S. Allbery's avatarbrandon s allbery kf8nh <allbery.b@gmail.com>
parent 39b69247
No related branches found
No related tags found
No related merge requests found
Showing
with 3 additions and 303 deletions
# 3.14.0.0 [Hécate](mailto:hecate+github@glitchbra.in) September 2024
* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.0.0.md
# 3.12.1.0 [Artem Pelenitsyn](mailto:a.pelenitsyn@gmail.com) June 2024
* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.12.1.0.md
......
synopsis: clarify Cabal "configure" messages
packages: Cabal
prs: #9476
synopsis: {
Cabal can issue a number of error messages referencing "Setup configure",
but it simply references "configure" which could mean any of three
things (Setup configure, the package's "configure" script, or "cabal
configure"). This has recently caught out even Cabal devs. Clarify these
messages.
}
synopsis: Bug fix - Don't pass --coverage-for for non-dependency libs of testsuite
packages: cabal-install
issues: #10046
prs: #10250
synopsis: Added `--all` and `--haddock-all` switches to `haddock-project` subcommand
packages: cabal-install
issues: #10051
prs: #2272
synopsis: Include package version when passing `--promised-dependency` flag
packages: Cabal Cabal-syntax
prs: #10248
issues: #10166
description: {
The --promised dependency flag now expects an argument in format
```
NAME-VER[:COMPONENT_NAME]=CID`
```
rather than
```
NAME[:COMPONENT_NAME]=CID
```
}
synopsis: Add support for building profiled dynamic way
packages: Cabal Cabal-syntax cabal-install
prs: #9900
issues: #4816
description: {
Add support for profiled dynamic way
New options for cabal.project and ./Setup interface:
* `profiling-shared`: Enable building profiling dynamic way
* Passing `--enable-profiling` and `--enable-executable-dynamic` builds
profiled dynamic executables.
Support for using `profiling-shared` is guarded behind a constraint
which ensures you are using `Cabal >= 3.13`.
In the cabal file:
* `ghc-prof-shared-options`, for passing options when building in
profiling dynamic way
}
synopsis: Fix interaction of `--*-shared` and `--*-executable-dynamic` options.
packages: cabal-install
prs: #9900
issues: #10050
description: {
If you explicitly request `--disable-shared` it should disable the building of
a shared library and override any automatic ways this option is turned on.
Passing `--enable-executable-dynamic` turns on `--enable-shared` if the option is
not specified explicitly.
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
creation (despite `--disable-executable-dynamic` being the default).
Now:
* If you specify `--enable-shared` then shared objects are built.
* If you specify `--disabled-shared` then shared objects are not built.
* If you don't explicitly specify whether you want to build shared libraries then
* `--enable-executable-dynamic` will automatically turn on building shared libraries
* `--enable-executable-dynamic --enable-profiling` will automatically turn on building
shared profiling libraries (if supported by your compiler).
}
synopsis: Neutral field to add files to sdist
packages: Cabal Cabal-syntax
prs: #10107
issues: #8817
significance: significant
description: {
Adds the `extra-files` field to the cabal file specification. This is like
the other `extra-*` fields in that it is copied with the `sdist` command,
except there are no other semantics. Compare to:
* `extra-source-files`: Tracked by `cabal build`.
* `extra-doc-files`: Copied by Haddock to the html directory.
}
synopsis: Working directory support for Cabal
packages: Cabal-syntax Cabal cabal-install
prs: #9718
issues: #9702
description: {
The Cabal library is now able to handle a passed-in working directory, instead
of always relying on the current working directory of the parent process.
In order to achieve this, the `SymbolicPath` abstraction was fleshed out, and
all fields of `PackageDescription` that, if relative, should be interpreted
with respect to e.g. the package root, use `SymbolicPath` instead of `FilePath`.
This means that many library functions in `Cabal` take an extra argument of type
`Maybe (SymbolicPath CWD (Dir "Package))`, which is an optional (relative or
absolute) path to the package root (if relative, relative to the current working
directory). In addition, many functions that used to manipulate `FilePath`s now
manipulate `SymbolicPath`s, require explicit conversion using e.g. `getSymbolicPath`.
To illustrate with file searching, the `Cabal` library defines:
```haskell
findFileCwd
:: forall dir1 dir2 file
. Verbosity
-> Maybe (SymbolicPath CWD (Dir dir1))
-- ^ working directory
-> [SymbolicPath dir1 (Dir dir2)]
-- ^ search directories
-> RelativePath dir2 File
-- ^ filename
-> IO (SymbolicPath dir1 File)
```
See Note [Symbolic paths] in `Distribution.Utils.Path` for further information
on the design of this API.
}
synopsis: `curl` transport now supports Basic authentication
packages: cabal-install
prs: #10089
description: {
- The `curl` HTTP transport previously only supported the HTTP Digest
authentication scheme. Basic authentication is now supported
when using HTTPS; Curl will use the scheme offered by the server.
The `wget` transport already supports HTTPS.
}
synopsis: Enhance error detection for cabal root project files, including broken symlinks
packages: cabal-install
prs: #10103
issues: #9937
description: {
- 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
with an error in such case.
}
synopsis: Let cabal init remember chosen language within current session
packages: cabal-install
prs: #10115
issues: #10096
description: {
When cabal init asks for a language, the last choice will be used as the new default for the current session.
}
\ No newline at end of file
synopsis: Clarify error message when pkg-config is not found
packages: cabal-install-solver
prs: #10122
description: {
- The error message when pkg-config is not found or querying it fails will no
longer incorrectly claim that the package is missing in the database.
}
synopsis: Add flag ignore-build-tools
packages: Cabal
prs: #10128
description: {
- Adds flag --ignore-build-tools which allows a user to ignore the tool
dependencies declared in build-tool-depends. For general use, this flag
should never be needed, but it may be useful for packagers.
}
synopsis: Do not try to build dynamic executables on Windows
packages: Cabal
prs: #10217
description: {
- Cabal will now exit with a descriptive error message instead of attempting to
build a dynamic executable on Windows.
}
synopsis: Filter out dinitial-unique and dunique-increment from package hash
packages: cabal-install
prs: #10122
description: {
`-dinitial-unique` and `-dunique-increment` are now filtered out when computing the
store hash of a package.
These options shouldn't affect the output of the package and hence
shouldn't affect the store hash of a package.
}
synopsis: Add MultilineStrings extension
packages: Cabal-syntax
prs: #10245
description: {
- adds support for the `MultilineStrings` language extension (GHC proposal #637)
}
synopsis: Warn about git:// protocol
packages: cabal-install
prs: #10261
description: {
`cabal check` will warn about insecure git:// protocol in `source-repository`.
See [Git Book](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols#_the_cons_4)
for an explanation.
}
synopsis: Always pass `ghc-options` to GHC
packages: Cabal
prs: #8717
issues:
description: {
Previously, options set in the package field `ghc-options` would not be passed
to GHC during the link phase for shared objects (where multiple `.o` or
`.dyn_o` files are merged into a single object file). This made it impossible
to use `ghc-options` to use a different linker by setting (for example)
`ghc-options: -optl-fuse-ld=mold -optlm-fuse-ld=mold`; the options would be
dropped in the link phase, falling back to the default linker.
It was possible to work around this by duplicating the `ghc-options` to
`ghc-shared-options`, which _are_ passed in the shared link phase, but that had
the (undocumented and unfortunate) side-effect of disabling the GHC
`-dynamic-too` flag, effectively doubling compilation times when
`ghc-shared-options` are set.
Now, `ghc-options` are combined with `ghc-shared-options` (to accurately
reflect the documentation on this feature) and the fact that
`ghc-shared-options` disables `-dynamic-too` is documented.
}
synopsis: Enable recompilation avoidance during Haddock generation
packages: cabal-install
prs: #9177
issues: #9175
description: {
* Haddock no longer writes compilation files by default, so we do not need to
pass tmp dirs for `-hidir`, `-stubdir`, and `-odir` via `--optghc`. Indeed, we
do not *want* to do so, since it results in recompilation for every invocation
of Haddock via Cabal. We now stop this from happening for Haddock versions
2.28 and greater, since that is when Hi Haddock was introduced.
* We no longer define the `__HADDOCK_VERSION__` macro when invoking GHC through
Haddock, since doing so essentially guarantees recompilation during
documentation generation. We audited all uses of `__HADDOCK_VERSION__` in
hackage, ensuring there was a reasonable path forward to migrate away from
using `__HADDOCK_VERSION__` for each, while generating the same documentation
as it did before.
If you are a user of `__HADDOCK_VERSION__`, please take a look at the
discussion in https://github.com/haskell/cabal/pull/9177 and reach out to us
if your use case is not covered.
* Rename the `--haddock-lib` flag to `--haddock-resources-dir` (and
`haddock-lib:` cabal.project field to `haddock-resources-dir:`), and add this
flag to the users guide since it was missing an entry.
* `documentation: true` or `--enable-documentation` now implies `-haddock` for
GHC.
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment