cabal-install-3.14.0.0
cabal-install 3.14.0.0 changelog and release notes.
Significant changes
haddock-projectsupport for subcomponents #9821haddock-projecthandles sublibraries, test suites and benchmarks.haddockreceives--package-nameflag which allows to set names of components which are included in the mainindex.htmlfile.- added
--use-unicodeflag tohaddockandhaddock-projectcommands. - The directory structure of
./dist-newstylehas changed.haddocksubcommand will installpackage:sublibcomponent in a directorypackage/sublibunderl/sublib/doc/html/. This is important forhaddock-projectcommand and in the future might will be useful for hackage support of sublibraries. See https://github.com/haskell/cabal/pull/9821#discussion_r1548557115.
Redefine
build-type: Configurein terms ofHooks#9969The
build-type: Configureis now implemented in terms ofbuild-type: Hooksrather than in terms ofbuild-type: Custom. This moves theConfigurebuild-type away from theCustomissues. Eventually,build-type: Hookswill no longer imply packages are built in legacy-fallback mode. When that happens,Configurewill also stop implyinglegacy-fallback.The observable aspect of this change is
runConfigureScriptnow having a different type, andautoconfSetupHooksbeing exposed fromDistribution.Simple. The former is motivated by internal implementation details, while the latter provides theSetupHooksvalue for theConfigurebuild type, which can be consumed by otherHooksclients (e.g. eventually HLS).
Other changes
Add support for building profiled dynamic way #4816 #9900
New options for
cabal.projectand./Setupinterface:profiling-shared: Enable building profiling dynamic way- Passing
--enable-profilingand--enable-executable-dynamicbuilds profiled dynamic executables.
Support for using
profiling-sharedis guarded behind a constraint which ensures you are usingCabal >= 3.13.In the
.cabalfile:ghc-prof-shared-options, for passing options when building in profiling dynamic way
Fix interaction of
--*-sharedand--*-executable-dynamicoptions. #10050 #9900If you explicitly request
--disable-sharedit should disable the building of a shared library and override any automatic ways this option is turned on.Passing
--enable-executable-dynamicturns on--enable-sharedif the option is not specified explicitly.Before this patch, writing
--disable-sharedon its own would not disable the building of shared libraries. Writing--disable-sharedand--disable-executable-dynamicwould disable shared library creation (despite--disable-executable-dynamicbeing the default).Now:
- If you specify
--enable-sharedthen shared objects are built. - If you specify
--disabled-sharedthen shared objects are not built. - If you don't explicitly specify whether you want to build shared libraries then
--enable-executable-dynamicwill automatically turn on building shared libraries--enable-executable-dynamic --enable-profilingwill automatically turn on building shared profiling libraries (if supported by your compiler).
- If you specify
curltransport now supports Basic authentication #10089- The
curlHTTP transport previously only supported the HTTP Digest authentication scheme. Basic authentication is now supported when using HTTPS; Curl will use the scheme offered by the server. Thewgettransport already supports HTTPS.
- The
Enhance error detection for cabal root project files, including broken symlinks #9937 #10103
- Added proper detection and reporting for issues with cabal root project files. Previously, these files were silently ignored if they were broken symlinks. Now,
cabalwill exit with an error in such case.
- Added proper detection and reporting for issues with cabal root project files. Previously, these files were silently ignored if they were broken symlinks. Now,
Let cabal init remember chosen language within current session #10096 #10115
When
cabal initasks for a language, the last choice made will be used as the new default for the current prompt.Filter out
-dinitial-uniqueand-dunique-incrementfrom package hash #10122-dinitial-uniqueand-dunique-incrementare now filtered out when computing the store hash of a package.These options shouldn't affect the output of the package and hence shouldn't affect the store hash of a package.
Warn about
git://protocol #10261cabal checkwill warn about the insecure (and no longer supported by GitHub or Gitlab, among others)git://protocol insource-repository.See Git Book for an explanation.
Enable recompilation avoidance during Haddock generation #9175 #9177
Haddock no longer writes compilation files by default, so we do not need to pass tmp dirs for
-hidir,-stubdir, and-odirvia--optghc. Indeed, we do not want to do so, since it results in recompilation for every invocation of Haddock via Cabal. We now stop this from happening for Haddock versions 2.28 and greater, since that is when Hi Haddock was introduced.We no longer define the
__HADDOCK_VERSION__macro when invoking GHC through Haddock, since doing so essentially guarantees recompilation during documentation generation. We audited all uses of__HADDOCK_VERSION__in hackage, ensuring there was a reasonable path forward to migrate away from using__HADDOCK_VERSION__for each, while generating the same documentation as it did before. If you are a user of__HADDOCK_VERSION__, please take a look at the discussion in https://github.com/haskell/cabal/pull/9177 and reach out to us if your use case is not covered.Rename the
--haddock-libflag to--haddock-resources-dir(andhaddock-lib:cabal.project field tohaddock-resources-dir:), and add this flag to the users guide since it was missing an entry.documentation: trueor--enable-documentationnow implies-haddockfor GHC.
Bug fix - Don't pass
--coverage-forfor non-dependency libs of testsuite #10046 #10250Added
--alland--haddock-allswitches tohaddock-projectsubcommand #10051 #10163Clarify error message when
pkg-configis not found #10122- The error message when
pkg-configis not found or querying it fails will no longer incorrectly claim that the package is missing in the database.
- The error message when
Update the SPDX License List to version 3.25
The LicenseId and LicenseExceptionId types are updated to reflect the SPDX License List version 3.25 (2024-08-19).
