Skip to content

Commit 0bcce76

Browse files
committed
Add policy on limits of support for historical GHC/Cabal
1 parent a0affbc commit 0bcce76

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

CONTRIBUTING.md

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -275,14 +275,33 @@ updates with your pull request.
275275

276276
## Backwards Compatability
277277

278-
The Stack executable does not need to, and does not, strive for the same broad
279-
compatibility with versions of GHC that a library package (such as `pantry`)
280-
would seek. Instead, Stack aims to define a well-known combination of
281-
dependencies on which its executable relies. That applies in particular to the
282-
`Cabal` package, where Stack aims to support one, and only one, version of
283-
`Cabal` with each release of its executable. At the time of writing (September
284-
2022) that combination is defined by resolver `nightly-2022-11-14` (for
285-
GHC 9.2.4, and including `Cabal-3.6.3.0`) - see `stack.yaml`.
278+
The Stack package provides a library and an executable (`stack`) that depends on
279+
the library. The library is intended for use only by the executable.
280+
281+
Consequently, the Stack package does not need to, and does not, strive for the
282+
compatibility with a range of versions of GHC that a library package (such as
283+
`pantry`) would seek.
284+
285+
Stack aims to depend on well-known packages. The specific versions on which it
286+
depends at any time are specified by `package.yaml` and `stack.yaml`. It does
287+
not aim to be compatible with more than one version of the `Cabal` package at
288+
any time. At the time of writing (January 2023) the package versions are
289+
primarily ones in Stackage snapshot LTS Haskell 20.8 (for GHC 9.2.5), together
290+
with extra-dep `Cabal-3.8.1.0`.
291+
292+
A Stack executable makes use of Cabal (the library) through a small 'Setup'
293+
executable that it compiles from Haskell source code. The executable compiles
294+
that code with a dependency on the version of Cabal that ships with the
295+
specified GHC compiler. Each release of Stack will aim to support all versions
296+
of GHC and the Cabal package in Stackage snapshots published within seven years
297+
of the release. For example, snapshot LTS Haskell 2.22, published on
298+
9 August 2015, was the last to provide GHC 7.8.4 which comes with
299+
`Cabal-1.18.1.5`. Until, at least, 9 August 2022, Stack releases would aim
300+
to support GHC 7.8.4 and `Cabal-1.18.1.5`.
301+
302+
When a version of the Stack executable actually ceases to support a version of
303+
GHC and `Cabal`, that should be recorded in Stack's
304+
[ChangeLog](https://github.com/commercialhaskell/stack/blob/master/ChangeLog.md).
286305

287306
## Code Quality
288307

0 commit comments

Comments
 (0)