Skip to content

Commit

Permalink
Fix formatting
Browse files Browse the repository at this point in the history
Fix formatting for for cabal-install-3.12.0.0 release notes.
  • Loading branch information
ffaf1 committed Mar 7, 2024
1 parent efaf1ae commit 7406867
Showing 1 changed file with 110 additions and 104 deletions.
214 changes: 110 additions & 104 deletions release-notes/cabal-install-3.12.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,191 +3,197 @@ cabal-install and cabal-install-solver 3.12.0.0 changelog and release notes

- Add --project-dir flag [#7695](https://github.com/haskell/cabal/issues/7695) [#7940](https://github.com/haskell/cabal/issues/7940) [#8454](https://github.com/haskell/cabal/pull/8454)

- Added --project-dir flag for specifying the project's root directory
- Deprecated using --project-file with an absolute filepath without also using --project-dir
- Added --project-dir flag for specifying the project's root directory
- Deprecated using --project-file with an absolute filepath without also using --project-dir

- remove[#9151](https://github.com/haskell/cabal/issues/9151) [#9346](https://github.com/haskell/cabal/pull/9346)
- Remove useles "Log" log level [#9151](https://github.com/haskell/cabal/issues/9151) [#9346](https://github.com/haskell/cabal/pull/9346)

- Remove "Log" as a log level in favour of "Info".
- Remove "Show" in Severity and replace by "displaySeverity" function
- Remove "Log" as a log level in favour of "Info".
- Remove "Show" in Severity and replace by "displaySeverity" function

- Add `--haddock-output-dir` flag to `cabal haddock`. [#8720](https://github.com/haskell/cabal/issues/8720) [#8788](https://github.com/haskell/cabal/pull/8788)

This flag gives the user full control over the directory where the documentation is placed. It allows both relative and absolute paths.

- Support per-component builds when coverage is enabled [#4798](https://github.com/haskell/cabal/issues/4798) [#5213](https://github.com/haskell/cabal/issues/5213) [#6397](https://github.com/haskell/cabal/issues/6397) [#6440](https://github.com/haskell/cabal/issues/6440) [#9464](https://github.com/haskell/cabal/pull/9464)

Cabal now supports per-component builds when coverage is enabled.This enables
coverage for packages with internal libraries (#6440), and enables coverage for
packages that use backpack (#6397), even though we do not get coverage for
instantiations of an indefinite module (it is not clear what it means for HPC
to support backpack, regardless of Cabal).
Cabal now supports per-component builds when coverage is enabled.This enables
coverage for packages with internal libraries (#6440), and enables coverage for
packages that use backpack (#6397), even though we do not get coverage for
instantiations of an indefinite module (it is not clear what it means for HPC
to support backpack, regardless of Cabal).

To achieve this, hpc information (`.mix` files) from a library is now written
into the package database of a library under `extraCompilationArtifacts`.
To achieve this, hpc information (`.mix` files) from a library is now written
into the package database of a library under `extraCompilationArtifacts`.

Cabal configure (via the Setup interface) now accepts --coverage-for=<unit-id>,
a flag which specifies which libraries should be included in the coverage
report for some testsuite.
Cabal configure (via the Setup interface) now accepts --coverage-for=<unit-id>,
a flag which specifies which libraries should be included in the coverage
report for some testsuite.

### Other changes

- Script cache dir is the base16 hash of the canonical path of the script. [#9459](https://github.com/haskell/cabal/pull/9459)

Script cache dir is the base16 hash of the canonical path of the script.
Script cache dir is the base16 hash of the canonical path of the script.

- Die if package list is missing [#8944](https://github.com/haskell/cabal/pull/8944)

If a package list is missing, `cabal` will now die and suggest the user to run
`cabal update` instead of continuing into not being able to find packages coming
from the remote package server.
If a package list is missing, `cabal` will now die and suggest the user to run
`cabal update` instead of continuing into not being able to find packages coming
from the remote package server.

- Reject index-state younger than cached index file [#8944](https://github.com/haskell/cabal/pull/8944)

Requesting to use an index-state younger than the cached version will now fail,
telling the user to use an index-state older or equal to the cached file, or to
run `cabal update`.
Requesting to use an index-state younger than the cached version will now fail,
telling the user to use an index-state older or equal to the cached file, or to
run `cabal update`.

The warning for a non-existing index-state has been also demoted to appear only
on verbose logging.
The warning for a non-existing index-state has been also demoted to appear only
on verbose logging.

- Warn early that overwrite policy is needed [#5993](https://github.com/haskell/cabal/issues/5993) [#9268](https://github.com/haskell/cabal/pull/9268)

Waiting for a long build and then seeing the install fail because a flag was
missing is frustrating.With this change we skip the wait and warn early,
before the build, that an overwrite policy flag would be needed for the
install to succeed.
Waiting for a long build and then seeing the install fail because a flag was
missing is frustrating.With this change we skip the wait and warn early,
before the build, that an overwrite policy flag would be needed for the
install to succeed.

- Add support for authentication tokens for uploading to Hackage [#6738](https://github.com/haskell/cabal/issues/6738) [#9058](https://github.com/haskell/cabal/pull/9058)

A new flag `--token` (`-t`) has been created. Token authentication takes
precedence over username and password meaning that, if a token is set,
the username and password flags are ignored.
A new flag `--token` (`-t`) has been created. Token authentication takes
precedence over username and password meaning that, if a token is set,
the username and password flags are ignored.

- Make --(test-)show-details=direct the default [#8942](https://github.com/haskell/cabal/pull/8942)

This option leaves it up to the testing framework to decide what and how to print out,
potentially leading to a prettier output. For example, most of the testing frameworks
use colors, which wouldn't be seen with any other option.
This option leaves it up to the testing framework to decide what and how to print out,
potentially leading to a prettier output. For example, most of the testing frameworks
use colors, which wouldn't be seen with any other option.

This comes with a tradeoff, though: Cabal will not create a log file with this option.
If you prefer a log file, consider setting `--test-show-details=streaming` (or something
else) manually.
This comes with a tradeoff, though: Cabal will not create a log file with this option.
If you prefer a log file, consider setting `--test-show-details=streaming` (or something
else) manually.

- Make sure Haskell files in explicit source directories take precedence over autogenerated Haskell files [#8689](https://github.com/haskell/cabal/issues/8689) [#8690](https://github.com/haskell/cabal/pull/8690)

- Changed order or directories in GHC invocation so that source
directories explicitly specified in cabal file will be considered
before Cabal’s internal build directory.
- Changed order or directories in GHC invocation so that source
directories explicitly specified in cabal file will be considered
before Cabal’s internal build directory.

- Also render short options with arguments [#8785](https://github.com/haskell/cabal/issues/8785) [#9043](https://github.com/haskell/cabal/pull/9043)

Show how arguments are used with both short and long forms of options:
Show how arguments are used with both short and long forms of options:

```diff
<-v, --verbose[=n]Control verbosity (n is 0--3, default
>-v[n], --verbose[=n] Control verbosity (n is 0--3, default
<-w, --with-compiler=PATH give the path to a particular compiler
>-w PATH or -wPATH, --with-compiler=PATH
```
```diff
<-v, --verbose[=n]Control verbosity (n is 0--3, default
>-v[n], --verbose[=n] Control verbosity (n is 0--3, default
<-w, --with-compiler=PATH give the path to a particular compiler
>-w PATH or -wPATH, --with-compiler=PATH
```

- config file: allow more flags in the init section [#8835](https://github.com/haskell/cabal/issues/8835) [#8839](https://github.com/haskell/cabal/pull/8839)

The init section of config file now allows the following fields:
The init section of config file now allows the following fields:

- Fix handling of ETag header for remote packages [#9113](https://github.com/haskell/cabal/issues/9113) [#9116](https://github.com/haskell/cabal/pull/9116)

Remote packages will now be cached regardless of the capitalization of the
"ETag" header. Previously remote packages would not be cached if the header
name did not match exactly. Now they will be cached even if the header's
capitalization is different.
Remote packages will now be cached regardless of the capitalization of the
"ETag" header. Previously remote packages would not be cached if the header
name did not match exactly. Now they will be cached even if the header's
capitalization is different.

- Clarify the semantics of the -package-db flag [#9678](https://github.com/haskell/cabal/issues/9678)

The `--package-db` flag now only applies to the default
immutable initial package stack rather than also applying to the store
package database.
The `--package-db` flag now only applies to the default
immutable initial package stack rather than also applying to the store
package database.

This fixes an assertion failure which was triggered when using -package-db and also
clarifies how it should interact with `--store-dir` and `--dist-dir` flags.
This fixes an assertion failure which was triggered when using -package-db and also
clarifies how it should interact with `--store-dir` and `--dist-dir` flags.

- PkgConfig individual calls [#9134](https://github.com/haskell/cabal/pull/9134)

- Add `--semaphore` flag to enable interaction with GHC Job Server protocol [#8557](https://github.com/haskell/cabal/pull/8557)

When cabal-install is passed the `--semaphore` flag it will now act as a job server
according to the GHC Jobserver Protocol.
When cabal-install is passed the `--semaphore` flag it will now act as a job server
according to the GHC Jobserver Protocol.

In particular this means that cabal-install will create a semaphore which it then
passes to `./Setup build` (and hence `ghc`) which can be used by `ghc` in order to
control how much paralellism it uses, coordinating with other simultaneously running
processes.
In particular this means that cabal-install will create a semaphore which it then
passes to `./Setup build` (and hence `ghc`) which can be used by `ghc` in order to
control how much paralellism it uses, coordinating with other simultaneously running
processes.

This feature requires ghc-9.8 in order to use, as this is the first version of GHC
which implements the protocol.
This feature requires ghc-9.8 in order to use, as this is the first version of GHC
which implements the protocol.

- Reimplementing `cabal check` [#7423](https://github.com/haskell/cabal/issues/7423) [#8427](https://github.com/haskell/cabal/pull/8427)

- For `cabal-install` users: `cabal check` do not warn on -O2 or similar
options if under an off-by-default cabal flag.

The protocol is specified by [GHC Proposal #540](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0540-jsem.rst).

- Adds functionality for the --offline flag with the "build" command. [#8676](https://github.com/haskell/cabal/pull/8676)

The --offline flag previously created in #2578 but was only implemented for the install command even thought the flag didn't throw an error whenever the build command was run. This PR adds functionality for the --offline flag with the build command.
Additionally there is a new PackageTest for the flag using the build command.
The --offline flag previously created in #2578 but was only implemented
for the install command even thought the flag didn't throw an error
whenever the build command was run. This PR adds functionality for the
--offline flag with the build command. Additionally there is a new
PackageTest for the flag using the build command.

- Add warning for running cabal run, cabal test and cabal bench with +RTS flag [#8709](https://github.com/haskell/cabal/pull/8709)

This adds a warning when RTS options are passed to cabal instead of the binary
for the commands 'run', 'bench' and 'test', as most users want to pass these
options to their binary.
This adds a warning when RTS options are passed to cabal instead of the
binary for the commands 'run', 'bench' and 'test', as most users want to
pass these options to their binary.

- Add support for loading multiple components into one repl session [#8238](https://github.com/haskell/cabal/pull/8238) [#8491](https://github.com/haskell/cabal/pull/8491) [#8726](https://github.com/haskell/cabal/pull/8726)

The `repl` command is extended in order to allow starting a repl session with
multiple local components. When a user specifies a target to the "repl" command
which resolves to multiple local components then `cabal` will start a repl session
which loads them all into a single GHC session if the multi-repl is enabled.
The `repl` command is extended in order to allow starting a repl session
with multiple local components. When a user specifies a target to the
"repl" command which resolves to multiple local components then `cabal`
will start a repl session which loads them all into a single GHC session
if the multi-repl is enabled.

The multi-repl can be enabled by passing `--enable-multi-repl`, or writing `multi-repl: True` in
your cabal.project file.
The multi-repl can be enabled by passing `--enable-multi-repl`, or writing
`multi-repl: True` in your cabal.project file.

The feature is fully explained in [this blog post](https://well-typed.com/blog/2023/03/cabal-multi-unit/).
The feature is fully explained in [this blog
post](https://well-typed.com/blog/2023/03/cabal-multi-unit/).

- Add `cabal path` command [#8879](https://github.com/haskell/cabal/pull/8879)

The `cabal path` command prints the file system paths used by Cabal.
It is intended for use by tooling that needs to read or modify Cabal
data, such that it does not need to replicate the complicated logic
for respecting `CABAL_DIR`, `CABAL_CONFIG`, etc.
The `cabal path` command prints the file system paths used by Cabal.
It is intended for use by tooling that needs to read or modify Cabal
data, such that it does not need to replicate the complicated logic
for respecting `CABAL_DIR`, `CABAL_CONFIG`, etc.

- `cabal check`: clearly mark Errors [#8908](https://github.com/haskell/cabal/pull/8908)

- `cabal check` will now mark errors (which make the program return 1 and
Hackage refuse the package) by prepending them with an "Error: " string
in the output.
`cabal check` will now mark errors (which make the program return 1 and
Hackage refuse the package) by prepending them with an "Error: " string in
the output.

- Warn when project configuration options are going to be ignored. [#8949](https://github.com/haskell/cabal/pull/8949)

Some project configuration options can only be specified from the command line.
If the user specified those options from a project file, cabal-install would
silently ignore them. Now cabal-install will emit a warning.
Some project configuration options can only be specified from the command
line. If the user specified those options from a project file,
cabal-install would silently ignore them. Now cabal-install will emit a
warning.

- Fix precedence for PATH for build-tools-depends [#8972](https://github.com/haskell/cabal/pull/8972)

- fixes a bug introduced in #8506 that caused executables in the path to take precedence over those specified in build-tools-depends.
Fixes a bug introduced in #8506 that caused executables in the path to
take precedence over those specified in build-tools-depends.

- Remove --cabal-file flags from v2 commands [#6880](https://github.com/haskell/cabal/issues/6880) [#7225](https://github.com/haskell/cabal/issues/7225) [#8395](https://github.com/haskell/cabal/issues/8395) [#9123](https://github.com/haskell/cabal/pull/9123)

The --cabal-file flag was never meant for public use but only for testing. To
avoid confusing the users any further we removed the flag from v2 commands.
The --cabal-file flag was never meant for public use but only for testing.
To avoid confusing the users any further we removed the flag from v2
commands.

- Avoid a double space in "Executing install plan ..." [#9376](https://github.com/haskell/cabal/pull/9376)

The "Executing·install·plan··serially" and other similar "Executing install
plan··..." outputs no longer contain double spaces.
The "Executing·install·plan··serially" and other similar "Executing
install plan··..." outputs no longer contain double spaces.

- Guard PackageInfo_* modules behind `cabal-version` ≥ 3.12 [#9331](https://github.com/haskell/cabal/issues/9331) [#9481](https://github.com/haskell/cabal/pull/9481)

Expand All @@ -203,17 +209,17 @@ plan··..." outputs no longer contain double spaces.

- Shorten solver rejection messages by removing repetition [#4251](https://github.com/haskell/cabal/issues/4251) [#9559](https://github.com/haskell/cabal/issues/9559) [#9560](https://github.com/haskell/cabal/pull/9560)

As before, we show a single rejection as hyphenated package-version.
As before, we show a single rejection as hyphenated package-version.

For multiple rejections, we show a list of versions preceded by package
semicolon, a much shorter rendering of the same information.
For multiple rejections, we show a list of versions preceded by package
semicolon, a much shorter rendering of the same information.

```diff
- [__0] rejecting: pandoc-3.1.8, pandoc-3.1.7, pandoc-3.1.6.2, pandoc-3.1.6.1,
- pandoc-3.1.6, pandoc-3.1.5, pandoc-3.1.4, pandoc-3.1.3, pandoc-3.1.2,
- pandoc-3.1.1, pandoc-3.1, pandoc-3.0.1, pandoc-3.0, pandoc-2.19.2,
- pandoc-2.19.1, pandoc-2.19, pandoc-2.18, pandoc-2.17.1.1, pandoc-2.17.1,
+ [__0] rejecting: pandoc; 3.1.8, 3.1.7, 3.1.6.2, 3.1.6.1, 3.1.6, 3.1.5, 3.1.4,
+ 3.1.3, 3.1.2, 3.1.1, 3.1, 3.0.1, 3.0, 2.19.2, 2.19.1, 2.19, 2.18, 2.17.1.1,
```diff
- [__0] rejecting: pandoc-3.1.8, pandoc-3.1.7, pandoc-3.1.6.2, pandoc-3.1.6.1,
- pandoc-3.1.6, pandoc-3.1.5, pandoc-3.1.4, pandoc-3.1.3, pandoc-3.1.2,
- pandoc-3.1.1, pandoc-3.1, pandoc-3.0.1, pandoc-3.0, pandoc-2.19.2,
- pandoc-2.19.1, pandoc-2.19, pandoc-2.18, pandoc-2.17.1.1, pandoc-2.17.1,
+ [__0] rejecting: pandoc; 3.1.8, 3.1.7, 3.1.6.2, 3.1.6.1, 3.1.6, 3.1.5, 3.1.4,
+ 3.1.3, 3.1.2, 3.1.1, 3.1, 3.0.1, 3.0, 2.19.2, 2.19.1, 2.19, 2.18, 2.17.1.1,
```

0 comments on commit 7406867

Please sign in to comment.