Removing Support For GHC 8.2
Stack version 3.1.1 has been released. A major change with this version is that it no longer supports versions of GHC before 8.4. I have many projects that still support GHC 8.2! I have decided to go ahead and remove support for GHC 8.2, as well as constrain the minimal Cabal version and lower bounds of dependencies accordingly.
My goal is to support five years of build tools and libraries.
First Release | Last Release | cabal-install |
---|---|---|
8.0.1 (2016-05-21) | 8.0.2 (2017-01-11) | 1.24 |
8.2.1 (2017-07-22) | 8.2.2 (2017-07-22) | 1.24 |
8.4.1 (2018-03-08) | 8.4.4 (2018-10-14) | 2.2 |
8.6.1 (2018-09-21) | 8.6.5 (2019-04-23) | 2.4 |
8.8.1 (2019-08-25) | 8.8.4 (2020-07-15) | 3.0 |
8.10.1 (2020-03-24) | 8.10.7 (2021-08-27) | 3.2 |
9.0.1 (2021-02-04) | 9.0.2 (2021-12-25) | 3.4 |
9.2.1 (2021-10-29) | 9.2.8 (2023-05-26) | 3.6 |
9.4.1 (2022-08-07) | 9.4.8 (2023-11-10) | 3.8 |
9.6.1 (2023-03-10) | 9.6.6 (2024-07-01) | 3.10 |
9.8.1 (2023-10-09) | 9.8.2 (2024-02-23) | 3.10.2.0 |
9.10.1 (2024-05-10) | 3.10.2.0 |
For my personal projects, I generally try to add support for new releases with high priority, while I remove support for old releases with low priority. GHC 8.2.2 was released more than seven years ago, so I am not worried about removing support for it. GHC 8.4.4 and GHC 8.6.5 were released more than five years ago, so they are candidates for removing support as well.
For projects that are primarily used as executables, there is little reason to keep support for such old versions. A benefit of removing support is that fewer resources are required to run tests.
For libraries, users may appreciate support for old versions, especially when the libraries are used in software that is not actively developed and only occasionally updated. I do not know of any such use cases of my libraries, however. Perhaps it is time for me to “git gud.”
Note that the 3 release policy that many people adapt for their own libraries is not sufficient, in my experience. For example, I have very recently developed using GHC 8.10.7, the most recent version supported by the Reflex FRP ecosystem, due to GHCJS constraints.