diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index c139971..1fb2b09 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -59,6 +59,10 @@ jobs: # Recent releases + - ghc: "9.12" + cabal: "3.14" + cabal_update: "true" + - ghc: "9.10" cabal: "3.12" cabal_update: "true" @@ -73,127 +77,87 @@ jobs: # Test #210 (XDG): is the cabal store-dir set to something meaningful? - ghc: "9.4" - cabal: "3.8" + cabal: "3.10.2.1" cabal_update: "false" - ghc: "9.2" - cabal: "3.6" + cabal: "3.10.2.0" cabal_update: "false" # The following tests do not set 'cabal-update', which defaults to 'true' then. include: - # Some previously recommended releases of ghc with matching cabal + # Future macos + + - os: macos-15 + plan: + ghc: latest + cabal: latest + cabal_update: "true" + + # Some previously recommended releases of ghc with supported cabal - os: macos-13 # GHC 9.0 does not work on macos-14 (LLVM problem #77) plan: ghc: "9.0" - cabal: "3.4" + cabal: "3.10" - os: ubuntu-latest plan: ghc: "8.10" - cabal: "3.2" + cabal: "3.14.1.1" - os: ubuntu-latest plan: ghc: "8.8" - cabal: "3.0" + cabal: "3.14.1.0" # cabal-3.0 install might have the Windows symlinking problem # https://github.com/haskell/cabal/issues/5748 - os: ubuntu-latest plan: ghc: "8.6" - cabal: "2.4" - cabal_update: "false" - # Setting cabal_update to "true" will try to build the test project - # with hackage dependencies, but something goes wrong. - # TODO: figure out what. - # cabal update needed here since cabal-2.4 is still v1 + cabal: "3.12.1.0" + cabal_update: "true" # Test on ubuntu-24.04 with older ghc - os: ubuntu-24.04 plan: ghc: "8.0" - cabal: "2.4.1.0" + cabal: "3.10.3.0" cabal_update: "false" - os: ubuntu-22.04 plan: ghc: "8.0" - cabal: "2.4.1.0" + cabal: "3.10.2.1" cabal_update: "false" # Test some old versions - os: ubuntu-latest plan: ghc: "8.2.2" - cabal: "2.4.1.0" + cabal: "3.10.2.0" cabal_update: "false" # Test ghcup pre-release channel - os: ubuntu-latest - ghcup_release_channel: "https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml" + ghcup_release_channel: "https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.9.yaml" plan: - ghc: "9.6.0.20230111" - cabal: "3.8" + ghc: "9.12.1.20250219" + # 2025-07-29: just not out yet: "9.10.2.20250725" + cabal: "latest" # Test ghc nightly - os: ubuntu-latest ghcup_release_channel: "https://ghc.gitlab.haskell.org/ghcup-metadata/ghcup-nightlies-0.0.7.yaml" + # 2025-07-29: 0.0.8 and 0.0.9 do not exist plan: ghc: "latest-nightly" cabal: "latest" - ## Andreas, 2024-05-03, deprecate GHC 7, do not test it any longer - # - # - os: ubuntu-20.04 - # plan: - # ghc: "7.4.2" - # cabal: "3.4" - # # ubuntu-20.04/hvr has of GHC 7 just 7.0.1, 7.0.4, 7.2.2, 7.4.2, 7.10.3 - # # and of cabal just 2.4, 3.0, 3.2, 3.4 - # # according to https://launchpad.net/~hvr/+archive/ubuntu/ghc?field.series_filter=focal - # - # # setup does something special for 7.10.3 (issue #79) - # - os: ubuntu-20.04 - # plan: - # ghc: "7.10.3" - # cabal: "3.6" - # - os: macOS-latest - # plan: - # ghc: "7.10.3" - # cabal: "3.4" - # - # # Andreas 2022-12-29, issue #98: GHC 7.10 failed to install on windows (choco) - # - os: windows-latest - # plan: - # ghc: "7.10" - # cabal: "3.0" - - ## Andreas, 2024-05-03, stop testing old minor versions - # - # # Test for issue #129: GHC 9.4.3 failed to install on windows (choco) - # - os: windows-latest - # plan: - # ghc: "9.4.3" - # cabal: "3.8.1.0" - - # # Test ghcup on windows (PR #206) which choco does not have 9.4.5 - # - os: windows-latest - # plan: - # ghc: "9.4.5" - # cabal: "3.8" - - # # Test GHC 9.4.4 on windows (Issue #245) - # - os: windows-latest - # plan: - # ghc: "9.4.4" - # cabal: "3.10.1.0" - steps: - uses: actions/checkout@v4 @@ -306,7 +270,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macOS-latest, windows-latest] - stack: ["latest", "2.15.5"] + stack: ["latest", "3.3.1"] # test latest and recommended version of stack steps: diff --git a/README.md b/README.md index da3e5d3..66945fd 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,6 @@ E.g., `8.10` will be resolved to `8.10.7`, and so will `8`. - `8.4.1` - `8.2.2` `8.2` - `8.0.2` `8.0` -- `7.10.3` `7.10` (deprecated, not on `ubuntu-22.04` or up) Suggestion: Try to support at least the three latest major versions of GHC. @@ -136,6 +135,7 @@ Suggestion: Try to support at least the three latest major versions of GHC. - `head` (the [cabal-head](https://github.com/haskell/cabal/releases/tag/cabal-head) release of the most recent build of the `master` branch) - `latest` (default, recommended) +- `3.16.0.0` `3.16` - `3.14.2.0` `3.14` - `3.14.1.1` - `3.14.1.0` @@ -143,21 +143,15 @@ Suggestion: Try to support at least the three latest major versions of GHC. - `3.10.3.0` `3.10` - `3.10.2.1` - `3.10.2.0` -- `3.10.1.0` -- `3.8.1.0` `3.8` -- `3.6.2.0` `3.6` -- `3.6.0.0` -- `3.4.1.0` `3.4` -- `3.4.0.0` -- `3.2.0.0` `3.2` -- `3.0.0.0` `3.0` -- `2.4.1.0` `2.4` + +Older versions of `cabal` are not supported due to vulnerability [HSEC-2023-0015](https://github.com/haskell/security-advisories/blob/cea5781acfc2adb9bc02486497d782072c613bb6/advisories/hackage/cabal-install/HSEC-2023-0015.md). Recommendation: Use the latest available version if possible. **Stack:** (with `enable-stack: true`) - `latest` (default, recommended) +- `3.7.1` `3.7` - `3.5.1` `3.5` - `3.3.1` `3.3` - `3.1.1` `3.1` diff --git a/dist/index.js b/dist/index.js index 2a47627..487f9c1 100644 --- a/dist/index.js +++ b/dist/index.js @@ -37725,7 +37725,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"win32":{"ghc":[{"from":"9.4.3","to": /***/ ((module) => { "use strict"; -module.exports = /*#__PURE__*/JSON.parse('{"ghc":["9.12.2","9.12.1","9.10.2","9.10.1","9.8.4","9.8.2","9.8.1","9.6.7","9.6.6","9.6.5","9.6.4","9.6.3","9.6.2","9.6.1","9.4.8","9.4.7","9.4.6","9.4.5","9.4.4","9.4.3","9.4.2","9.4.1","9.2.8","9.2.7","9.2.6","9.2.5","9.2.4","9.2.3","9.2.2","9.2.1","9.0.2","9.0.1","8.10.7","8.10.6","8.10.5","8.10.4","8.10.3","8.10.2","8.10.1","8.8.4","8.8.3","8.8.2","8.8.1","8.6.5","8.6.4","8.6.3","8.6.2","8.6.1","8.4.4","8.4.3","8.4.2","8.4.1","8.2.2","8.0.2","7.10.3"],"cabal":["3.14.2.0","3.14.1.1","3.14.1.0","3.12.1.0","3.10.3.0","3.10.2.1","3.10.2.0","3.10.1.0","3.8.1.0","3.6.2.0","3.6.0.0","3.4.1.0","3.4.0.0","3.2.0.0","3.0.0.0","2.4.1.0"],"stack":["3.5.1","3.3.1","3.1.1","2.15.7","2.15.5","2.15.3","2.15.1","2.13.1","2.11.1","2.9.3","2.9.1","2.7.5","2.7.3","2.7.1","2.5.1","2.3.3","2.3.1","2.1.3","2.1.1","1.9.3","1.9.1","1.7.1","1.6.5","1.6.3","1.6.1","1.5.1","1.5.0","1.4.0","1.3.2","1.3.0","1.2.0"],"ghcup":["0.1.50.1"]}'); +module.exports = /*#__PURE__*/JSON.parse('{"ghc":["9.12.2","9.12.1","9.10.2","9.10.1","9.8.4","9.8.2","9.8.1","9.6.7","9.6.6","9.6.5","9.6.4","9.6.3","9.6.2","9.6.1","9.4.8","9.4.7","9.4.6","9.4.5","9.4.4","9.4.3","9.4.2","9.4.1","9.2.8","9.2.7","9.2.6","9.2.5","9.2.4","9.2.3","9.2.2","9.2.1","9.0.2","9.0.1","8.10.7","8.10.6","8.10.5","8.10.4","8.10.3","8.10.2","8.10.1","8.8.4","8.8.3","8.8.2","8.8.1","8.6.5","8.6.4","8.6.3","8.6.2","8.6.1","8.4.4","8.4.3","8.4.2","8.4.1","8.2.2","8.0.2","7.10.3"],"cabal":["3.16.0.0","3.14.2.0","3.14.1.1","3.14.1.0","3.12.1.0","3.10.3.0","3.10.2.1","3.10.2.0","3.10.1.0","3.8.1.0","3.6.2.0","3.6.0.0","3.4.1.0","3.4.0.0","3.2.0.0","3.0.0.0","2.4.1.0"],"stack":["3.7.1","3.5.1","3.3.1","3.1.1","2.15.7","2.15.5","2.15.3","2.15.1","2.13.1","2.11.1","2.9.3","2.9.1","2.7.5","2.7.3","2.7.1","2.5.1","2.3.3","2.3.1","2.1.3","2.1.1","1.9.3","1.9.1","1.7.1","1.6.5","1.6.3","1.6.1","1.5.1","1.5.0","1.4.0","1.3.2","1.3.0","1.2.0"],"ghcup":["0.1.50.1"]}'); /***/ }) diff --git a/docs/contributors.md b/docs/contributors.md index cbcd918..ccc1869 100644 --- a/docs/contributors.md +++ b/docs/contributors.md @@ -32,3 +32,10 @@ Finally, it will make sure these changes are appropriately included in your comm Cabal does not follow SemVer and Stack has both SemVer compatible version numbers as well as PVP-style versions; due to this, support for "resolving" a version like `X.X` into the latest `X.X.Y` or `X.X.Y.Y` version is tricky. To avoid complications, all recognized versions of GHC, Cabal, and Stack are in `src/versions.json`; these versions are supported across all three operating systems. When a new release of GHC, Cabal, or Stack comes out, the `src/versions.json` file will need to be updated accordingly. + +### Adding new versions + +- Add new versions to `src/versions.json` and `README.md`. +- Take a look at `.github/workflows/workflow.yml`. + The new versions should be covered by the `latest` jobs there, however they can bump the next-to-latest versions out of CI. + Make sure all recent versions are covered by the CI. diff --git a/lib/versions.json b/lib/versions.json index a33610b..2d6df74 100644 --- a/lib/versions.json +++ b/lib/versions.json @@ -57,6 +57,7 @@ "7.10.3" ], "cabal": [ + "3.16.0.0", "3.14.2.0", "3.14.1.1", "3.14.1.0", @@ -75,6 +76,7 @@ "2.4.1.0" ], "stack": [ + "3.7.1", "3.5.1", "3.3.1", "3.1.1", diff --git a/src/versions.json b/src/versions.json index 00c96d3..91a86a5 100644 --- a/src/versions.json +++ b/src/versions.json @@ -57,6 +57,7 @@ "7.10.3" ], "cabal": [ + "3.16.0.0", "3.14.2.0", "3.14.1.1", "3.14.1.0", @@ -75,6 +76,7 @@ "2.4.1.0" ], "stack": [ + "3.7.1", "3.5.1", "3.3.1", "3.1.1",