Skip to content

Commit fde059f

Browse files
committed
Generate release notes for 3.4
1 parent 09cdab2 commit fde059f

File tree

2 files changed

+382
-0
lines changed

2 files changed

+382
-0
lines changed

release-notes/Cabal-3.4.0.0.md

+147
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
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

Comments
 (0)