|
| 1 | +### Significant changes |
| 2 | + |
| 3 | +- Add cabal-version: 3.4 [!6663](https://github.com/haskell/cabal/pull/6663) |
| 4 | + |
| 5 | + See various changes in https://cabal.readthedocs.io/en/latest/file-format-changelog.html#cabal-version-3-4 |
| 6 | + |
| 7 | +- Support GHC-8.12 [#6903](https://github.com/haskell/cabal/issues/6903) [#6904](https://github.com/haskell/cabal/issues/6904) [#6905](https://github.com/haskell/cabal/issues/6905) [!6545](https://github.com/haskell/cabal/pull/6545) [!6552](https://github.com/haskell/cabal/pull/6552) [!6553](https://github.com/haskell/cabal/pull/6553) [!6563](https://github.com/haskell/cabal/pull/6563) [!6735](https://github.com/haskell/cabal/pull/6735) [!6844](https://github.com/haskell/cabal/pull/6844) [!6848](https://github.com/haskell/cabal/pull/6848) [!6865](https://github.com/haskell/cabal/pull/6865) [!6908](https://github.com/haskell/cabal/pull/6908) [!6947](https://github.com/haskell/cabal/pull/6947) |
| 8 | + |
| 9 | + - Support for `-this-package-key` deprecation |
| 10 | + - Use process `createPipe` |
| 11 | + - Add support for WINIO to Cabal |
| 12 | + - Adopt to simplfied subsumption changes |
| 13 | + |
| 14 | + There are no magical `IO = WithCallStack Prelude.IO` alias in Cabal, |
| 15 | + as it is hard to get working with GHC-8.12's simplified subsumption. |
| 16 | + |
| 17 | +- Treat `pkg:sublib` dependency syntax as is in `cabal-version: 3.4` [#6083](https://github.com/haskell/cabal/issues/6083) [!6893](https://github.com/haskell/cabal/pull/6893) [!6907](https://github.com/haskell/cabal/pull/6907) |
| 18 | + |
| 19 | + In `cabal-version: 3.4` cabal files the dependency definition |
| 20 | + |
| 21 | + ```cabal |
| 22 | + build-depends: somesublib |
| 23 | + ``` |
| 24 | + |
| 25 | + is not using in-package sublibraries. You have to be explicit and write |
| 26 | + |
| 27 | + ```cabal |
| 28 | + build-depends: thispkg:somesublib |
| 29 | + ``` |
| 30 | + |
| 31 | + This fixes an issue, where it was impossible to refer to extenral |
| 32 | + library, if you had sublibrary of the same name. |
| 33 | + |
| 34 | +- Dependency type refactorings [#5570](https://github.com/haskell/cabal/issues/5570) [#6894](https://github.com/haskell/cabal/issues/6894) [!6768](https://github.com/haskell/cabal/pull/6768) [!6798](https://github.com/haskell/cabal/pull/6798) [!6895](https://github.com/haskell/cabal/pull/6895) [!6896](https://github.com/haskell/cabal/pull/6896) [!6897](https://github.com/haskell/cabal/pull/6897) [!6898](https://github.com/haskell/cabal/pull/6898) |
| 35 | + |
| 36 | + With additions of (public) sublibraries, `Dependency` type use for multiple needs become painful. |
| 37 | + Therefore a new type `PackageVersionConstraint` was added to serve *constraint on package* use-case. |
| 38 | + `Dependency` type is *dependency on a library component*, i.e. representing `build-depends` entry. |
| 39 | + |
| 40 | + - Use PackageVersionConstraint more |
| 41 | + - Add NonEmptySet and use it in Dependency |
| 42 | + |
| 43 | +### Other changes |
| 44 | + |
| 45 | +- Tests additions [#6409](https://github.com/haskell/cabal/issues/6409) [!6753](https://github.com/haskell/cabal/pull/6753) [!6759](https://github.com/haskell/cabal/pull/6759) [!6802](https://github.com/haskell/cabal/pull/6802) [!6842](https://github.com/haskell/cabal/pull/6842) [!6872](https://github.com/haskell/cabal/pull/6872) |
| 46 | + |
| 47 | + - Add shrinker, so writing big non-generic product shrinkers is easier |
| 48 | + - Add `hs-source-dirs: NL .` test-case |
| 49 | + - Add public multilib test(s) |
| 50 | + |
| 51 | +- Code organization [!6599](https://github.com/haskell/cabal/pull/6599) [!6642](https://github.com/haskell/cabal/pull/6642) [!6734](https://github.com/haskell/cabal/pull/6734) [!6745](https://github.com/haskell/cabal/pull/6745) [!6746](https://github.com/haskell/cabal/pull/6746) [!6817](https://github.com/haskell/cabal/pull/6817) [!6818](https://github.com/haskell/cabal/pull/6818) [!6821](https://github.com/haskell/cabal/pull/6821) [!6867](https://github.com/haskell/cabal/pull/6867) |
| 52 | + |
| 53 | + - Split `Distribution.Client.Types` module |
| 54 | + - Move cabal-testsuite code into `src/` |
| 55 | + - Add `ProjectFlags` |
| 56 | + - Add `NixStyleOptions` |
| 57 | + - Internal refactorings to install command. |
| 58 | + - Make own modules for `InstallMethod` and `OverwritePolicy` |
| 59 | + - Make cabal-install compilable with `NoImplicitPrelude` |
| 60 | + - Refactor shared `TargetProblem` data types into their own module. |
| 61 | + - Template `cabal-install.cabal` using zinza |
| 62 | + |
| 63 | +- The grammar of most package description fields is formally documented [!6591](https://github.com/haskell/cabal/pull/6591) [!6593](https://github.com/haskell/cabal/pull/6593) [!6704](https://github.com/haskell/cabal/pull/6704) [!6766](https://github.com/haskell/cabal/pull/6766) [!6778](https://github.com/haskell/cabal/pull/6778) [!6780](https://github.com/haskell/cabal/pull/6780) [!6781](https://github.com/haskell/cabal/pull/6781) [!6791](https://github.com/haskell/cabal/pull/6791) [!6800](https://github.com/haskell/cabal/pull/6800) |
| 64 | + |
| 65 | + See https://cabal.readthedocs.io/en/latest/buildinfo-fields-reference.html |
| 66 | + |
| 67 | +- Fix ghci being launched before other sources are built. [!6923](https://github.com/haskell/cabal/pull/6923) |
| 68 | + |
| 69 | + Related to foreign calls to C-sources. |
| 70 | + |
| 71 | +- Remove `-any` and `-none` syntax for version ranges in cabal-version: 3.4 [#6589](https://github.com/haskell/cabal/issues/6589) [!6786](https://github.com/haskell/cabal/pull/6786) |
| 72 | + |
| 73 | + Use `>=0` (or empty in dependencies) and `<0` respectively. |
| 74 | + |
| 75 | +- Add pijul to known repository type [#6610](https://github.com/haskell/cabal/issues/6610) [!6684](https://github.com/haskell/cabal/pull/6684) |
| 76 | + |
| 77 | + Pijul is now explicitly recognized version control system. |
| 78 | + However `cabal-install` isn't yet able to use it in |
| 79 | + `source-repository-package`. |
| 80 | + |
| 81 | +- Rename Flag to CompilerFlag and PackageFlag [#6710](https://github.com/haskell/cabal/issues/6710) [!6725](https://github.com/haskell/cabal/pull/6725) |
| 82 | + |
| 83 | + There was three Flag's. Now they are |
| 84 | + |
| 85 | + - `Flag` (cli parsing) |
| 86 | + - `PackageFlag` |
| 87 | + - `CompilerFlag` |
| 88 | + |
| 89 | + This allows wild-imports without `hiding (Flag)`. |
| 90 | + |
| 91 | +- Accept "linux-androideabi" as an alias for Android for determining buildOS [!6301](https://github.com/haskell/cabal/pull/6301) [!6949](https://github.com/haskell/cabal/pull/6949) |
| 92 | + |
| 93 | + `Cabal` will able to parse `linux-androideabi` from the value of `System.Info.os`. |
| 94 | + |
| 95 | +- Refactor Distribution.PackageDescription module [!6855](https://github.com/haskell/cabal/pull/6855) |
| 96 | + |
| 97 | + Now it re-exports a collection of modules, not individual symbols. |
| 98 | + |
| 99 | +- Use process jobs when spawning subprocesses [!6529](https://github.com/haskell/cabal/pull/6529) [!6536](https://github.com/haskell/cabal/pull/6536) |
| 100 | + |
| 101 | + Many toolchain tools written for POSIX systems rely on the exec system |
| 102 | + call. Unfortunately, it is not possible to implement exec in a |
| 103 | + POSIX-compliant manner on Windows. In particular, the semantics of the |
| 104 | + exec implementation provided by the widely-used msvcrt C runtime |
| 105 | + will cause process's waiting on the exec'ing process to incorrectly |
| 106 | + conclude that the process has successfully terminated when in fact it is |
| 107 | + still running in another process. |
| 108 | + |
| 109 | + For this reason, the process library exposes the use_process_jobs |
| 110 | + flag to use a more strict (although still not POSIX-compliant) mechanism |
| 111 | + for tracking process completion. |
| 112 | + This is explained in [the Process.hs comment](https://github.com/haskell/process/blob/master/System/Process.hs#L399) |
| 113 | + |
| 114 | + Unfortunately, job support in the process library is currently quite |
| 115 | + broken and was only recently fixed. Consequently, we only enable job |
| 116 | + object support for process releases >= 1.6.8. |
| 117 | + |
| 118 | +- Remove `AnyVersion` and `WildcardVersion` constructors from `Version` [!6742](https://github.com/haskell/cabal/pull/6742) |
| 119 | + |
| 120 | + This changes makes `Version` type less "syntactic", |
| 121 | + i.e. contains less constructors for semantically same version ranges. |
| 122 | + |
| 123 | +- Cabal-QuickCheck package with `Arbirary` instances [#6882](https://github.com/haskell/cabal/issues/6882) [!6557](https://github.com/haskell/cabal/pull/6557) [!6891](https://github.com/haskell/cabal/pull/6891) |
| 124 | +- Create Cabal-tree-diff package with `ToExpr` instances [!6789](https://github.com/haskell/cabal/pull/6789) |
| 125 | +- `Cabal.Distribution.Compiler`: add `Traversable` instance for `PerCompilerFlavor` [!6763](https://github.com/haskell/cabal/pull/6763) |
| 126 | +- Improvements to cabal-testsuite framework [!6643](https://github.com/haskell/cabal/pull/6643) |
| 127 | +- Update copyright years to 2020 [!6644](https://github.com/haskell/cabal/pull/6644) |
| 128 | +- Documentation updates and typo-fixes [!6504](https://github.com/haskell/cabal/pull/6504) [!6550](https://github.com/haskell/cabal/pull/6550) [!6560](https://github.com/haskell/cabal/pull/6560) [!6613](https://github.com/haskell/cabal/pull/6613) [!6660](https://github.com/haskell/cabal/pull/6660) [!6668](https://github.com/haskell/cabal/pull/6668) [!6669](https://github.com/haskell/cabal/pull/6669) [!6686](https://github.com/haskell/cabal/pull/6686) [!6697](https://github.com/haskell/cabal/pull/6697) [!6761](https://github.com/haskell/cabal/pull/6761) [!6928](https://github.com/haskell/cabal/pull/6928) [!6940](https://github.com/haskell/cabal/pull/6940) [!6951](https://github.com/haskell/cabal/pull/6951) [!6953](https://github.com/haskell/cabal/pull/6953) [!6954](https://github.com/haskell/cabal/pull/6954) |
| 129 | +- Flag assignment parsing refactorings [#6853](https://github.com/haskell/cabal/issues/6853) [!6854](https://github.com/haskell/cabal/pull/6854) [!6858](https://github.com/haskell/cabal/pull/6858) |
| 130 | +- Add foo:bar syntax to mixins [#6281](https://github.com/haskell/cabal/issues/6281) [!6912](https://github.com/haskell/cabal/pull/6912) |
| 131 | +- default-language field is optional in cabal-version: 3.4 [#6288](https://github.com/haskell/cabal/issues/6288) [!6924](https://github.com/haskell/cabal/pull/6924) [!6926](https://github.com/haskell/cabal/pull/6926) |
| 132 | +- Split `KnownRepoType` out of `RepoType` [#6432](https://github.com/haskell/cabal/issues/6432) [!6612](https://github.com/haskell/cabal/pull/6612) |
| 133 | +- Include component name in unit-id [#6485](https://github.com/haskell/cabal/issues/6485) [!6547](https://github.com/haskell/cabal/pull/6547) |
| 134 | +- Change 'optional-packages' default to empty, when cabal.project is mising. [#4797](https://github.com/haskell/cabal/issues/4797) [#6739](https://github.com/haskell/cabal/issues/6739) [!6740](https://github.com/haskell/cabal/pull/6740) |
| 135 | +- Fix rpmvercmp (trailing non-digit characters) [#6805](https://github.com/haskell/cabal/issues/6805) [!6808](https://github.com/haskell/cabal/pull/6808) |
| 136 | +- other changes [!6556](https://github.com/haskell/cabal/pull/6556) [!6598](https://github.com/haskell/cabal/pull/6598) [!6910](https://github.com/haskell/cabal/pull/6910) |
| 137 | +- Package description parser benchmark [!6594](https://github.com/haskell/cabal/pull/6594) |
| 138 | +- Add `licenceIsFsfLibre` [!6878](https://github.com/haskell/cabal/pull/6878) |
| 139 | +- Add `+stderr` modifier to `Verbosity` [!6929](https://github.com/haskell/cabal/pull/6929) |
| 140 | +- Mark public-libs as experimental feature [!6605](https://github.com/haskell/cabal/pull/6605) |
| 141 | +- Add rewriteFileLBS and use it to write setup wrapper [!6574](https://github.com/haskell/cabal/pull/6574) |
| 142 | +- Add SPDX License List 3.9 [#6879](https://github.com/haskell/cabal/issues/6879) [!6662](https://github.com/haskell/cabal/pull/6662) [!6944](https://github.com/haskell/cabal/pull/6944) |
| 143 | +- Change specVersion to have CabalSpecVersion type [!6653](https://github.com/haskell/cabal/pull/6653) |
| 144 | +- Better UTF8 handling, parsed `ShortText` is now valid. [!6588](https://github.com/haskell/cabal/pull/6588) |
| 145 | +- More checks in version range parser [!6586](https://github.com/haskell/cabal/pull/6586) |
| 146 | +- Require cabal-versions `>=1.25` to be exact [!6654](https://github.com/haskell/cabal/pull/6654) |
| 147 | +- Add and use weeder [!6779](https://github.com/haskell/cabal/pull/6779) [!6790](https://github.com/haskell/cabal/pull/6790) |
0 commit comments