-
Notifications
You must be signed in to change notification settings - Fork 723
changelogs for Cabal-3.14 and (incomplete) cabal-install-3.16 #10322
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,6 @@ | ||
| # 3.14.0.0 [Hécate](mailto:[email protected]) 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:[email protected]) June 2024 | ||
| * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.12.1.0.md | ||
|
|
||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,232 @@ | ||
| ### Significant changes | ||
|
|
||
| - Neutral field to add files to sdist [#8817](https://github.com/haskell/cabal/issues/8817) [#10107](https://github.com/haskell/cabal/pull/10107) | ||
|
|
||
| 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. | ||
|
|
||
| ### Other changes | ||
|
|
||
| - Include package version when passing `--promised-dependency` flag [#10166](https://github.com/haskell/cabal/issues/10166) [#10248](https://github.com/haskell/cabal/pull/10248) | ||
|
|
||
| The --promised dependency flag now expects an argument in format | ||
|
|
||
| ``` | ||
| NAME-VER[:COMPONENT_NAME]=CID` | ||
| ``` | ||
|
|
||
| rather than | ||
|
|
||
| ``` | ||
| NAME[:COMPONENT_NAME]=CID | ||
| ``` | ||
|
|
||
| - Add support for building profiled dynamic way [#4816](https://github.com/haskell/cabal/issues/4816) [#9900](https://github.com/haskell/cabal/pull/9900) | ||
|
|
||
| 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 | ||
|
|
||
| - Working directory support for Cabal [#9702](https://github.com/haskell/cabal/issues/9702) [#9718](https://github.com/haskell/cabal/pull/9718) | ||
|
|
||
| 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)) | ||
|
|
||
| -> [SymbolicPath dir1 (Dir dir2)] | ||
|
|
||
| -> RelativePath dir2 File | ||
|
|
||
| -> IO (SymbolicPath dir1 File) | ||
| ``` | ||
|
|
||
| See Note [Symbolic paths] in `Distribution.Utils.Path` for further information | ||
| on the design of this API. | ||
|
|
||
| - Add MultilineStrings extension [#10245](https://github.com/haskell/cabal/pull/10245) | ||
|
|
||
| - adds support for the `MultilineStrings` language extension (GHC proposal #637) | ||
|
|
||
| - Add language extension NamedDefaults [#9740](https://github.com/haskell/cabal/pull/9740) | ||
|
|
||
| - adds support for the `NamedDefaults` language extension (GHC proposal #409) | ||
|
|
||
| ### Significant changes | ||
|
|
||
| - Neutral field to add files to sdist [#8817](https://github.com/haskell/cabal/issues/8817) [#10107](https://github.com/haskell/cabal/pull/10107) | ||
|
|
||
| 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. | ||
|
|
||
| ### Other changes | ||
|
|
||
| - Include package version when passing `--promised-dependency` flag [#10166](https://github.com/haskell/cabal/issues/10166) [#10248](https://github.com/haskell/cabal/pull/10248) | ||
|
|
||
| The --promised dependency flag now expects an argument in format | ||
|
|
||
| ``` | ||
| NAME-VER[:COMPONENT_NAME]=CID` | ||
| ``` | ||
|
|
||
| rather than | ||
|
|
||
| ``` | ||
| NAME[:COMPONENT_NAME]=CID | ||
| ``` | ||
|
|
||
| - Add support for building profiled dynamic way [#4816](https://github.com/haskell/cabal/issues/4816) [#9900](https://github.com/haskell/cabal/pull/9900) | ||
|
|
||
| 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 | ||
|
|
||
| - Working directory support for Cabal [#9702](https://github.com/haskell/cabal/issues/9702) [#9718](https://github.com/haskell/cabal/pull/9718) | ||
|
|
||
| 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)) | ||
|
|
||
| -> [SymbolicPath dir1 (Dir dir2)] | ||
|
|
||
| -> RelativePath dir2 File | ||
|
|
||
| -> IO (SymbolicPath dir1 File) | ||
| ``` | ||
|
|
||
| See Note [Symbolic paths] in `Distribution.Utils.Path` for further information | ||
| on the design of this API. | ||
|
|
||
| - Add flag ignore-build-tools [#10128](https://github.com/haskell/cabal/pull/10128) | ||
|
|
||
| - 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. | ||
|
|
||
| - Do not try to build dynamic executables on Windows [#10217](https://github.com/haskell/cabal/pull/10217) | ||
|
|
||
| - Cabal will now exit with a descriptive error message instead of attempting to | ||
| build a dynamic executable on Windows. | ||
|
|
||
| - Always pass `ghc-options` to GHC [#8717](https://github.com/haskell/cabal/pull/8717) | ||
|
|
||
| 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. | ||
|
|
||
| - Introduce SetupHooks [#9551](https://github.com/haskell/cabal/pull/9551) | ||
|
|
||
| Introduction of a new build type: Hooks. | ||
| This build type, intended as replacement to the Custom build type, integrates | ||
| better with the rest of the ecosystem (`cabal-install`, Haskell Language Server). | ||
|
|
||
| The motivation and full design of this new build-type are specified in the | ||
| Haskell Foundation Tech Proposal | ||
| [Replacing the Cabal Custom build-type](https://github.com/haskellfoundation/tech-proposals/pull/60). | ||
|
|
||
| Package authors willing to use this feature should declare `build-type: Hooks` | ||
| in their `.cabal` file, declare a custom-setup stanza with a dependency on the | ||
| `Cabal-hooks` package, and define a module `SetupHooks` that exports a value | ||
| `setupHooks :: SetupHooks`, using the API exported by `Distribution.Simple.SetupHooks` | ||
| from the `Cabal-hooks` package. Refer to the Haddock documentation of | ||
| `Distribution.Simple.SetupHooks` for example usage. | ||
|
|
||
| - Configure build-type in terms of Hooks [#9969](https://github.com/haskell/cabal/pull/9969) | ||
|
|
||
| The `build-type: Configure` is now implemented in terms of `build-type: Hooks` | ||
| rather than in terms of `build-type: Custom`. This moves the `Configure` | ||
| build-type away from the `Custom` issues. Eventually, `build-type: Hooks` will | ||
| no longer imply packages are built in legacy-fallback mode. Now, when that | ||
| happens, `Configure` will also stop implying `legacy-fallback`. | ||
|
|
||
| The observable aspect of this change is `runConfigureScript` now having a | ||
| different type, and `autoconfSetupHooks` being exposed `Distribution.Simple`. | ||
| The former is motivated by internal implementation details, while the latter | ||
| provides the `SetupHooks` value for the `Configure` build type, which can be | ||
| consumed by other `Hooks` clients (e.g. eventually HLS). | ||
|
|
||
| - 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. [#9476](https://github.com/haskell/cabal/pull/9476) | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mhh this seems duplicated (see top-of-file).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch. I'm guessing it's because the changes for Cabal and Cabal-syntax get appendent. I should properly merge the sections...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure they do (or they should do), once the Swedish Francesco is here we can confirm.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it's not about changelog-d itself, it's about how we use it. The wiki says: