mirror of
https://github.com/barrucadu/dejafu.git
synced 2024-11-22 12:15:39 +03:00
71 lines
2.3 KiB
ReStructuredText
71 lines
2.3 KiB
ReStructuredText
Supported GHC Versions
|
|
======================
|
|
|
|
Déjà Fu supports the latest four GHC releases, at least. For testing
|
|
purposes, we use Stackage snapshots as a proxy for GHC versions. The
|
|
currently supported versions are:
|
|
|
|
.. csv-table::
|
|
:header: "GHC", "Stackage", "base"
|
|
|
|
"9.6", "Nightly 2021-07-01", "4.18.0.0"
|
|
"9.4", "LTS 21.0", "4.17.0.0"
|
|
"9.2", "LTS 20.0", "4.16.0.0"
|
|
"9.0", "LTS 19.0", "4.15.0.0"
|
|
"8.10", "LTS 17.0", "4.14.1.0"
|
|
"8.8", "LTS 15.0", "4.13.0.0"
|
|
"8.6", "LTS 14.0", "4.12.0.0"
|
|
"8.4", "LTS 12.0", "4.11.0.0"
|
|
"8.2", "LTS 10.0", "4.10.1.0"
|
|
|
|
In practice, we may *compile with* older versions of GHC, but keeping
|
|
them working is not a priority.
|
|
|
|
|
|
Adding new GHC releases
|
|
-----------------------
|
|
|
|
When a new version of GHC is released, we need to make some changes
|
|
for everything to go smoothly. In general, these changes should only
|
|
cause a **patch level version bump**.
|
|
|
|
1. Bump the upper bound of :hackage:`base` and set up any needed
|
|
conditional compilation
|
|
2. Add the GHC and base versions to the table.
|
|
3. Remove any unsupported versions from the table.
|
|
4. Make a patch release.
|
|
|
|
A new GHC release won't get a Stackage snapshot for little while. When it
|
|
does:
|
|
|
|
1. Add the snapshot to the GitHub Actions configuration.
|
|
2. Update the resolver in the stack.yaml.
|
|
3. Put the snapshot in the table.
|
|
|
|
|
|
Dropping old GHC releases
|
|
-------------------------
|
|
|
|
When we want to drop an unsupported version of GHC, we need to bump
|
|
the version bound on :hackage:`base` to preclude it. This is a
|
|
backwards-incompatible change which causes a **major version bump**.
|
|
|
|
1. Remove the dropped GHC version from the GitHub Actions
|
|
configuration.
|
|
2. Bump the lower bound of :hackage:`base`.
|
|
3. Look through the other dependencies. Some may not work with our
|
|
new lower bound on :hackage:`base`, so we should bump those too.
|
|
4. Remove any now-irrelevant conditional compilation (mostly CPP, but
|
|
there may also be some cabal file bits).
|
|
5. Make whatever change required the bump.
|
|
6. Make a major release.
|
|
|
|
GHC versions shouldn't be dropped just because we can, but here are
|
|
some good reasons to do it:
|
|
|
|
* We want to bump the lower bounds of a dependency to a version which
|
|
doesn't support that GHC.
|
|
* We want to add a new dependency which doesn't support that GHC.
|
|
* The conditional compilation needed to keep that GHC working is
|
|
getting confusing.
|