diff --git a/changelog.d/issue-10042 b/changelog.d/issue-10042 deleted file mode 100644 index e254210c028..00000000000 --- a/changelog.d/issue-10042 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Don't recommend deprecated/removed 'extensions:' field -packages: Cabal -prs: #10044 -issues: #10042 - -description: { - When applicable, field 'default-extensions:' is recommended (rather than - deprecated/removed 'extensions:'). -} diff --git a/changelog.d/issue-10063 b/changelog.d/issue-10063 deleted file mode 100644 index 568ffe68a9b..00000000000 --- a/changelog.d/issue-10063 +++ /dev/null @@ -1,14 +0,0 @@ -synopsis: External commands now propagate exit code from child process -packages: cabal-install -prs: #10100 -issues: #10063 - -description: { - The exit code from an external command is now propagated as the exit code of - cabal-install when invoked by calling an external command. - - For example, if your external command exits with code 1, then cabal-install will - also exit with code 1. - - This mechanism can be used by an external command to signal failure. -} diff --git a/changelog.d/issue-6750 b/changelog.d/issue-6750 deleted file mode 100644 index e392258267b..00000000000 --- a/changelog.d/issue-6750 +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: Make Setup copy/install succeed when there's no executable or library -packages: Cabal -prs: #9926 -issues: #6750 - -description: { - Historically the Setup copy and install steps would fail if the package didn't - contain an executable or library component. In this case there's nothing to do. - - This required workarounds for downstream users of Cabal to handle this edge case. - Now that this error has been downgraded to a warning, Cabal will succeed if - there's nothing to do. -} diff --git a/changelog.d/issue-8875 b/changelog.d/issue-8875 deleted file mode 100644 index 6642609a0e6..00000000000 --- a/changelog.d/issue-8875 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Allow whitespace in targets -packages: cabal-install -prs: #10032 -issues: #8875 - -description: { -Allow spaces in the final component of target selectors. This resolves an issue -where using absolute paths in selectors can fail if there is whitespace in the -parent directories of the project. -} diff --git a/changelog.d/issue-9641 b/changelog.d/issue-9641 deleted file mode 100644 index 34666f0ad59..00000000000 --- a/changelog.d/issue-9641 +++ /dev/null @@ -1,8 +0,0 @@ -synopsis: offline flag applied to `source-repository-package`s -packages: Cabal-install -prs: #9771 -issues: #9641 - -description: { -`--offline` flag is already used to block access to Hackage. Now with this PR, this also applies to remote dependency `source-repository-package` in `cabal.project`. -} diff --git a/changelog.d/issue-9919 b/changelog.d/issue-9919 deleted file mode 100644 index a4fe32bbdef..00000000000 --- a/changelog.d/issue-9919 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Fix --program-suffix resulting in invalid installation -packages: cabal-install -issues: #8823 #9919 -prs: #10056 diff --git a/changelog.d/issue-9971 b/changelog.d/issue-9971 deleted file mode 100644 index 9bfb2e4822f..00000000000 --- a/changelog.d/issue-9971 +++ /dev/null @@ -1,6 +0,0 @@ -synopsis: Renders project configuration provenance as a list of canonical paths -packages: cabal-install cabal-install-solver -prs: #9985 -issues: #9971 - -description: Removes interleaved rendering of project imports. diff --git a/changelog.d/pr-10014 b/changelog.d/pr-10014 deleted file mode 100644 index 541b4c72d18..00000000000 --- a/changelog.d/pr-10014 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Update ghc args normalization and ghc option rendering -packages: Cabal -issues: #9729 -prs: #10014 - -description: { - -The flags -fdiagnostics-as-json, -fprint-error-index-lists, -fbreak-points, -dipe-stats, -ffamily-application-cache, -fprint-redundant-promotion-ticks, -fshow-error-context and -funoptimized-core-for-interpreter have been added to the flags that do not cause recompilation. - ---{enable,disable}-split-objs is not shown on in the helper for GHC >= 9.8 -} diff --git a/changelog.d/pr-9766 b/changelog.d/pr-9766 deleted file mode 100644 index 3d10abb659f..00000000000 --- a/changelog.d/pr-9766 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Warn on missing `default-language` -packages: Cabalcabal-install -prs: #9766 -issues: #9620 - -description: { - -- To help the adoption of GHC language editions, `cabal check` will now - warn about missing `default-language`. - -} diff --git a/changelog.d/pr-9824 b/changelog.d/pr-9824 deleted file mode 100644 index 168b9c98e64..00000000000 --- a/changelog.d/pr-9824 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Abbrevate solver rejection messages with installed versions -packages: cabal-install-solver -prs: #9824 -issues: #9823 - -description: { - -Abbreviate solver rejection messages even in the presence of installed versions. - -} diff --git a/changelog.d/pr-9878 b/changelog.d/pr-9878 deleted file mode 100644 index c4c5de13f61..00000000000 --- a/changelog.d/pr-9878 +++ /dev/null @@ -1,8 +0,0 @@ -synopsis: Add mhs as a known Haskell compiler -packages: Cabal -issues: -prs: #9878 - -description: { -This simply add MHS to the enumeration of known Haskell compilers. -} diff --git a/changelog.d/pr-9950 b/changelog.d/pr-9950 deleted file mode 100644 index a961c953639..00000000000 --- a/changelog.d/pr-9950 +++ /dev/null @@ -1,21 +0,0 @@ -synopsis: Re-instate `initialBuildSteps` -packages: Cabal -issues: #9856 -prs: #9950 - -description: { - -The `initialBuildSteps` function from `Distribution.Simple.Build`, which had -been hastily removed, has been reinstated. - -It now comes with a deprecation warning: calling that function does not suffice -to prepare the sources for a package, as there are other steps that one might -also need to perform: - - - running pre-processors (such as alex/happy) - - running pre-build hooks or custom logic - (in build-type: Hooks or build-type: Custom or Configure) - -Consumers wanting to prepare the sources of a package, e.g. in order to launch a -REPL session, are advised to run `setup repl --repl-multi-file=` instead. -} diff --git a/release-notes/Cabal-3.12.0.0.md b/release-notes/Cabal-3.12.0.0.md index f177338c6ec..d15a748173f 100644 --- a/release-notes/Cabal-3.12.0.0.md +++ b/release-notes/Cabal-3.12.0.0.md @@ -55,7 +55,7 @@ Cabal and Cabal-syntax 3.12.0.0 changelog and release notes `filterPackageChecksById`, this can be used by third-party tools to filter warnings. -- Add support for `GHC2024` [#9736](https://github.com/haskell/cabal/issues/9736) +- Add support for `GHC2024` [#9736](https://github.com/haskell/cabal/issues/9736) [#9791](https://github.com/haskell/cabal/pull/9791) Support for the `GHC2024` language edition, introduced by GHC 9.10, has been added. It can now be used in the `default-language` and `other-languages` @@ -73,18 +73,24 @@ Cabal and Cabal-syntax 3.12.0.0 changelog and release notes If you are dealing with a custom setup, you have to invoke `./Setup repl --repl-multi-file`. +<<<<<<< HEAD - Cabal and Cabal-syntax 3.12 support GHC version 8.4.4 and up. Support for all previous GHC versions is deprecated. +======= +- Label error messages with codes (following GHC, Stack) + + As with GHC and Stack, Cabal and cabal-install now generate warnings and errors prefixed with error codes of the form `[Cabal-xxxxx]`. These will be documented on https://errors.haskell.org, although very few are as yet. +>>>>>>> 2067ed198 (Changelogs for 3.12.1.0 (#10124)) ### Other changes -- `cabal init` should not suggest Cabal < 2.0 [#8680](https://github.com/haskell/cabal/issues/8680) +- `cabal init` should not suggest Cabal < 2.0 [#8680](https://github.com/haskell/cabal/issues/8680) [#8700](https://github.com/haskell/cabal/pull/8700) 'cabal init' no longer suggests users to set cabal-version to less than 2.0. -- Remove Distribution.Utils.TempTestDir module from Cabal library [#9453](https://github.com/haskell/cabal/issues/9453) [#9454](https://github.com/haskell/cabal/pull/9454) +- Remove `Distribution.Utils.TempTestDir` module from Cabal library [#9453](https://github.com/haskell/cabal/issues/9453) [#9454](https://github.com/haskell/cabal/pull/9454) This library was only used by internal tests, and now lives in the `Cabal-tests` library which is shared across test components. @@ -110,7 +116,7 @@ Cabal and Cabal-syntax 3.12.0.0 changelog and release notes - `checkPackage` signature has been simplified, you do not need to pass a specific configuration of the package, since - we do not flatten GenericPackageDescription any more. + we do not flatten `GenericPackageDescription` any more. - `checkPackageFileNames` has been removed, use `checkPackageFiles` instead. - `checkPackageFilesGPD` has been introduced, @@ -122,7 +128,7 @@ Cabal and Cabal-syntax 3.12.0.0 changelog and release notes GHC plugins now can store custom data in the 'extra-compilation-artifacts' directory which gets installed with the package. -- Add option to ./Setup repl to write repl arguments to file [#8726](https://github.com/haskell/cabal/pull/8726) +- Add option to `./Setup repl` to write repl arguments to file [#8726](https://github.com/haskell/cabal/pull/8726) The `./Setup repl` command is modified to allow a user to defer starting the repl and instead instruct the command to write the necessary build @@ -137,7 +143,7 @@ Cabal and Cabal-syntax 3.12.0.0 changelog and release notes Cabal: Distribution now recognises Haiku as a valid platform, and also implements Haiku's unique directory layout. -- Installation of .hie files [#8685](https://github.com/haskell/cabal/issues/8685) [#9019](https://github.com/haskell/cabal/pull/9019) +- Installation of `.hie` files [#8685](https://github.com/haskell/cabal/issues/8685) [#9019](https://github.com/haskell/cabal/pull/9019) Hie files generated by GHC are now stored in the `extra-compilation-artifacts` directory which gets installed with the @@ -180,7 +186,7 @@ Cabal and Cabal-syntax 3.12.0.0 changelog and release notes - Document `remote-repo-cache` as implemented. [#8737](https://github.com/haskell/cabal/issues/8737) [#8738](https://github.com/haskell/cabal/pull/8738) -- Deduplicate LD_LIBRARY_PATH when running tests [#8728](https://github.com/haskell/cabal/pull/8728) +- Deduplicate `LD_LIBRARY_PATH` when running tests [#8728](https://github.com/haskell/cabal/pull/8728) - Add support for a number of architectures: @@ -190,7 +196,7 @@ Cabal and Cabal-syntax 3.12.0.0 changelog and release notes - Don't report `index.html` file as created, if not created by Haddock [#5120](https://github.com/haskell/cabal/issues/5120) [#9332](https://github.com/haskell/cabal/pull/9332) -- Enable using $ORIGIN in RPATH on GNU/Hurd [#9441](https://github.com/haskell/cabal/pull/9441) +- Enable using `$ORIGIN` in `RPATH` on GNU/Hurd [#9441](https://github.com/haskell/cabal/pull/9441) - Make check comply with Hackage requirements [#8897](https://github.com/haskell/cabal/pull/8897) @@ -198,13 +204,11 @@ Cabal and Cabal-syntax 3.12.0.0 changelog and release notes - `cabal check` will only return exitcode 1 when the package is not fit for Hackage. E.g. it will not error anymore when your `synopsis:` is larger than `description:`, just emit a warning. - - Cabal: Distribution.Client.Check now exports `isHackageDistError`, for + - Cabal: `Distribution.Client.Check` now exports `isHackageDistError`, for third-party tools to know if a specific error will preclude a package from being uploaded to Hacakge. -- Add language extension `ExtendedLiterals` [#8992](https://github.com/haskell/cabal/pull/8992) - - Adds support for the `ExtendedLiterals` language extension (GHC proposal #451) +- Add language extension `ExtendedLiterals` (GHC proposal #451) [#8992](https://github.com/haskell/cabal/pull/8992) - Warn about inconsistent indentation [#8975](https://github.com/haskell/cabal/pull/8975) @@ -253,9 +257,7 @@ Cabal and Cabal-syntax 3.12.0.0 changelog and release notes `cabal` invokes `pkg-config` individually for each lib if querying for all doesn't return the expected result -- Add language extension `ListTuplePuns` [#8854](https://github.com/haskell/cabal/pull/8854) - - Adds support for the `ListTuplePuns` language extension (GHC proposal #475) +- Add language extension `ListTuplePuns` (GHC proposal #475) [#8854](https://github.com/haskell/cabal/pull/8854) - Add `mkVersionIntervals` for creating a `VersionIntervals` from a list [#9034](https://github.com/haskell/cabal/pull/9034) diff --git a/release-notes/Cabal-3.12.1.0.md b/release-notes/Cabal-3.12.1.0.md new file mode 100644 index 00000000000..8f37e2c0454 --- /dev/null +++ b/release-notes/Cabal-3.12.1.0.md @@ -0,0 +1,54 @@ +Cabal and Cabal-syntax 3.12.1.0 changelog and release notes +--- + + +### Significant changes + +- Update GHC arguments normalization and GHC options rendering [#9729](https://github.com/haskell/cabal/issues/9729) [#10014](https://github.com/haskell/cabal/pull/10014) + + The flags `-fdiagnostics-as-json`, `-fprint-error-index-lists`, `-fbreak-points`, `-dipe-stats`, `-ffamily-application-cache`, `-fprint-redundant-promotion-ticks`, `-fshow-error-context` and `-funoptimized-core-for-interpreter` have been added to the flags that do not cause recompilation. + +- Warn on missing `default-language` [#9620](https://github.com/haskell/cabal/issues/9620) [#9766](https://github.com/haskell/cabal/pull/9766) + + - To help the adoption of GHC language editions, `cabal check` will now + warn about missing `default-language`. + +- Add MHS ([MicroHS](https://github.com/augustss/MicroHs)) as a known Haskell compiler [#9878](https://github.com/haskell/cabal/pull/9878) + +- Re-instate `initialBuildSteps` [#9856](https://github.com/haskell/cabal/issues/9856) [#9950](https://github.com/haskell/cabal/pull/9950) + + The `initialBuildSteps` function from `Distribution.Simple.Build`, which had + been hastily removed, has been reinstated. + + It now comes with a deprecation warning: calling that function does not suffice + to prepare the sources for a package, as there are other steps that one might + also need to perform: + + - running pre-processors (such as alex/happy); + - running pre-build hooks or custom logic + (in build-type: Hooks or build-type: Custom or Configure). + + Consumers wanting to prepare the sources of a package, e.g. in order to launch a + REPL session, are advised to run `setup repl --repl-multi-file=` instead. + +- Label error messages with codes (following GHC, Stack) + + As with GHC and Stack, Cabal and cabal-install now generate warnings and errors prefixed with error codes of the form `[Cabal-xxxxx]`. These will be documented on https://errors.haskell.org, although very few are as yet. + + This change was actually present in Cabal-3.12.0.0, but was inadvertently omitted from the changelog. + +### Other changes + +- Don't recommend deprecated/removed `extensions` field [#10042](https://github.com/haskell/cabal/issues/10042) [#10044](https://github.com/haskell/cabal/pull/10044) + + When applicable, field `default-extensions` is recommended (rather than + deprecated/removed `extensions:`). + +- Make `Setup copy` and `Setup install` succeed when there's no executable or library [#6750](https://github.com/haskell/cabal/issues/6750) [#9926](https://github.com/haskell/cabal/pull/9926) + + Historically the Setup copy and install steps would fail if the package didn't + contain an executable or library component. In this case there's nothing to do. + + This required workarounds for downstream users of Cabal to handle this edge case. + Now that this error has been downgraded to a warning, Cabal will succeed if + there's nothing to do. diff --git a/release-notes/WIP-cabal-install-3.12.x.0.md b/release-notes/cabal-install-3.12.1.0.md similarity index 83% rename from release-notes/WIP-cabal-install-3.12.x.0.md rename to release-notes/cabal-install-3.12.1.0.md index 34d84982806..8d7055eb95b 100644 --- a/release-notes/WIP-cabal-install-3.12.x.0.md +++ b/release-notes/cabal-install-3.12.1.0.md @@ -1,12 +1,18 @@ -Pre-release cabal-install 3.12.0.0/3.11.0.0 changelog and release notes. - -This file will be edited and the changes incorprated into the official -3.12.1.0 cabal-install and cabal-install-solver release notes. - +cabal-install 3.12.1.0 changelog and release notes. --- ### Significant changes +- Cabal 3.12 support [#9917](https://github.com/haskell/cabal/issues/9917) + + This is the first release of `cabal-install` that is fully compatible with `Cabal` 3.12.0.0 as released with GHC 9.10.1. In particular, it means custom setup builds will work with GHC 9.10. + +- `cabal-install` has been built against `tar` 0.6.3.0 [#10123](https://github.com/haskell/cabal/pull/10123) + + The new release of `tar` has significant performance improvements, making `cabal update` in particular much faster. + + For anyone building from the source, we suggest making sure that the version of `tar` in your plan is at least 0.6.3.0. (For example, we bumped the `index-state` in our `cabal.project.release` in the `Cabal` repository.) + - Add support for asm, cmm, and js sources in executable components [#8639](https://github.com/haskell/cabal/issues/8639) [#9061](https://github.com/haskell/cabal/pull/9061) Executable components now support the inclusion of asm, cmm, and js source @@ -36,17 +42,14 @@ This file will be edited and the changes incorprated into the official a flag which specifies which libraries should be included in the coverage report for some testsuite. -- Add `cabal path` command [#8879](https://github.com/haskell/cabal/pull/8879) +- Add `cabal path` command [#8879](https://github.com/haskell/cabal/pull/8879) [#9673](https://github.com/haskell/cabal/pull/9673) 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. -- Redesign `cabal path` command to account for projects [#9673](https://github.com/haskell/cabal/pull/9673) - - Previously, `cabal path` was only able to query from the global configuration file, e.g., `~/.cabal/config` or the XDG equivalent. - We take the foundations and enhance `cabal path` to take project configuration, such as `cabal.project`, into account. + It will obey a `cabal.project` if present. Additionally, we add support for multiple output formats, such as key-value pairs and json. @@ -62,7 +65,7 @@ This file will be edited and the changes incorprated into the official The json output format is versioned by the cabal-install version, which is part of the json object. Thus, all result objects contain at least the key "cabal-install-version". - We expand the `cabal path` to also produce information of the compiler that is going to be used in a `cabal build` or `cabal repl` invocation. + It also produces information of the compiler that is going to be used in a `cabal build` or `cabal repl` invocation. To do that, we re-configure the compiler program, and outputs the location, version and compiler flavour. This is helpful for downstream tools, such as HLS, to figure out the GHC version required to compile a project with, without dependency solving. @@ -121,7 +124,7 @@ This file will be edited and the changes incorprated into the official 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) +- Clarify the semantics of the `--package-db` flag [#9678](https://github.com/haskell/cabal/issues/9678) [#9683](https://github.com/haskell/cabal/pull/9683) The `--package-db` flag now only applies to the default immutable initial package stack rather than also applying to the store @@ -257,7 +260,7 @@ This file will be edited and the changes incorprated into the official This relies on the "Project Unit Id" which is available since GHC 9.8.1, older versions of GHC do not benefit from this change. -- Add support for `GHC2024` [#9736](https://github.com/haskell/cabal/issues/9736) +- Add support for `GHC2024` [#9736](https://github.com/haskell/cabal/issues/9736) [#9791](https://github.com/haskell/cabal/pull/9791) Support for the `GHC2024` language edition, introduced by GHC 9.10, has been added. It can now be used in the `default-language` and `other-languages` @@ -273,6 +276,23 @@ This file will be edited and the changes incorprated into the official - Add language extension `TypeAbstractions` [#9496](https://github.com/haskell/cabal/issues/9496) [#9502](https://github.com/haskell/cabal/pull/9502) +- Label error messages with codes (following GHC, Stack) + + As with GHC and Stack, Cabal and cabal-install now generate warnings and errors prefixed with error codes of the form `[Cabal-xxxxx]`. These will be documented on https://errors.haskell.org, although very few are as yet. + +- The `--offline` flag applied to `source-repository-package`s [#9641](https://github.com/haskell/cabal/issues/9641) [#9771](https://github.com/haskell/cabal/pull/9771) + + The `--offline` flag is already used to block access to Hackage. Now with this PR, this also applies to remote dependency `source-repository-package` in `cabal.project`. + +- Fix `--program-suffix` resulting in invalid installation [#8823](https://github.com/haskell/cabal/issues/8823) [#9919](https://github.com/haskell/cabal/issues/9919) [#10056](https://github.com/haskell/cabal/pull/10056) + + Formerly, using `--program-suffix` resulted in bad symlinks into the store. This has been corrected. + +- Warn on missing `default-language` [#9620](https://github.com/haskell/cabal/issues/9620) [#9766](https://github.com/haskell/cabal/pull/9766) + + - To help the adoption of GHC language editions, `cabal check` will now + warn about missing `default-language`. + ### Other changes - Script cache dir is the base16 hash of the canonical path of the script. [#9459](https://github.com/haskell/cabal/pull/9459) @@ -341,3 +361,19 @@ This file will be edited and the changes incorprated into the official The "Executing·install·plan··serially" and other similar "Executing install plan··..." outputs no longer contain double spaces. + +- Allow whitespace in targets [#8875](https://github.com/haskell/cabal/issues/8875) [#10032](https://github.com/haskell/cabal/pull/10032) + + Allow spaces in the final component of target selectors. This resolves an issue + where using absolute paths in selectors can fail if there is whitespace in the + parent directories of the project. + +- Renders project configuration provenance as a list of canonical paths [#9971](https://github.com/haskell/cabal/issues/9971) [#9985](https://github.com/haskell/cabal/pull/9985) + + Removes interleaved rendering of project imports. + +- Abbreviate solver rejection messages with installed versions [#9823](https://github.com/haskell/cabal/issues/9823) [#9824](https://github.com/haskell/cabal/pull/9824) + +- solver: Prevent `ghc-internal` from being reinstalled [#10108](https://github.com/haskell/cabal/pull/10108) + + GHC 9.10 ships with a new wired-in package, `ghc-internal`, which cannot be reinstalled. This commit prevents cabal-install from attempting it.