Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
75638e9
adjust versions for 3.16.0.0 release
geekosaur Jul 3, 2025
82bf734
Merge pull request #11037 from haskell/r3.16-C.3.1b-C.3.2b-version-nu…
mergify[bot] Jul 3, 2025
97cafa6
add paragraph mentioning stackage
L0neGamer Jun 25, 2025
370f7cd
add some discussion of import config limitations
L0neGamer Jun 25, 2025
17a22b5
Update doc/nix-local-build.rst
L0neGamer Jul 2, 2025
eb950a8
Merge pull request #11044 from haskell/mergify/bp/3.16/pr-11018
mergify[bot] Jul 5, 2025
8b69517
Add 3.16 changelogs (#11033)
ffaf1 Jul 8, 2025
a9dd5aa
Capitalise “AArch” properly
ffaf1 Jul 6, 2025
5fd777a
release: Bump boot compiler for release to 9.10.2
mpickering Jul 2, 2025
8e424ff
Update platforms for release jobs
mpickering Jul 2, 2025
ded7ceb
Check the GHC and cabal-install version which are used to build the r…
mpickering Jul 2, 2025
d5d073d
Merge pull request #11057 from ffaf1/backport-aarch
mergify[bot] Jul 9, 2025
4f3d80c
Merge pull request #11058 from haskell/mergify/bp/3.16/pr-11032
mergify[bot] Jul 9, 2025
651120c
Backport #11061: missed updating all the copyrights in the cabal file…
mergify[bot] Jul 10, 2025
01b8c86
Always pass '--interactive' as the first ghc argument
fendor Jul 24, 2025
f02772a
Merge pull request #11101 from fendor/fendor/interactive-is-the-first…
mergify[bot] Jul 25, 2025
9883ab6
update `time` to 1.15
geekosaur Aug 4, 2025
d9b0904
Merge pull request #11137 from haskell/mergify/bp/3.16/pr-11127
mergify[bot] Aug 8, 2025
dedbea4
indicate which of the joined tests failed
geekosaur Oct 3, 2025
a43b64c
Merge pull request #11244 from haskell/mergify/bp/3.16/pr-11242
mergify[bot] Oct 9, 2025
44822bc
Bump QuickCheck
ffaf1 Nov 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ on:
env:
# We choose a stable ghc version across all os's
# which will be used to do the next release
GHC_FOR_RELEASE: "9.4.8"
GHC_FOR_RELEASE: "9.10.2"
# Ideally we should use the version about to be released for hackage tests and benchmarks
GHC_FOR_SOLVER_BENCHMARKS: "9.4.8"
GHC_FOR_COMPLETE_HACKAGE_TESTS: "9.4.8"
GHC_FOR_SOLVER_BENCHMARKS: "9.10.2"
GHC_FOR_COMPLETE_HACKAGE_TESTS: "9.10.2"
COMMON_FLAGS: "-j 2 -v"

# See https://github.com/haskell/cabal/blob/master/CONTRIBUTING.md#hackage-revisions
Expand All @@ -61,7 +61,7 @@ jobs:
ghc:
[
"9.12.2",
"9.10.1",
"9.10.2",
"9.8.4",
"9.6.7",
"9.4.8",
Expand Down Expand Up @@ -234,6 +234,10 @@ jobs:
echo Validate "$test"
sh validate.sh $FLAGS -s "$test" || rc=1
echo End "$test"
echo ::endgroup::
if [ $rc -eq 1 ]; then
echo Some tests failed
fi
done
exit $rc
# The above ensures all the tests get run, for a single platform+ghc.
Expand Down
30 changes: 8 additions & 22 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ stages:

variables:
# Commit of ghc/ci-images repository from which to pull Docker images
DOCKER_REV: "a9297a370025101b479cfd4977f8f910814e03ab"
DOCKER_REV: "df20b2eb2fcc1c93aed5ad047c65752fbd4c38d4"

GHC_VERSION: 9.6.4
CABAL_INSTALL_VERSION: 3.10.2.0
GHC_VERSION: 9.10.2
CABAL_INSTALL_VERSION: 3.14.2.0

workflow:
rules:
Expand All @@ -33,30 +33,20 @@ linux:
- ARCH: i386
TAG: x86_64-linux
OS:
- deb9
- deb10
- ARCH: x86_64
TAG: x86_64-linux
OS:
- deb9
- deb10
- deb11
- deb12
- fedora33
- fedora36
- fedora38
- rocky8
- ubuntu18_04
- ubuntu20_04
- ubuntu22_04
# Pull this one from the future, since it's missing.
# We can't move the entire file to this DOCKER_REV, because
# i386-linux-deb9 is missing from it.
- ARCH: x86_64
TAG: x86_64-linux
OS: centos7
DOCKER_REV: f2d12519f45a13a61fcca03a949f927ceead6492

- ubuntu24_04
- ARCH: aarch64
TAG: aarch64-linux
OS:
Expand All @@ -76,12 +66,11 @@ alpine-linux:
extends: .build
parallel:
matrix:
- ARCH: [i386, x86_64]
OS: [alpine3_12, alpine3_15, alpine3_17]
- ARCH: [x86_64]
OS: [alpine3_12, alpine3_20]
TAG: x86_64-linux
# Was 3_18 for i386 intentionally left off?
- ARCH: x86_64
OS: alpine3_18
- ARCH: [i386]
OS: alpine3_20
TAG: x86_64-linux
- ARCH: [aarch64]
OS: [alpine3_18]
Expand Down Expand Up @@ -110,9 +99,6 @@ darwin:
tags:
- ${ARCH}-darwin-m1
variables:
# Using 9.8.2 to work around
# https://gitlab.haskell.org/ghc/ghc/-/issues/24050
GHC_VERSION: 9.8.2
TARBALL_ARCHIVE_SUFFIX: ${ARCH}-darwin
TARBALL_EXT: tar.xz
ADD_CABAL_ARGS: ""
Expand Down
72 changes: 61 additions & 11 deletions .gitlab/ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,70 @@ set -Eeuo pipefail

source "$CI_PROJECT_DIR/.gitlab/common.sh"

## Figure out how to get the Haskell toolchain.

# For backport, the centos image no longer has the right GHC version, so use
# ghcup.
if [[ -f /etc/os-release && "$(grep ^ID /etc/os-release)" =~ "centos" ]]; then
. "$CI_PROJECT_DIR/.gitlab/ghcup.sh"
# All the other ones are fine.
elif [[ "$(uname)" == "Linux" ]]; then
export PATH="/opt/ghc/${GHC_VERSION}/bin:${PATH}"
# Not all runners use ci-images, so ghcup is used.
# Required arguments to the script
: "${GHC_VERSION:?Need to set GHC_VERSION}"
: "${CABAL_INSTALL_VERSION:?Need to set CABAL_INSTALL_VERSION}"

# If GHC is set, extract its directory and add it to PATH
# The linux images set the GHC variable to specify the location of the GHC installation.
if [[ -n "${GHC:-}" ]]; then
echo "GHC variable is set to: $GHC"
export PATH="$(dirname "$GHC"):$PATH"
else
GHC="ghc"
fi

echo "Checking toolchain versions..."

# GHC check
ghc_version_ok=false
if command -v ghc &>/dev/null; then
current_ghc_version=$(ghc --numeric-version)
if [[ "$current_ghc_version" == "$GHC_VERSION" ]]; then
ghc_version_ok=true
else
echo "Wrong GHC version: found $current_ghc_version, expected $GHC_VERSION"
fi
else
. "$CI_PROJECT_DIR/.gitlab/ghcup.sh"
echo "GHC executable '$GHC' not found on PATH"
fi

# cabal check
cabal_version_ok=false
if command -v cabal &>/dev/null; then
current_cabal_version=$(cabal --numeric-version)
if [[ "$current_cabal_version" == "$CABAL_INSTALL_VERSION" ]]; then
cabal_version_ok=true
else
echo "Wrong cabal version: found $current_cabal_version, expected $CABAL_INSTALL_VERSION"
fi
else
echo "cabal not found on PATH"
fi

# If either is wrong, install via ghcup
if ! $ghc_version_ok || ! $cabal_version_ok; then
echo "Installing correct GHC and/or cabal via ghcup..."
. "$CI_PROJECT_DIR/.gitlab/ghcup.sh"
fi

# Final verification (ghc and cabal must now be on PATH)
echo "Verifying installed versions..."

actual_ghc_version=$(ghc --numeric-version)
actual_cabal_version=$(cabal --numeric-version)

if [[ "$actual_ghc_version" != "$GHC_VERSION" ]]; then
fail "Incorrect GHC version (actual: $actual_ghc_version, expected: $GHC_VERSION)"
fi

if [[ "$actual_cabal_version" != "$CABAL_INSTALL_VERSION" ]]; then
fail "Incorrect cabal version (actual: $actual_cabal_version, expected: $CABAL_INSTALL_VERSION)"
fi

echo "Using GHC version: $actual_ghc_version"
echo "Using cabal-install version: $actual_cabal_version"

export CABAL_DIR="$CI_PROJECT_DIR/cabal"

case "$(uname)" in
Expand Down
8 changes: 4 additions & 4 deletions Cabal-QuickCheck/Cabal-QuickCheck.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 2.2
name: Cabal-QuickCheck
version: 3.17.0.0
version: 3.16.0.0
synopsis: QuickCheck instances for types in Cabal
category: Testing
build-type: Simple
Expand All @@ -14,9 +14,9 @@ library
build-depends:
, base
, bytestring
, Cabal ^>=3.17.0.0
, Cabal-syntax ^>=3.17.0.0
, QuickCheck >= 2.13.2 && < 2.17
, Cabal ^>=3.16.0.0
, Cabal-syntax ^>=3.16.0.0
, QuickCheck >= 2.13.2 && < 2.18

exposed-modules:
Test.QuickCheck.GenericArbitrary
Expand Down
6 changes: 3 additions & 3 deletions Cabal-described/Cabal-described.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 2.2
name: Cabal-described
version: 3.17.0.0
version: 3.16.0.0
synopsis: Described functionality for types in Cabal
category: Testing, Parsec
description: Provides rere bindings
Expand All @@ -12,8 +12,8 @@ library
ghc-options: -Wall
build-depends:
, base
, Cabal ^>=3.17.0.0
, Cabal-syntax ^>=3.17.0.0
, Cabal ^>=3.16.0.0
, Cabal-syntax ^>=3.16.0.0
, containers
, pretty
, QuickCheck
Expand Down
3 changes: 3 additions & 0 deletions Cabal-hooks/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Changelog for `Cabal-hooks`

## 3.16.0 – July 2025
* No changes

## 3.14.2 – April 2025
* No changes

Expand Down
8 changes: 4 additions & 4 deletions Cabal-hooks/Cabal-hooks.cabal
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cabal-version: 3.6
name: Cabal-hooks
version: 3.17
copyright: 2023, Cabal Development Team
version: 3.16
copyright: 2025, Cabal Development Team
license: BSD-3-Clause
license-file: LICENSE
author: Cabal Development Team <cabal-devel@haskell.org>
Expand All @@ -27,8 +27,8 @@ library
hs-source-dirs: src

build-depends:
, Cabal-syntax >= 3.17 && < 3.18
, Cabal >= 3.17 && < 3.18
, Cabal-syntax >= 3.16 && < 3.17
, Cabal >= 3.16 && < 3.17
, base >= 4.13 && < 5
, containers >= 0.5.0.0 && < 0.9
, transformers >= 0.5.6.0 && < 0.7
Expand Down
6 changes: 3 additions & 3 deletions Cabal-syntax/Cabal-syntax.cabal
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cabal-version: 3.6
name: Cabal-syntax
version: 3.17.0.0
copyright: 2003-2024, Cabal Development Team (see AUTHORS file)
version: 3.16.0.0
copyright: 2003-2025, Cabal Development Team (see AUTHORS file)
license: BSD-3-Clause
license-file: LICENSE
author: Cabal Development Team <cabal-devel@haskell.org>
Expand Down Expand Up @@ -40,7 +40,7 @@ library
, parsec >= 3.1.13.0 && < 3.2
, pretty >= 1.1.1 && < 1.2
, text (>= 1.2.3.0 && < 1.3) || (>= 2.0 && < 2.2)
, time >= 1.4.0.1 && < 1.15
, time >= 1.4.0.1 && < 1.16
-- transformers-0.4.0.0 doesn't have record syntax e.g. for Identity
-- See also https://github.com/ekmett/transformers-compat/issues/35
, transformers (>= 0.3 && < 0.4) || (>=0.4.1.0 && <0.7)
Expand Down
2 changes: 1 addition & 1 deletion Cabal-syntax/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.2.0.md
Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.16.0.0.md
2 changes: 1 addition & 1 deletion Cabal-tests/Cabal-tests.cabal
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cabal-version: 2.2
name: Cabal-tests
version: 3
copyright: 2003-2024, Cabal Development Team (see AUTHORS file)
copyright: 2003-2025, Cabal Development Team (see AUTHORS file)
license: BSD-3-Clause
license-file: LICENSE
author: Cabal Development Team <cabal-devel@haskell.org>
Expand Down
6 changes: 3 additions & 3 deletions Cabal-tree-diff/Cabal-tree-diff.cabal
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cabal-version: 2.2
name: Cabal-tree-diff
version: 3.17.0.0
version: 3.16.0.0
synopsis: QuickCheck instances for types in Cabal
category: Testing
description: Provides tree-diff ToExpr instances for some types in Cabal
Expand All @@ -11,8 +11,8 @@ library
ghc-options: -Wall
build-depends:
, base
, Cabal-syntax ^>=3.17.0.0
, Cabal ^>=3.17.0.0
, Cabal-syntax ^>=3.16.0.0
, Cabal ^>=3.16.0.0
, tree-diff ^>=0.1 || ^>=0.2 || ^>=0.3

exposed-modules: Data.TreeDiff.Instances.Cabal
Expand Down
8 changes: 4 additions & 4 deletions Cabal/Cabal.cabal
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cabal-version: 3.6
name: Cabal
version: 3.17.0.0
copyright: 2003-2024, Cabal Development Team (see AUTHORS file)
version: 3.16.0.0
copyright: 2003-2025, Cabal Development Team (see AUTHORS file)
license: BSD-3-Clause
license-file: LICENSE
author: Cabal Development Team <cabal-devel@haskell.org>
Expand Down Expand Up @@ -39,7 +39,7 @@ library
hs-source-dirs: src

build-depends:
, Cabal-syntax ^>= 3.17
, Cabal-syntax ^>= 3.16
, array >= 0.4.0.1 && < 0.6
, base >= 4.13 && < 5
, bytestring >= 0.10.0.0 && < 0.13
Expand All @@ -49,7 +49,7 @@ library
, filepath >= 1.3.0.1 && < 1.6
, pretty >= 1.1.1 && < 1.2
, process >= 1.2.1.0 && < 1.7
, time >= 1.4.0.1 && < 1.15
, time >= 1.4.0.1 && < 1.16

if os(windows)
build-depends:
Expand Down
3 changes: 3 additions & 0 deletions Cabal/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# 3.16.0.0 [Artem Pelenitsyn](mailto:a@pelenitsyn.top) July 2025
* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.16.0.0.md

# 3.14.2.0 [Mikolaj Konarski](mailto:mikolaj@well-typed.com) April 2025
* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.2.0.md

Expand Down
2 changes: 1 addition & 1 deletion Cabal/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION=3.15.0.0
VERSION=3.16.0.0

#KIND=devel
KIND=rc
Expand Down
2 changes: 1 addition & 1 deletion Cabal/src/Distribution/Simple/Build/PathsModule.hs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ generatePathsModule pkg_descr lbi clbi =
, Z.zIsWindows = isWindows
, Z.zIsI386 = buildArch == I386
, Z.zIsX8664 = buildArch == X86_64
, Z.zIsAarch64 = buildArch == AArch64
, Z.zIsAArch64 = buildArch == AArch64
, Z.zNot = not
, Z.zManglePkgName = showPkgName
, Z.zPrefix = show flat_prefix
Expand Down
6 changes: 3 additions & 3 deletions Cabal/src/Distribution/Simple/Build/PathsModule/Z.hs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ data Z
zIsWindows :: Bool,
zIsI386 :: Bool,
zIsX8664 :: Bool,
zIsAarch64 :: Bool,
zIsAArch64 :: Bool,
zPrefix :: FilePath,
zBindir :: FilePath,
zLibdir :: FilePath,
Expand Down Expand Up @@ -350,13 +350,13 @@ render z_root = execWriter $ do
tell " c_GetModuleFileName :: Ptr () -> CWString -> Int32 -> IO Int32\n"
return ()
else do
if (zIsAarch64 z_root)
if (zIsAArch64 z_root)
then do
tell "foreign import ccall unsafe \"windows.h GetModuleFileNameW\"\n"
tell " c_GetModuleFileName :: Ptr () -> CWString -> Int32 -> IO Int32\n"
return ()
else do
tell "-- win32 supported only with I386, X86_64, Aarch64\n"
tell "-- win32 supported only with I386, X86_64, AArch64\n"
tell "c_GetModuleFileName :: Ptr () -> CWString -> Int32 -> IO Int32\n"
tell "c_GetModuleFileName = _\n"
return ()
Expand Down
Loading
Loading