Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
e727299
release: Bump boot compiler for release to 9.10.2
mpickering Jul 2, 2025
976e0f9
Update platforms for release jobs
mpickering Jul 2, 2025
34e7e62
add paragraph mentioning stackage
L0neGamer Jun 25, 2025
d2db2d0
add some discussion of import config limitations
L0neGamer Jun 25, 2025
0436a81
Update doc/nix-local-build.rst
L0neGamer Jul 2, 2025
ca7a938
Check the GHC and cabal-install version which are used to build the r…
mpickering Jul 2, 2025
50b287b
Merge pull request #11032 from haskell/wip/mp/release-boot-compiler
mergify[bot] Jul 3, 2025
03fe894
missed version bumps
geekosaur Jul 3, 2025
81200ad
Merge pull request #11018 from L0neGamer/import-stackage-doc
mergify[bot] Jul 4, 2025
d968909
Merge pull request #11038 from geekosaur/r3.16-C.3.1a-missed-files
mergify[bot] Jul 5, 2025
e5a9144
adjust Mergify queue rules for release branches
geekosaur Jul 3, 2025
8bd0d51
Merge pull request #11039 from geekosaur/mergify-wrong-queue
mergify[bot] Jul 6, 2025
aecf41e
Refactor cabal-install solver config log output
yvan-sraka Jun 27, 2025
48c2d4c
Capitalise “AArch” properly
ffaf1 Jul 6, 2025
5e1fd2a
Merge pull request #10854 from erikd/erikd/cosmetic-changes-2
mergify[bot] Jul 8, 2025
7d6a46e
Cabal-3.14.1.0 release notes minor fix: dedup "Other Changes" header
ulysses4ever Jul 8, 2025
0278910
Merge pull request #11047 from ffaf1/aarch-capitalise
mergify[bot] Jul 9, 2025
47d24df
Allow relocatable builds on FreeBSD
hasufell Jul 4, 2025
b8efb93
Merge pull request #11042 from hasufell/issue-11034-2
mergify[bot] Jul 9, 2025
7f494c2
missed all the copyrights in the cabal files
geekosaur Jul 10, 2025
3f47625
Merge pull request #11061 from geekosaur/r3.16-missed-copyrights
mergify[bot] Jul 10, 2025
6f6b2c8
Add proposals.md document which explains the proposal process (#11006)
mpickering Jul 10, 2025
452eead
Add 3.16 changelogs (#11033)
ffaf1 Jul 8, 2025
7af1389
Merge pull request #11051 from haskell/ulysses4ever-patch-3
mergify[bot] Jul 10, 2025
a49146a
cabal update: don't show comment with builddir in the default config
ulysses4ever Jul 11, 2025
3f3e209
Merge pull request #11065 from ffaf1/changelogs-3.16-for-master
mergify[bot] Jul 12, 2025
9a343d1
Merge pull request #11067 from haskell/dont-mention-builddir-in-defau…
mergify[bot] Jul 13, 2025
500505c
Add test
sergv Jun 18, 2025
2317a67
Rearrange genPureArgs for hsc2hs without changing semantics
sergv Jun 19, 2025
c917edc
Deduplicate arguments that hsc2hs passes to gcc and ld
sergv Jun 19, 2025
e38f45d
Add changelog
sergv Jun 19, 2025
c3b3b82
Override C compiler for testing that no duplicate arguments are passed
sergv Jun 19, 2025
20460e9
Fix typo exsting
philderbeast Jul 16, 2025
cfbe545
Merge pull request #11005 from sergv/deduplicate-hsc2hs-args
mergify[bot] Jul 17, 2025
6205b02
Merge pull request #11076 from cabalism/typo/exsting
mergify[bot] Jul 19, 2025
a6e4162
Bump counts with hlint-3.8
philderbeast Jul 18, 2025
46099cf
Typo, seach, in comment
philderbeast Jul 20, 2025
e55b866
Bump to hlint-3.10
philderbeast Jul 18, 2025
86c7153
Replace cabal project parsing with parsec implementation
jgotoh May 31, 2024
9a67ecc
Merge pull request #11081 from cabalism/typo/seach
mergify[bot] Jul 22, 2025
f548cef
Error messages: Tweak how parse errors from parsec parser are displayed
mpickering Jul 22, 2025
7daa882
Merge pull request #11082 from cabalism/bump/hlint-3.10
mergify[bot] Jul 22, 2025
8c46f48
CI: add GHC 8.6.5 to validate-old-ghcs
ulysses4ever Jul 15, 2025
6d6fc4c
Merge pull request #11074 from haskell/ulysses4ever-patch-3
mergify[bot] Jul 22, 2025
6c14a45
Mark Terminate package test as flaky wrt #11087
hasufell Jul 22, 2025
cf306c9
Typo in Makefile .PHONY target
philderbeast Jul 23, 2025
c7f6b50
Add Tikhon's key
jmct Jul 23, 2025
bcc974e
Remove Mathieu's key
jmct Jul 23, 2025
3a36880
Update Changelog for PR #11095
jmct Jul 23, 2025
0ea75fe
Merge pull request #8889 from jgotoh/parse-cabal-project-parsec
mergify[bot] Jul 25, 2025
d69248a
Merge pull request #11094 from cabalism/typo/rountrip
mergify[bot] Jul 25, 2025
621c92b
work around git locking issue on Windows
geekosaur Jul 25, 2025
671bee6
Merge pull request #11095 from jmct/master
mergify[bot] Jul 26, 2025
f2718c7
Merge pull request #11105 from geekosaur/windows-git-lock-fix
mergify[bot] Jul 26, 2025
20ddb99
Merge pull request #11088 from stable-haskell/flaky-11087
mergify[bot] Jul 27, 2025
ad989af
Typos in release script comments
philderbeast Jul 27, 2025
598b322
Skip T5634 on Alpine
hasufell Jul 7, 2025
27593dc
Merge pull request #11110 from cabalism/typos/release-binaries
mergify[bot] Jul 29, 2025
2fb8dd4
Fix typo folowing
philderbeast Jul 29, 2025
7b67d02
Follow hlint suggestions with single counts
philderbeast Jul 23, 2025
ac75d6a
Merge pull request #11112 from geekosaur/alpine-test-fail
mergify[bot] Jul 31, 2025
e97d042
Merge pull request #11113 from cabalism/typo/folowing
mergify[bot] Jul 31, 2025
9b26df8
Merge pull request #11093 from cabalism/hlint/onesies
mergify[bot] Aug 2, 2025
ad38164
Bump time upper bound
bgamari Aug 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 7 additions & 7 deletions .github/mergify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,20 @@ priority_rules:
- name: priority for queue `default`
conditions:
- queue-name=default
priority: 2750
priority: 2500

- name: priority for queue `squash-merge`
conditions:
- queue-name=squash-merge
priority: 2750
priority: 2500

# The idea is we slightly prioritize those PRs because we're in
# a release cycle if a PR matches.
- name: release branch
conditions:
- 'base~=^3\.'
- 'label!=backport'
priority: 2800
priority: 2750

pull_request_rules:

Expand Down Expand Up @@ -142,7 +142,7 @@ pull_request_rules:
conditions:
- label=merge me
- base!=master
- -body~=backport
- -label=backport
- '#approved-reviews-by>=2'
- '-label~=^blocked:'

Expand All @@ -154,7 +154,7 @@ pull_request_rules:
conditions:
- base!=master
- label=squash+merge me
- -body~=backport
- -label=backport
- '#approved-reviews-by>=2'
- '-label~=^blocked:'

Expand All @@ -166,7 +166,7 @@ pull_request_rules:
conditions:
- label=merge me
- base!=master
- body~=backport
- label=backport
- '#approved-reviews-by>=1'
- '-label~=^blocked:'

Expand All @@ -178,7 +178,7 @@ pull_request_rules:
conditions:
- label=squash+merge me
- base!=master
- body~=backport
- label=backport
- '#approved-reviews-by>=1'
- '-label~=^blocked:'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
- uses: actions/checkout@v4
- uses: haskell-actions/hlint-setup@v2
with:
version: "3.8"
version: "3.10"
- uses: haskell-actions/hlint-run@v2
with:
path: "."
Expand Down
21 changes: 13 additions & 8 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 @@ -55,13 +55,13 @@ jobs:
- { os: windows-latest, shell: "C:/msys64/usr/bin/bash.exe -e {0}" }
- { os: ubuntu-22.04, shell: bash }
- { os: macos-latest, shell: bash }
# If you remove something from here, then add it to the old-ghcs job.
# Also a removed GHC from here means that we are actually dropping
# support, so the PR *must* have a changelog entry.
ghc:
[
# IMPORTANT: If you remove a version from this list, then add it to the old-ghcs job below.
# Also a removed GHC from here means that we are actually dropping
# support, so the PR *must* have a changelog entry.
"9.12.2",
"9.10.1",
"9.10.2",
"9.8.4",
"9.6.7",
"9.4.8",
Expand Down Expand Up @@ -143,6 +143,11 @@ jobs:
key: ${{ runner.os }}-${{ matrix.ghc }}-${{ github.sha }}
restore-keys: ${{ runner.os }}-${{ matrix.ghc }}-

- name: "Work around git problem https://bugs.launchpad.net/ubuntu/+source/git/+bug/1993586 (cabal PR #8546)"
# alternatively, use 'continue-on-error: true'
if: runner.os != 'Windows'
run: git config --global protocol.file.allow always

# The tool is not essential to the rest of the test suite. If
# hackage-repo-tool is not present, any test that requires it will
# be skipped.
Expand Down Expand Up @@ -251,7 +256,7 @@ jobs:
strategy:
matrix:
extra-ghc:
["8.4.4", "8.2.2", "8.0.2"]
["8.6.5", "8.4.4", "8.2.2", "8.0.2"]
## GHC 7.10.3 does not install on ubuntu-22.04 with ghcup.
## Older GHCs are not supported by ghcup in the first place.
fail-fast: false
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
63 changes: 22 additions & 41 deletions .hlint.yaml
Original file line number Diff line number Diff line change
@@ -1,70 +1,56 @@
# Warnings currently triggered by your code
- ignore: {name: "Avoid NonEmpty.unzip"} # 1 hint
- ignore: {name: "Avoid lambda"} # 47 hints
- ignore: {name: "Avoid lambda"} # 50 hints
- ignore: {name: "Avoid lambda using `infix`"} # 23 hints
- ignore: {name: "Eta reduce"} # 124 hints
- ignore: {name: "Eta reduce"} # 136 hints
- ignore: {name: "Evaluate"} # 10 hints
- ignore: {name: "Functor law"} # 10 hints
- ignore: {name: "Fuse concatMap/map"} # 3 hints
- ignore: {name: "Fuse foldr/map"} # 3 hints
- ignore: {name: "Fuse mapMaybe/map"} # 1 hint
- ignore: {name: "Fuse traverse_/fmap"} # 1 hint
- ignore: {name: "Fuse traverse_/map"} # 1 hint
- ignore: {name: "Hoist not"} # 16 hints
- ignore: {name: "Missing NOINLINE pragma"} # 1 hint
- ignore: {name: "Monoid law, left identity"} # 3 hints
- ignore: {name: "Monoid law, right identity"} # 3 hints
- ignore: {name: "Move filter"} # 4 hints
- ignore: {name: "Move guards forward"} # 4 hints
- ignore: {name: "Redundant $"} # 178 hints
- ignore: {name: "Redundant $"} # 202 hints
- ignore: {name: "Redundant $!"} # 1 hint
- ignore: {name: "Redundant <$>"} # 16 hints
- ignore: {name: "Redundant =="} # 1 hint
- ignore: {name: "Redundant bracket"} # 240 hints
- ignore: {name: "Redundant fmap"} # 1 hint
- ignore: {name: "Redundant <$>"} # 18 hints
- ignore: {name: "Redundant bracket"} # 274 hints
- ignore: {name: "Redundant guard"} # 2 hints
- ignore: {name: "Redundant if"} # 6 hints
- ignore: {name: "Redundant lambda"} # 19 hints
- ignore: {name: "Redundant maybe"} # 2 hints
- ignore: {name: "Redundant multi-way if"} # 1 hint
- ignore: {name: "Redundant return"} # 9 hints
- ignore: {name: "Replace case with fromMaybe"} # 6 hints
- ignore: {name: "Redundant return"} # 10 hints
- ignore: {name: "Replace case with fromMaybe"} # 4 hints
- ignore: {name: "Replace case with maybe"} # 10 hints
- ignore: {name: "Use $>"} # 5 hints
- ignore: {name: "Use ++"} # 4 hints
- ignore: {name: "Use :"} # 30 hints
- ignore: {name: "Use :"} # 28 hints
- ignore: {name: "Use <$"} # 2 hints
- ignore: {name: "Use <$>"} # 87 hints
- ignore: {name: "Use <&>"} # 14 hints
- ignore: {name: "Use <$>"} # 88 hints
- ignore: {name: "Use <&>"} # 16 hints
- ignore: {name: "Use <=<"} # 4 hints
- ignore: {name: "Use =<<"} # 7 hints
- ignore: {name: "Use =="} # 3 hints
- ignore: {name: "Use >=>"} # 3 hints
- ignore: {name: "Use ?~"} # 1 hint
- ignore: {name: "Use Down"} # 3 hints
- ignore: {name: "Use Just"} # 2 hints
- ignore: {name: "Use bimap"} # 7 hints
- ignore: {name: "Use camelCase"} # 98 hints
- ignore: {name: "Use catMaybes"} # 3 hints
- ignore: {name: "Use camelCase"} # 96 hints
- ignore: {name: "Use catMaybes"} # 4 hints
- ignore: {name: "Use concatMap"} # 2 hints
- ignore: {name: "Use const"} # 36 hints
- ignore: {name: "Use const"} # 37 hints
- ignore: {name: "Use elem"} # 2 hints
- ignore: {name: "Use first"} # 4 hints
- ignore: {name: "Use fmap"} # 25 hints
- ignore: {name: "Use first"} # 5 hints
- ignore: {name: "Use fmap"} # 24 hints
- ignore: {name: "Use fold"} # 1 hint
- ignore: {name: "Use for"} # 1 hint
- ignore: {name: "Use forM_"} # 1 hint
- ignore: {name: "Use fromMaybe"} # 4 hints
- ignore: {name: "Use fromRight"} # 1 hint
- ignore: {name: "Use fst"} # 1 hint
- ignore: {name: "Use if"} # 2 hints
- ignore: {name: "Use fromMaybe"} # 5 hints
- ignore: {name: "Use fst"} # 2 hints
- ignore: {name: "Use infix"} # 20 hints
- ignore: {name: "Use isAsciiLower"} # 2 hints
- ignore: {name: "Use isAsciiUpper"} # 2 hints
- ignore: {name: "Use isDigit"} # 2 hints
- ignore: {name: "Use isJust"} # 1 hint
- ignore: {name: "Use isNothing"} # 1 hint
- ignore: {name: "Use lambda-case"} # 55 hints
- ignore: {name: "Use lefts"} # 1 hint
- ignore: {name: "Use lambda-case"} # 58 hints
- ignore: {name: "Use list comprehension"} # 19 hints
- ignore: {name: "Use list literal"} # 3 hints
- ignore: {name: "Use list literal pattern"} # 11 hints
Expand All @@ -73,24 +59,19 @@
- ignore: {name: "Use mapMaybe"} # 13 hints
- ignore: {name: "Use max"} # 2 hints
- ignore: {name: "Use maybe"} # 8 hints
- ignore: {name: "Use minimumBy"} # 1 hint
- ignore: {name: "Use newtype instead of data"} # 26 hints
- ignore: {name: "Use newtype instead of data"} # 31 hints
- ignore: {name: "Use notElem"} # 9 hints
- ignore: {name: "Use null"} # 2 hints
- ignore: {name: "Use record patterns"} # 16 hints
- ignore: {name: "Use replicateM"} # 1 hint
- ignore: {name: "Use replicateM_"} # 2 hints
- ignore: {name: "Use rights"} # 2 hints
- ignore: {name: "Use second"} # 7 hints
- ignore: {name: "Use section"} # 17 hints
- ignore: {name: "Use traverse"} # 1 hint
- ignore: {name: "Use section"} # 18 hints
- ignore: {name: "Use tuple-section"} # 28 hints
- ignore: {name: "Use typeRep"} # 2 hints
- ignore: {name: "Use uncurry"} # 1 hint
- ignore: {name: "Use unless"} # 22 hints
- ignore: {name: "Use unless"} # 23 hints
- ignore: {name: "Use unwords"} # 8 hints
- ignore: {name: "Use void"} # 23 hints
- ignore: {name: "Use when"} # 1 hint

- arguments:
- --ignore-glob=Cabal-syntax/src/Distribution/Fields/Lexer.hs
Expand Down
Loading