diff --git a/Cabal/ChangeLog.md b/Cabal/ChangeLog.md index 08d6aa838dc10866935c9e2374e89e6130a678b5..5eaee95c6507aab35304e3b77e5b2712121a955e 100644 --- a/Cabal/ChangeLog.md +++ b/Cabal/ChangeLog.md @@ -1,3 +1,6 @@ +# 3.12.0.0 [Francesco Ariis](mailto:fa-ml@ariis.it) March 2024 +* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.12.0.0.md + # 3.10.3.0 [Hécate](mailto:hecate+github@glitchbra.in) January 2024 * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.10.3.0.md diff --git a/changelog.d/base16-script-cache b/changelog.d/base16-script-cache deleted file mode 100644 index a2473271635002a9b69d9f33a1025f62fb5ad14a..0000000000000000000000000000000000000000 --- a/changelog.d/base16-script-cache +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Script cache dir is the base16 hash of the canonical path of the script. -prs: #9459 -packages: cabal-install - -description: { - -Script cache dir is the base16 hash of the canonical path of the script. - -} diff --git a/changelog.d/die-on-missing-pkg-list b/changelog.d/die-on-missing-pkg-list deleted file mode 100644 index 78e2584319721b9fee8c855b7eab997eb834bc70..0000000000000000000000000000000000000000 --- a/changelog.d/die-on-missing-pkg-list +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Die if package list is missing -packages: cabal-install -prs: #8944 - -description: { - -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. - -} diff --git a/changelog.d/inconsistent-indentation b/changelog.d/inconsistent-indentation deleted file mode 100644 index 0cceee639a1070e9f1a808dbf84716636fe06098..0000000000000000000000000000000000000000 --- a/changelog.d/inconsistent-indentation +++ /dev/null @@ -1,23 +0,0 @@ -synopsis: Warn about inconsistent indentation -packages: Cabal-syntax -prs: #8975 - -description: - Make Cabal warn about inconsistent indentation in .cabal files. - - For example warn about somewhat common decreasing indentation like in - - ```cabal - library - default-language: Haskell2010 - build-depends: base - ghc-options: -Wall - ``` - - The change is `readFields` function. - - This is an effect of using `indentOfAtLeast` method/approach: any indentation greater than current offset is accepted. - - That behavior is desirable to parsing multiline field contents, but it is a bit surprising for fields in sections, which we expect to be aligned. - - Such insonsistency seems to be always a mistake, and it's easy to fix once a machine points it out. diff --git a/changelog.d/index-state-cabal-update b/changelog.d/index-state-cabal-update deleted file mode 100644 index f40ae672709ff276758013db23ff5bbe27e07654..0000000000000000000000000000000000000000 --- a/changelog.d/index-state-cabal-update +++ /dev/null @@ -1,14 +0,0 @@ -synopsis: Reject index-state younger than cached index file -packages: cabal-install -prs: #8944 - -description: { - -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. - -} diff --git a/changelog.d/issue-5993 b/changelog.d/issue-5993 deleted file mode 100644 index 47580dd57cb09a8c0a6e5306d4e80a7ea8cb0375..0000000000000000000000000000000000000000 --- a/changelog.d/issue-5993 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Warn early that overwrite policy is needed -description: - 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. -packages: cabal-install -prs: #9268 -issues: #5993 diff --git a/changelog.d/issue-6738 b/changelog.d/issue-6738 deleted file mode 100644 index d2bf405375611e8e524e14416979ca6df2f0539d..0000000000000000000000000000000000000000 --- a/changelog.d/issue-6738 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Add support for authentication tokens for uploading to Hackage -packages: cabal-install -prs: #9058 -issues: #6738 - -description: { - -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. - -} \ No newline at end of file diff --git a/changelog.d/issue-7817 b/changelog.d/issue-7817 deleted file mode 100644 index 78d18e8d31a65148cb47b902b31f4ca9f91370f0..0000000000000000000000000000000000000000 --- a/changelog.d/issue-7817 +++ /dev/null @@ -1,15 +0,0 @@ -synopsis: Make --(test-)show-details=direct the default -packages: Cabal cabal-install -prs: #8942 - -description: { - -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. - -} diff --git a/changelog.d/issue-8206 b/changelog.d/issue-8206 deleted file mode 100644 index 09292fd949bc5b824abd11a4a12f575bc3086c46..0000000000000000000000000000000000000000 --- a/changelog.d/issue-8206 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: cabal init now generates cabal versions older than 1.12 with the correct >= syntax -packages: cabal-install -prs: #8860 -issues: #8206 diff --git a/changelog.d/issue-8270 b/changelog.d/issue-8270 deleted file mode 100644 index b26eec51d18af3ae83d75f00b7082234565cf2ee..0000000000000000000000000000000000000000 --- a/changelog.d/issue-8270 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Add `--haddock-output-dir` flag to `cabal haddock`. -packages: Cabal cabal-install -prs: #8788 -issues: #8720 -significance: significant - -description: { - -- Added `--haddock-output-dir` flag to `cabal haddock`. This flag gives the user full control over the directory where the documentation is placed. It allows both relative and absolute paths. - -} diff --git a/changelog.d/issue-8639 b/changelog.d/issue-8639 deleted file mode 100644 index 18d8606c690b619dfe9564ed7bbf4cca8c758e37..0000000000000000000000000000000000000000 --- a/changelog.d/issue-8639 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Add support for asm, cmm, and js sources in executable components -packages: Cabal -prs: #9061 -issues: #8639 -significance: significant - -description: { - -Executable components now support the inclusion of asm, cmm, and js source files in a cabal file using the same syntax as is used for these sources in library components, similar to how c and c++ sources are supported in both types of components. This syntax was already parsed in cabal files, but was silently ignored in the build step, so no changes to syntax are made. - -} - diff --git a/changelog.d/issue-8680 b/changelog.d/issue-8680 deleted file mode 100644 index 3c3604b2ca2a1684184058145abe70e7948456ca..0000000000000000000000000000000000000000 --- a/changelog.d/issue-8680 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: `cabal init` should not suggest Cabal < 2.0 -packages: Cabal -issues: #8680 - -description: { - -'cabal init' no longer suggests users to set cabal-version to less than 2.0 - -} diff --git a/changelog.d/issue-8689 b/changelog.d/issue-8689 deleted file mode 100644 index c157bb9eca5517313c150ce96d849c5a930d0bc1..0000000000000000000000000000000000000000 --- a/changelog.d/issue-8689 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Make sure Haskell files in explicit source directories take precedence over autogenerated Haskell files -packages: cabal-install -prs: #8690 -issues: #8689 - -description: { - -- 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. - -} diff --git a/changelog.d/issue-8737 b/changelog.d/issue-8737 deleted file mode 100644 index 3bdabc28e7a5b0f0db97e0a03389b1e8f0b92802..0000000000000000000000000000000000000000 --- a/changelog.d/issue-8737 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Document `remote-repo-cache` as implemented. -packages: Cabal -issues: #8737 -prs: #8738 diff --git a/changelog.d/issue-8757 b/changelog.d/issue-8757 deleted file mode 100644 index 82a71c0f9354f6176bb74b8e0365f1038438dc88..0000000000000000000000000000000000000000 --- a/changelog.d/issue-8757 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: `cabal init`: suggest BSD-3 as default license -packages: cabal-install -prs: #8764 -issues: #8757 diff --git a/changelog.d/issue-8785 b/changelog.d/issue-8785 deleted file mode 100644 index 47238ed20b67c80daf1595765b9fdeace5af09ba..0000000000000000000000000000000000000000 --- a/changelog.d/issue-8785 +++ /dev/null @@ -1,17 +0,0 @@ -synopsis: Also render short options with arguments -packages: cabal-install -prs: #9043 -issues: #8785 - -description: { - -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 --git a/changelog.d/issue-8835 b/changelog.d/issue-8835 deleted file mode 100644 index 587d4e34984b1ba391bd84cb2b7d95aed55dd2af..0000000000000000000000000000000000000000 --- a/changelog.d/issue-8835 +++ /dev/null @@ -1,6 +0,0 @@ -synopsis: config file: allow more flags in the init section -packages: cabal-install -prs: #8839 -issues: #8835 -description: The init section of config file now allows the following fields: -`no-comments`, `quiet`, `simple` and `minimal` diff --git a/changelog.d/issue-9098-lexbraces b/changelog.d/issue-9098-lexbraces deleted file mode 100644 index 19bb0bbee356644bfdc67557c9287d3bd6783921..0000000000000000000000000000000000000000 --- a/changelog.d/issue-9098-lexbraces +++ /dev/null @@ -1,18 +0,0 @@ -synopsis: Add LexBraces lexer warning -packages: Cabal-syntax -issues: #8577 - -description: { - -LexBraces warning is issued when brace delimiting syntax is used. -This way, using `readFields'`, a low-lever consumer may decide -whether braces were used. - -(Looking for a brace character in the input is imprecise, as braces can occur inside field content). - -This warning is not propagated to parser warnings, -so e.g. readGenericPackageDescription doesn't warn about it. -This is because all parser warnings prevent uploads to Hackage, -and using braces (or not) is opinionated choice. - -} diff --git a/changelog.d/issue-9113 b/changelog.d/issue-9113 deleted file mode 100644 index 8d108c1fba1ea69304191803a6ff32848b1c5752..0000000000000000000000000000000000000000 --- a/changelog.d/issue-9113 +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: Fix handling of ETag header for remote packages -packages: cabal-install -prs: #9116 -issues: #9113 - -description: { - -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. - -} diff --git a/changelog.d/issue-9453 b/changelog.d/issue-9453 deleted file mode 100644 index 16e7a48fa860e1cb509ce2b0c2f46ef7fca5cf3f..0000000000000000000000000000000000000000 --- a/changelog.d/issue-9453 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Remove Distribution.Utils.TempTestDir module from Cabal library -packages: Cabal -prs: #9454 -issues: #9453 - -description: { - -This library was only used by internal tests, and now lives in the `Cabal-tests` library -which is shared across test components. - -} - diff --git a/changelog.d/issue-9534 b/changelog.d/issue-9534 deleted file mode 100644 index 3e7a887af716db991bd6599bf4cb18fc5b3a2cb6..0000000000000000000000000000000000000000 --- a/changelog.d/issue-9534 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Distinguish `powerpc64le`, by adding `PPC64LE` constructor to type `Arch` -packages: Cabal Cabal-syntax -prs: #9535 -issues: #9534 - -description: { - -Adds constructor `PPC64LE` to type `Arch` to distinguish architecture -powerpc64le from powerpc64. Existing constructor `PPC64` now exclusively -represents powerpc64. - -} diff --git a/changelog.d/issue-9678 b/changelog.d/issue-9678 deleted file mode 100644 index e1eda2b46e912c8f540f49c8ef73591ee0f5131f..0000000000000000000000000000000000000000 --- a/changelog.d/issue-9678 +++ /dev/null @@ -1,16 +0,0 @@ -synopsis: Clarify the semantics of the -package-db flag -packages: cabal-install -prs: -issues: #9678 - -description: { - -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. - -} - diff --git a/changelog.d/pkgconfig-once b/changelog.d/pkgconfig-once deleted file mode 100644 index c3ac3ac47e0faaebcb5f451ea8e25ebb3b6c9b43..0000000000000000000000000000000000000000 --- a/changelog.d/pkgconfig-once +++ /dev/null @@ -1,8 +0,0 @@ -synopsis: PkgConfig individual calls -prs: #9134 - -description: { - -- `cabal` invokes `pkg-config` individually for each lib if querying for all doesn't return the expected result - -} diff --git a/changelog.d/pr-8130 b/changelog.d/pr-8130 deleted file mode 100644 index 70acb4eb52bdd33b5f26b5358c1e8a0462886488..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8130 +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: Split up `Distribution.Simple.Setup` -packages: Cabal -prs: #8130 - -description: { - -The external interface of 'Distribution.Simple.Setup' has been kept the same, but internally it has been broken up into smaller modules. -This improves build times in two ways: -1. GHC is superlinear in the size of files, meaning that splitting up a large file can reduce overall compile times. -2. Breaking up the module allows dependent modules to refine their imports to just the parts they require, allowing them to start buildling quicker -when GHC is run in parrallel make mode ('--ghc-options -j'). - -} diff --git a/changelog.d/pr-8427 b/changelog.d/pr-8427 deleted file mode 100644 index 402765942d6a6a37f86eb05e4e473f8d176e7ee9..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8427 +++ /dev/null @@ -1,19 +0,0 @@ -synopsis: Reimplementing `cabal check` -packages: Cabal -prs: #8427 -issues: #7423 - -description: { - -- For `cabal-install` users: `cabal check` do not warn on -O2 or similar - options if under an off-by-default cabal flag. -- For `Cabal` the library users: `checkPackage` signature has been simplified, - you do not need to pass a specific configuration of the package, since - we do not flatten GenericPackageDescription no more. -- For `Cabal` the library users: `checkPackageFileNames` has been removed, - use `checkPackageFiles` instead. -- For `Cabal` the library users: `checkPackageFilesGPD` has been introduced, - a function similar to `checkPackageFiles` that works on - `GenericPackageDescription`. You do not need to use - `flattenPackageDescription` anymore. -} diff --git a/changelog.d/pr-8454 b/changelog.d/pr-8454 deleted file mode 100644 index 915caf61cc98266adf701b7b79e1d166b3e648d4..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8454 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Add --project-dir flag -packages: cabal-install -prs: #8454 -issues: #7695 #7940 -significance: significant - -description: { - -- Added --project-dir flag for specifying the project's root directory -- Deprecated using --project-file with an absolute filepath without also using --project-dir - -} diff --git a/changelog.d/pr-8557 b/changelog.d/pr-8557 deleted file mode 100644 index f2f11d2eeac19934e0744e768fc6ea19ae7aa23c..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8557 +++ /dev/null @@ -1,20 +0,0 @@ -synopsis: Add `--semaphore` flag to enable interaction with GHC Job Server protocol -packages: cabal-install -prs: #8557 - -description: { - -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. - -This feature requires ghc-9.8 in order to use, as this is the first version of GHC -which implements the protocol. - -The protocol is specified by [GHC Proposal #540](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0540-jsem.rst). - -} diff --git a/changelog.d/pr-8557-2 b/changelog.d/pr-8557-2 deleted file mode 100644 index c472f992c3149be5a14aee1392ef0052ff0c2903..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8557-2 +++ /dev/null @@ -1,16 +0,0 @@ -synopsis: Add --semaphore option to ./Setup build interface -packages: Cabal -prs: #8557 - -description: { - -When `./Setup build --semaphore <SEM>` is called, `ghc` will be called with the -`-jsem` option. It is the responsibility of the caller of `./Setup build` to -manage the semaphore according to the GHC Jobserver Protocol. - -This low level interface is intended to be called by a high-level tool such as -`cabal-install` which can create and manage the semaphore appropriately. - -The protocol is specified by [GHC Proposal #540](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0540-jsem.rst). - -} diff --git a/changelog.d/pr-8662 b/changelog.d/pr-8662 deleted file mode 100644 index bfe0512c6f4983569a9fdbc4914eaaf8efb83000..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8662 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Installation of extra-compilation-artifacts directory -packages: Cabal -prs: #8662 -issues: -description: { - -- GHC plugins now can store custom data in the 'extra-compilation-artifacts' directory which gets installed with the package. - -} diff --git a/changelog.d/pr-8676 b/changelog.d/pr-8676 deleted file mode 100644 index 511a04569e60678b2054b1f71378b31d1d9d18ca..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8676 +++ /dev/null @@ -1,8 +0,0 @@ -synopsis: Adds functionality for the --offline flag with the "build" command. -packages: cabal-install -prs: #8676 - -description: { - 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. -} diff --git a/changelog.d/pr-8709 b/changelog.d/pr-8709 deleted file mode 100644 index f8f31edc26936ad33f7fe3b10cefe8f7909346ee..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8709 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Add warning for running cabal run, cabal test and cabal bench with +RTS flag -packages: cabal-install -prs: #8709 - -description: { - -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. - -} diff --git a/changelog.d/pr-8726 b/changelog.d/pr-8726 deleted file mode 100644 index fa9975a33bb02058d2ffd045caa9a92a36157a74..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8726 +++ /dev/null @@ -1,18 +0,0 @@ -synopsis: Add support for loading multiple components into one repl session -packages: cabal-install -prs: #8726 #8238 #8491 - -description: { - -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 feature is fully explained in [this blog post](https://well-typed.com/blog/2023/03/cabal-multi-unit/). - - -} diff --git a/changelog.d/pr-8726-2 b/changelog.d/pr-8726-2 deleted file mode 100644 index d59a8ac4dc25c9f058cbf8d6280cb4bd2cbcdbfd..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8726-2 +++ /dev/null @@ -1,24 +0,0 @@ -synopsis: Add --promised-dependency flag to ./Setup configure interface -packages: Cabal -prs: #8726 - -description: { - -There is a new flag `--promised-dependency` to allow users to -configure a package *without* having previously built the dependency. -Instead, we promise to the configure phase that we will have built it -by the time we build the package. This allows us to configure all the -packages we intend to load into the repl without building any -dependenices which we will load in the same session, because the -promise is satisifed due to loading the package and it's dependency -into one multi-session which ensures the dependency is built before -it is needed. - -A user of ./Setup configure specifies a promised dependency by -using the "--promised-dependency" flag with a normal dependency specification. For example: - -``` - '--promised-dependency=cabal-install-solver=cabal-install-solver-3.9.0.0-inplace' -``` - -} diff --git a/changelog.d/pr-8726-3 b/changelog.d/pr-8726-3 deleted file mode 100644 index 337ad29909e5751555fb4920962c3d4d863c9fca..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8726-3 +++ /dev/null @@ -1,16 +0,0 @@ -synopsis: Add option to ./Setup repl to write repl arguments to file -packages: Cabal -prs: #8726 - -description: { - -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 flags to a directiory. The option is called -`--repl-multi-file <DIR>`. - -This is useful when starting multi-component sessions as we want to query Setup.hs -for the arguments which are needed to build each component but not for ./Setup to -start the repl itself. - -} diff --git a/changelog.d/pr-8728 b/changelog.d/pr-8728 deleted file mode 100644 index 8d9b9d140479e7767343b9cc2069e569691c2531..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8728 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Deduplicate LD_LIBRARY_PATH when running tests -packages: Cabal -prs: #8728 diff --git a/changelog.d/pr-8854 b/changelog.d/pr-8854 deleted file mode 100644 index 8b77d09d3ed2bf42b88260ea1510e35a04ff0d35..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8854 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Add language extension ListTuplePuns -packages: Cabal-syntax -prs: #8854 - -description: { - -- adds support for the `ListTuplePuns` language extension (GHC proposal #475) - -} diff --git a/changelog.d/pr-8879 b/changelog.d/pr-8879 deleted file mode 100644 index 079d642289bbcc44dcd7f922ad52d8c4df7c3332..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8879 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Add `cabal path` command -packages: cabal-install -prs: #8879 - -description: { - -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. - -} diff --git a/changelog.d/pr-8897 b/changelog.d/pr-8897 deleted file mode 100644 index a89023dc4169e65a9f47ac72c8016c01d23d5af1..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8897 +++ /dev/null @@ -1,14 +0,0 @@ -synopsis: Make check comply with Hackage requirements -packages: Cabal cabal-install -prs: #8897 - -description: { - -- `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 - third-party tools to know if a specific error will preclude a package - from being uploaded to Hacakge. - -} diff --git a/changelog.d/pr-8908 b/changelog.d/pr-8908 deleted file mode 100644 index 420248944a4fc720cf4ecd598bae56b247af0e94..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8908 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: `cabal check`: clearly mark Errors -packages: cabal-install -prs: #8908 - -description: { - -- `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. - -} diff --git a/changelog.d/pr-8949 b/changelog.d/pr-8949 deleted file mode 100644 index cbd0859a6eb5fffeaa7c31ea8c2824ec9da0cbcd..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8949 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Warn when project configuration options are going to be ignored. -packages: cabal-install -prs: #8949 - -description: { - -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. - -} diff --git a/changelog.d/pr-8972 b/changelog.d/pr-8972 deleted file mode 100644 index 04e300ea12e9ecb7f160d2635ccb41479e71b6d4..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8972 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Fix precedence for PATH for build-tools-depends -packages: Cabal cabal-install -prs: #8972 - -description: { - -- fixes a bug introduced in #8506 that caused executables in the path to take precedence over those specified in build-tools-depends. - -} diff --git a/changelog.d/pr-8992 b/changelog.d/pr-8992 deleted file mode 100644 index ef74800c43006e42e067ced7e44934869a433250..0000000000000000000000000000000000000000 --- a/changelog.d/pr-8992 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Add language extension ExtendedLiterals -packages: Cabal-syntax -prs: #8992 -significance: significant - -description: { - -- adds support for the ExtendedLiterals language extension (GHC proposal #451) - -} diff --git a/changelog.d/pr-9006 b/changelog.d/pr-9006 deleted file mode 100644 index 905a962e646b9b06363a9418c3b9fc33f164363e..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9006 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Add Haiku as a known platform -packages: Cabal -prs: #9006 - -description: { - -- Cabal: Distribution now recognises Haiku as a valid platform, - and also implements Haiku's unique directory layout. - -} diff --git a/changelog.d/pr-9007 b/changelog.d/pr-9007 deleted file mode 100644 index 0fa699b83440589c472bab3be2b24eef49c1dc01..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9007 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Generate cabal-testsuite modules at configure time -packages: cabal-testsuite -prs: #9007 - -description: { - -Generate modules required by cabal-testsuite at configure time rather than build time. -This allows to run `cabal repl cabal-testsuite` out of the box. -In addition, enables HLS support for `cabal-testsuite`. - -} diff --git a/changelog.d/pr-9018 b/changelog.d/pr-9018 deleted file mode 100644 index b823fc4c33af9db81d3d9ac34807ef9a429ca2f4..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9018 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Structured Errors and Error Codes for Cabal -packages: cabal -prs: #9018 -issues: #8618 #8543 - - -description: { - -This will replace the `die'` function with `dieWithException` function which will throw structured errors rather than mere strings and also assign codes to corresponding errors that can be added to the error index. - -} diff --git a/changelog.d/pr-9019 b/changelog.d/pr-9019 deleted file mode 100644 index 22dc3723671878d118bf1c609250a646ba88cf93..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9019 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Installation of .hie files -packages: Cabal -prs: #9019 -issues: #8685 -description: { - -- Hie files generated by GHC are now stored in the `extra-compilation-artifacts` directory which gets installed with the package. - -} diff --git a/changelog.d/pr-9034 b/changelog.d/pr-9034 deleted file mode 100644 index 1aae63bb2ab3e84e61275b859b3c3062f8cb6a9d..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9034 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Add `mkVersionIntervals` for creating a `VersionIntervals` from a list -packages: Cabal-syntax -prs: #9034 - -description: { - -If external tools want to change the version intervals of dependencies, they -need to be able to create a `VersionRange` from a `[VersionInterval]` list. Adding -the function `mkVersionIntervals` makes this possible again. - -} diff --git a/changelog.d/pr-9062 b/changelog.d/pr-9062 deleted file mode 100644 index 1cd4ad3e6e48e93b399c27e1d22fa17aa27861a0..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9062 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Add support for the 64-bit RISC-V architecture -prs: #9062 -packages: Cabal Cabal-syntax diff --git a/changelog.d/pr-9123 b/changelog.d/pr-9123 deleted file mode 100644 index 17b3b2031c69fb261595a34e8c4e564f274ad1ad..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9123 +++ /dev/null @@ -1,8 +0,0 @@ -synopsis: Remove --cabal-file flags from v2 commands -packages: cabal-install -prs: #9123 -issues: #8395 #7225 #6880 -description: { - 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. -} diff --git a/changelog.d/pr-9155 b/changelog.d/pr-9155 deleted file mode 100644 index db9557feca878909e877e6a7160ea4b5a2315680..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9155 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Do not ask overwrite permissions on blank project -packages: cabal-install -prs: #9155 -issues: #9150 diff --git a/changelog.d/pr-9215 b/changelog.d/pr-9215 deleted file mode 100644 index 3e8b1159f25cf9d8082b877333f7655f6f0c46fc..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9215 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Add support for 64-bit LoongArch architecture -prs: #9215 -packages: Cabal Cabal-syntax diff --git a/changelog.d/pr-9326 b/changelog.d/pr-9326 deleted file mode 100644 index 33350cd86f02776b209c7d25ad07a5b6154a7009..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9326 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Include the GHC "Project Unit Id" in the cabal store path -packages: Cabal cabal-install -prs: #9326 -issues: #8114 -description: { -- This allows the use of several **API incompatible builds of the same version - of GHC** without corrupting the cabal store. -- 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. -} diff --git a/changelog.d/pr-9332 b/changelog.d/pr-9332 deleted file mode 100644 index c2851a647d4e8837263acf5a6c1d2890d67b68a5..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9332 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Don't report `index.html` file as created, if not created by Haddock -packages: Cabal cabal-install -prs: #9332 -issues: #5120 diff --git a/changelog.d/pr-9346 b/changelog.d/pr-9346 deleted file mode 100644 index 3f31da4383754705817c559c1b9eeaf9ca0a1042..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9346 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: remove -packages: cabal-install -prs: #9346 -issues: #9151 -significance: significant - -description: { - -- Remove "Log" as a log level in favour of "Info". -- Remove "Show" in Severity and replace by "displaySeverity" function - -} diff --git a/changelog.d/pr-9376 b/changelog.d/pr-9376 deleted file mode 100644 index d85dc9bf49a660a50d3fc9d6e1a3d3b1806caccf..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9376 +++ /dev/null @@ -1,6 +0,0 @@ -synopsis: Avoid a double space in "Executing install plan ..." -description: - The "Executing·install·plan··serially" and other similar "Executing install - plan··..." outputs no longer contain double spaces. -packages: cabal-install -prs: #9376 \ No newline at end of file diff --git a/changelog.d/pr-9434 b/changelog.d/pr-9434 deleted file mode 100644 index a7872ea3fb37cdcd27e5b6e92a0dbb806756b4e8..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9434 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Fix the platform string for GNU/Hurd -packages: Cabal -prs: #9434 - -description: { - -Depending who you ask, GNU/Hurd will be labelled "gnu" or "hurd". The autotools -use "gnu", so ghc follows this for installed files, even if the ghc source code -uses OSHurd. We thus need to add the translation between the two. - -} diff --git a/changelog.d/pr-9441 b/changelog.d/pr-9441 deleted file mode 100644 index c47ea10da13ff071bfd945e0f6ee59d7725bd2de..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9441 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Enable using $ORIGIN in RPATH on GNU/Hurd -packages: Cabal -prs: #9441 diff --git a/changelog.d/pr-9443 b/changelog.d/pr-9443 deleted file mode 100644 index 353f1fb8cbdb2fea1b2f618ec8c7981eb0cb7095..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9443 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Use linker capability detection to improve linker use -packages: Cabal -prs: #9443 - -description: { - -- Previously the GHC version number and platform were used as a proxy for whether - the linker can generate relocatable objects. -- Now, the ability of the linker to create relocatable objects is detected. - -} diff --git a/changelog.d/pr-9445 b/changelog.d/pr-9445 deleted file mode 100644 index 37f024ea060229a5e6d54c3a9390f9f088c0a731..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9445 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Add support for 64-bit SPARC as a separate architecture -prs: #9445 -packages: Cabal Cabal-syntax diff --git a/changelog.d/pr-9464 b/changelog.d/pr-9464 deleted file mode 100644 index f1fe8b186f8aa2237cc86c4882e31d0fafc09e0f..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9464 +++ /dev/null @@ -1,22 +0,0 @@ -synopsis: Support per-component builds when coverage is enabled -packages: Cabal cabal-install -prs: #9464 -issues: #4798 #5213 #6440 #6397 -significance: significant - -description: { - -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`. - -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. - -} diff --git a/changelog.d/pr-9481 b/changelog.d/pr-9481 deleted file mode 100644 index 5572ad56eab229682ffd8a8bf104a3ca085613ba..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9481 +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: Guard PackageInfo_* modules behind `cabal-version` ≥ 3.12 -packages: Cabal cabal-install -prs: #9481 -issues: #9331 - -description: { - -`cabal check` now warns whenever PackageInfo_* autogen modules are -used with `cabal-version` ≥ 3.12. -Additionally, `cabal configure` will fail if you try to use PackageInfo_* -with `cabal-version` < 3.12. - -} diff --git a/changelog.d/pr-9502 b/changelog.d/pr-9502 deleted file mode 100644 index 12e5cc0e47d91f8d034982ecf0b8a2f108fba547..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9502 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Add language extension `TypeAbstractions` -packages: Cabal-syntax -prs: #9502 -issues: #9496 - -description: { - -- Adds support for the TypeAbstractions language extension. - -} - diff --git a/changelog.d/pr-9560 b/changelog.d/pr-9560 deleted file mode 100644 index 9f6ce9a41336b9b1acca46bb82da250509f0fedc..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9560 +++ /dev/null @@ -1,22 +0,0 @@ -synopsis: Shorten solver rejection messages by removing repetition -packages: cabal-install-solver -prs: #9560 -issues: #9559 #4251 - -description: { - -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. - -```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, -``` - -} \ No newline at end of file diff --git a/changelog.d/pr-9673 b/changelog.d/pr-9673 deleted file mode 100644 index c14776b0db94678f61798d369a04a7292b82f482..0000000000000000000000000000000000000000 --- a/changelog.d/pr-9673 +++ /dev/null @@ -1,19 +0,0 @@ -synopsis: Merge globbing implementations -packages: Cabal cabal-install -prs: #9673 -issues: #5349 - -description: { - -The common aspects of the globbing functionality between `Cabal` and -`cabal-install` have been factored out. The only change in the user-facing API -is that we now record when a glob does not match exactly, but matches a -directory with that same name, with the new constructor `GlobMatchesDirectory` -of `GlobResult`. - -To illustrate, this change means that when `foo/dir` is a directory, the glob -`*/dir/` matches exactly `foo/dir` (as before), but now -`*/dir` produces `GlobMatchesDirectory` instead of failing. -This allows callers to decide whether to allow or discard such inexact matches. - -} diff --git a/changelog.d/pr-check-ignore b/changelog.d/pr-check-ignore deleted file mode 100644 index 240a03f989b0f41a99183dffbaee1824ddbb998e..0000000000000000000000000000000000000000 --- a/changelog.d/pr-check-ignore +++ /dev/null @@ -1,18 +0,0 @@ -synopsis: Add `--ignore` to `cabal check` -packages: Cabal cabal-check -prs: #9442 -issues: #8587 - -description: { - -- `cabal check` now ignores specific warnings with `--ignore`. E.g. - `--ignore=missing-upper-bounds` will not display “Missing upper - bounds†warnings. -- `cabal check` output now prints the warning identifier too - (like `[no-category]`). -- `Distribution.PackageDescription.Check.Warning` now exports - `filterPackageChecksById`, this can be used by third-party - tools to filter warnings. - -} - diff --git a/release-notes/Cabal-3.12.0.0.md b/release-notes/Cabal-3.12.0.0.md new file mode 100644 index 0000000000000000000000000000000000000000..6912d946a765660690003ebbbce621649b52855e --- /dev/null +++ b/release-notes/Cabal-3.12.0.0.md @@ -0,0 +1,248 @@ +Cabal and Cabal-syntax 3.12.0.0 changelog and release notes +--- + + +### Significant changes + +- 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 + files in a cabal file using the same syntax as is used for these sources + in library components, similar to how c and c++ sources are supported in + both types of components. This syntax was already parsed in cabal files, + but was silently ignored in the build step, so no changes to syntax are + made. + +- 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. + +- Add `--semaphore` option to `./Setup build` interface [#8557](https://github.com/haskell/cabal/pull/8557) + + When `./Setup build --semaphore <SEM>` is called, `ghc` will be called + with the `-jsem` option. It is the responsibility of the caller of + `./Setup build` to manage the semaphore according to the GHC Jobserver + Protocol. + + This low level interface is intended to be called by a high-level tool + such as `cabal-install` which can create and manage the semaphore + appropriately. + + The protocol is specified by [GHC Proposal #540](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0540-jsem.rst). + +- Add `--promised-dependency` flag to `./Setup configure` interface [#8726](https://github.com/haskell/cabal/pull/8726) + + There is a new flag `--promised-dependency`to allow users to configure a + package *without* having previously built the dependency. Instead, we + promise to the configure phase that we will have built it by the time we + build the package. This allows us to configure all the packages we intend + to load into the repl without building any dependenices which we will load + in the same session, because the promise is satisifed due to loading the + package and it's dependency into one multi-session which ensures the + dependency is built before it is needed. + + A user of ./Setup configure specifies a promised dependency by using the + "--promised-dependency" flag with a normal dependency specification. For + example: + + ``` + '--promised-dependency=cabal-install-solver=cabal-install-solver-3.9.0.0-inplace' + ``` + +- Add `--ignore` to `cabal check` [#8587](https://github.com/haskell/cabal/issues/8587) [#9442](https://github.com/haskell/cabal/pull/9442) + + - `Distribution.PackageDescription.Check.Warning` now exports + `filterPackageChecksById`, this can be used by third-party + tools to filter warnings. + +### Other changes + +- `cabal init` should not suggest Cabal < 2.0 [#8680](https://github.com/haskell/cabal/issues/8680) + + '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) + + This library was only used by internal tests, and now lives in the + `Cabal-tests` library which is shared across test components. + +- Distinguish `powerpc64le`, by adding `PPC64LE` constructor to type `Arch` [#9534](https://github.com/haskell/cabal/issues/9534) [#9535](https://github.com/haskell/cabal/pull/9535) + + Adds constructor `PPC64LE` to type `Arch` to distinguish architecture + powerpc64le from powerpc64. Existing constructor `PPC64` now exclusively + represents powerpc64. + +- PkgConfig individual calls [#9134](https://github.com/haskell/cabal/pull/9134) + + `cabal` invokes `pkg-config` individually for each lib if querying for all + doesn't return the expected result + +- Split up `Distribution.Simple.Setup` [#8130](https://github.com/haskell/cabal/pull/8130) + + The external interface of 'Distribution.Simple.Setup' has been kept the + same, but internally it has been broken up into smaller modules. This + improves build times in two ways: + + 1. GHC is superlinear in the size of files, meaning that splitting up a + large file can reduce overall compile times. + 2. Breaking up the module allows dependent modules to refine their imports + to just the parts they require, allowing them to start buildling quicker + when GHC is run in parrallel make mode ('--ghc-options -j'). + +- Reimplementing `cabal check` [#7423](https://github.com/haskell/cabal/issues/7423) [#8427](https://github.com/haskell/cabal/pull/8427) + + - `checkPackage` signature has been simplified, + you do not need to pass a specific configuration of the package, since + we do not flatten GenericPackageDescription no more. + - `checkPackageFileNames` has been removed, + use `checkPackageFiles` instead. + - `checkPackageFilesGPD` has been introduced, + a function similar to `checkPackageFiles` that works on + `GenericPackageDescription`. You do not need to use + `flattenPackageDescription` anymore. + +- Installation of extra-compilation-artifacts directory [#8662](https://github.com/haskell/cabal/pull/8662) + + 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) + + 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 + flags to a directiory. The option is called `--repl-multi-file <DIR>`. + + This is useful when starting multi-component sessions as we want to query + Setup.hs for the arguments which are needed to build each component but + not for ./Setup to start the repl itself. + +- Add Haiku as a known platform [#9006](https://github.com/haskell/cabal/pull/9006) + + 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) + + Hie files generated by GHC are now stored in the + `extra-compilation-artifacts` directory which gets installed with the + package. + +- Include the GHC "Project Unit Id" in the cabal store path [#8114](https://github.com/haskell/cabal/issues/8114) [#9326](https://github.com/haskell/cabal/pull/9326) + + This allows the use of several **API incompatible builds of the same + version of GHC** without corrupting the cabal store. + + 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. + +- Fix the platform string for GNU/Hurd [#9434](https://github.com/haskell/cabal/pull/9434) + + Depending whom you ask, GNU/Hurd will be labelled "gnu" or "hurd". The + autotools use "gnu", so ghc follows this for installed files, even if the + ghc source code uses OSHurd. We thus need to add the translation between + the two. + +- Use linker capability detection to improve linker use [#9443](https://github.com/haskell/cabal/pull/9443) + + Previously the GHC version number and platform were used as a proxy for + whether the linker can generate relocatable objects. + + Now, the ability of the linker to create relocatable objects is detected. + +- Merge globbing implementations [#5349](https://github.com/haskell/cabal/issues/5349) [#9673](https://github.com/haskell/cabal/pull/9673) + + The common aspects of the globbing functionality between `Cabal` and + `cabal-install` have been factored out. The only change in the user-facing + API is that we now record when a glob does not match exactly, but matches + a directory with that same name, with the new constructor + `GlobMatchesDirectory` of `GlobResult`. + + To illustrate, this change means that when `foo/dir` is a directory, the + glob `*/dir/` matches exactly `foo/dir` (as before), but now `*/dir` + produces `GlobMatchesDirectory` instead of failing. This allows callers + to decide whether to allow or discard such inexact matches. + +- 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) +- Add support for the 64-bit RISC-V architecture [#9062](https://github.com/haskell/cabal/pull/9062) +- Add support for 64-bit LoongArch architecture [#9215](https://github.com/haskell/cabal/pull/9215) +- 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) +- Add support for 64-bit SPARC as a separate architecture [#9445](https://github.com/haskell/cabal/pull/9445) + +- Make check comply with Hackage requirements [#8897](https://github.com/haskell/cabal/pull/8897) + + - `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 + 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) + +- Warn about inconsistent indentation [#8975](https://github.com/haskell/cabal/pull/8975) + + - Make Cabal warn about inconsistent indentation in .cabal files. For + example warn about somewhat common decreasing indentation like in + + ```cabal + library + default-language: Haskell2010 + build-depends: base + ghc-options: -Wall + ``` + + The change is `readFields` function. + + This is an effect of using `indentOfAtLeast` method/approach: any + indentation greater than current offset is accepted. + + That behavior is desirable to parsing multiline field contents, but it is + a bit surprising for fields in sections, which we expect to be aligned. + + Such insonsistency seems to be always a mistake, and it's easy to fix once + a machine points it out. + +- Add LexBraces lexer warning [#8577](https://github.com/haskell/cabal/issues/8577) + + LexBraces warning is issued when brace delimiting syntax is used. This + way, using `readFields'`, a low-lever consumer may decide whether braces + were used. + + (Looking for a brace character in the input is imprecise, as braces can + occur inside field content). + + This warning is not propagated to parser warnings, so e.g. + readGenericPackageDescription doesn't warn about it. This is because all + parser warnings prevent uploads to Hackage, and using braces (or not) is + opinionated choice. + +- Distinguish `powerpc64le`, by adding `PPC64LE` constructor to type `Arch` [#9534](https://github.com/haskell/cabal/issues/9534) [#9535](https://github.com/haskell/cabal/pull/9535) + + Adds constructor `PPC64LE` to type `Arch` to distinguish architecture + powerpc64le from powerpc64. Existing constructor `PPC64` now exclusively + represents powerpc64. + +- PkgConfig individual calls [#9134](https://github.com/haskell/cabal/pull/9134) + + `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 `mkVersionIntervals` for creating a `VersionIntervals` from a list [#9034](https://github.com/haskell/cabal/pull/9034) + + If external tools want to change the version intervals of dependencies, they + need to be able to create a `VersionRange` from a `[VersionInterval]` list. Adding + the function `mkVersionIntervals` makes this possible again. + +- Add language extension `TypeAbstractions` [#9496](https://github.com/haskell/cabal/issues/9496) [#9502](https://github.com/haskell/cabal/pull/9502) + +- Add support for the 64-bit RISC-V architecture [#9062](https://github.com/haskell/cabal/pull/9062) +- Add support for 64-bit LoongArch architecture [#9215](https://github.com/haskell/cabal/pull/9215) +- Add support for 64-bit SPARC as a separate architecture [#9445](https://github.com/haskell/cabal/pull/9445) + diff --git a/release-notes/WIP-cabal-install-3.12.x.0.md b/release-notes/WIP-cabal-install-3.12.x.0.md new file mode 100644 index 0000000000000000000000000000000000000000..2f48dcfffa8d57082693573b34555606d8eb5052 --- /dev/null +++ b/release-notes/WIP-cabal-install-3.12.x.0.md @@ -0,0 +1,235 @@ +☞ N.B.: this is a WIP release-note file for 3.12.x.0 cabal-install. + +cabal-install and cabal-install-solver 3.12.1.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 + +- 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 + +- 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). + + 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. + +### 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. + +- 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. + +- 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`. + + 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. + +- 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. + +- 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 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. + +- 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: + + ```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: + +- 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. + +- 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. + + 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. + + 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. + +- 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. + +- Add `--ignore` to `cabal check` [#8587](https://github.com/haskell/cabal/issues/8587) [#9442](https://github.com/haskell/cabal/pull/9442) + + - `cabal check` now ignores specific warnings with `--ignore`. E.g. + `--ignore=missing-upper-bounds` will not display “Missing upper + bounds†warnings. + - `cabal check` output now prints the warning identifier too + (like `[no-category]`). + +- 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. + +- 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. + +- 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 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/). + +- 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. + +- `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. + +- 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. + +- 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. + +- 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. + +- 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. + +- Guard PackageInfo_* modules behind `cabal-version` ≥ 3.12 [#9331](https://github.com/haskell/cabal/issues/9331) [#9481](https://github.com/haskell/cabal/pull/9481) + + `cabal check` now warns whenever PackageInfo_* autogen modules are + used with `cabal-version` ≥ 3.12. + Additionally, `cabal configure` will fail if you try to use PackageInfo_* + with `cabal-version` < 3.12. + +- cabal init now generates cabal versions older than 1.12 with the correct >= syntax [#8206](https://github.com/haskell/cabal/issues/8206) [#8860](https://github.com/haskell/cabal/pull/8860) +- `cabal init`: suggest BSD-3 as default license [#8757](https://github.com/haskell/cabal/issues/8757) [#8764](https://github.com/haskell/cabal/pull/8764) +- Do not ask overwrite permissions on blank project [#9150](https://github.com/haskell/cabal/issues/9150) [#9155](https://github.com/haskell/cabal/pull/9155) +- 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) + +- 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. + + 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, +``` +