Merge pull request #10318 from 9999years/validate-use-bash
[cabal.git] / release-notes / Cabal-3.12.1.0.md
blob8f37e2c04544eff58fde0622413631a25591a0e9
1 Cabal and Cabal-syntax 3.12.1.0 changelog and release notes
2 ---
5 ### Significant changes
7 - Update GHC arguments normalization and GHC options rendering [#9729](https://github.com/haskell/cabal/issues/9729) [#10014](https://github.com/haskell/cabal/pull/10014)
9   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.
11 - Warn on missing `default-language` [#9620](https://github.com/haskell/cabal/issues/9620) [#9766](https://github.com/haskell/cabal/pull/9766)
13   - To help the adoption of GHC language editions, `cabal check` will now
14     warn about missing `default-language`.
16 - Add MHS ([MicroHS](https://github.com/augustss/MicroHs)) as a known Haskell compiler [#9878](https://github.com/haskell/cabal/pull/9878)
18 - Re-instate `initialBuildSteps` [#9856](https://github.com/haskell/cabal/issues/9856) [#9950](https://github.com/haskell/cabal/pull/9950)
20   The `initialBuildSteps` function from `Distribution.Simple.Build`, which had
21   been hastily removed, has been reinstated.
23   It now comes with a deprecation warning: calling that function does not suffice
24   to prepare the sources for a package, as there are other steps that one might
25   also need to perform:
27     - running pre-processors (such as alex/happy);
28     - running pre-build hooks or custom logic
29       (in build-type: Hooks or build-type: Custom or Configure).
31   Consumers wanting to prepare the sources of a package, e.g. in order to launch a
32   REPL session, are advised to run `setup repl --repl-multi-file=<fn>` instead.
34 - Label error messages with codes (following GHC, Stack)
36     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.
38     This change was actually present in Cabal-3.12.0.0, but was inadvertently omitted from the changelog.
40 ### Other changes
42 - Don't recommend deprecated/removed `extensions` field [#10042](https://github.com/haskell/cabal/issues/10042) [#10044](https://github.com/haskell/cabal/pull/10044)
44   When applicable, field `default-extensions` is recommended (rather than
45   deprecated/removed `extensions:`).
47 - 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)
49   Historically the Setup copy and install steps would fail if the package didn't
50   contain an executable or library component. In this case there's nothing to do.
52   This required workarounds for downstream users of Cabal to handle this edge case.
53   Now that this error has been downgraded to a warning, Cabal will succeed if
54   there's nothing to do.