Cabal-3.4.0.0
Significant changes
Add cabal-version: 3.4 !6663
See various changes in https://cabal.readthedocs.io/en/latest/file-format-changelog.html#cabal-version-3-4
Support GHC-9.0 #6903 #6904 #6905 !6545 !6552 !6553 !6563 !6735 !6844 !6848 !6865 !6908 !6947
- Support for
-this-package-key
deprecation - Use process
createPipe
- Add support for WINIO to Cabal
- Adopt to simplified subsumption changes
There are no magical
IO = WithCallStack Prelude.IO
alias in Cabal, as it is hard to get working with GHC-9.0's simplified subsumption.- Support for
Treat
pkg:sublib
dependency syntax as is incabal-version: 3.4
#6083 !6893 !6907In
cabal-version: 3.4
cabal files the dependency definitionbuild-depends: somesublib
does not use in-package sublibraries. You have to be explicit and write
build-depends: thispkg:somesublib
This fixes an issue where it was impossible to refer to an external library if you had a sublibrary of the same name.
Dependency type refactorings #5570 #6894 !6768 !6798 !6895 !6896 !6897 !6898
With additions of (public) sublibraries,
Dependency
type use for multiple needs become painful. Therefore a new typePackageVersionConstraint
was added to serve constraint on package use-case.Dependency
type is dependency on a library component, i.e. representingbuild-depends
entry.- Use PackageVersionConstraint more
- Add NonEmptySet and use it in Dependency
Other changes
Tests additions #6409 !6753 !6759 !6802 !6842 !6872
- Add shrinker, so writing big non-generic product shrinkers is easier
- Add
hs-source-dirs: NL .
test-case - Add public multilib test(s)
Code organization !6599 !6642 !6734 !6745 !6746 !6817 !6818 !6821 !6867
- Split
Distribution.Client.Types
module - Move cabal-testsuite code into
src/
- Add
ProjectFlags
- Add
NixStyleOptions
- Internal refactorings to install command.
- Make own modules for
InstallMethod
andOverwritePolicy
- Make cabal-install compilable with
NoImplicitPrelude
- Refactor shared
TargetProblem
data types into their own module. - Template
cabal-install.cabal
using zinza
- Split
The grammar of most package description fields is formally documented !6591 !6593 !6704 !6766 !6778 !6780 !6781 !6791 !6800
See https://cabal.readthedocs.io/en/latest/buildinfo-fields-reference.html
Fix ghci being launched before other sources are built. !6923
Related to foreign calls to C-sources.
Remove
-any
and-none
syntax for version ranges in cabal-version: 3.4 #6589 !6786Use
>=0
(or empty in dependencies) and<0
respectively.Add pijul to known repository type #6610 !6684
Pijul is now explicitly recognized version control system. However
cabal-install
isn't yet able to use it insource-repository-package
.Rename Flag to CompilerFlag and PackageFlag #6710 !6725
There was three Flag's. Now they are
Flag
(cli parsing)PackageFlag
CompilerFlag
This allows wild-imports without
hiding (Flag)
.Accept "linux-androideabi" as an alias for Android for determining buildOS !6301 !6949
Cabal
will able to parselinux-androideabi
from the value ofSystem.Info.os
.Refactor Distribution.PackageDescription module !6855
Now it re-exports a collection of modules, not individual symbols.
Use process jobs when spawning subprocesses !6529 !6536
Many toolchain tools written for POSIX systems rely on the exec system call. Unfortunately, it is not possible to implement exec in a POSIX-compliant manner on Windows. In particular, the semantics of the exec implementation provided by the widely-used msvcrt C runtime will cause process's waiting on the exec'ing process to incorrectly conclude that the process has successfully terminated when in fact it is still running in another process.
For this reason, the process library exposes the use_process_jobs flag to use a more strict (although still not POSIX-compliant) mechanism for tracking process completion. This is explained in the Process.hs comment
Unfortunately, job support in the process library is currently quite broken and was only recently fixed. Consequently, we only enable job object support for process releases >= 1.6.8.
Remove
AnyVersion
andWildcardVersion
constructors fromVersion
!6742This changes makes
Version
type less "syntactic", i.e. contains less constructors for semantically same version ranges.Cabal-QuickCheck package with
Arbitrary
instances #6882 !6557 !6891Create Cabal-tree-diff package with
ToExpr
instances !6789Cabal.Distribution.Compiler
: addTraversable
instance forPerCompilerFlavor
!6763Improvements to cabal-testsuite framework !6643
Update copyright years to 2020 !6644
Documentation updates and typo-fixes !6504 !6550 !6560 !6613 !6660 !6668 !6669 !6686 !6697 !6761 !6928 !6940 !6951 !6953 !6954
default-language field is optional in cabal-version: 3.4 #6288 !6924 !6926
Change 'optional-packages' default to empty, when cabal.project is missing. #4797 #6739 !6740
Package description parser benchmark !6594
Add
licenceIsFsfLibre
!6878Add
+stderr
modifier toVerbosity
!6929Mark public-libs as experimental feature !6605
Add rewriteFileLBS and use it to write setup wrapper !6574
Change specVersion to have CabalSpecVersion type !6653
Better UTF8 handling, parsed
ShortText
is now valid. !6588More checks in version range parser !6586
Require cabal-versions
>=1.25
to be exact !6654