Skip to content

Comments

ghc: 9.8.4 -> 9.10.3; Stackage LTS: 23.27 -> 24.9#429810

Merged
sternenseemann merged 270 commits intostagingfrom
haskell-updates
Sep 20, 2025
Merged

ghc: 9.8.4 -> 9.10.3; Stackage LTS: 23.27 -> 24.9#429810
sternenseemann merged 270 commits intostagingfrom
haskell-updates

Conversation

@sternenseemann
Copy link
Member

@sternenseemann sternenseemann commented Jul 31, 2025

This Merge

This PR is the regular merge of the haskell-updates branch into staging. This time we are upgrading our default GHC version from the 9.8 to the 9.10 series and Stackage LTS from 23 to 24 to match.

This branch is being continually built and tested by hydra at https://hydra.nixos.org/jobset/nixpkgs/haskell-updates. You may be able to find an up-to-date Hydra build report at cdepillabout/nix-haskell-updates-status.

A Stackage/default compiler upgrade is a big job, so we hope for contributions from outside the core @NixOS/haskell team. Try checking for the state of your favorite packages on Hydra and attempt to fix regressions.

haskellPackages Workflow Summary

Our workflow is currently described in pkgs/development/haskell-modules/HACKING.md.

The short version is this:

  • We regularly update the Stackage and Hackage pins on haskell-updates (normally at the beginning of a merge window).
  • The community fixes builds of Haskell packages on that branch.
  • We aim at at least one merge of haskell-updates into staging every two weeks.
  • We only do the merge if the mergeable job is succeeding on hydra.
  • If a maintained package is still broken at the time of merge, we will only merge if the maintainer has been pinged 7 days in advance. (If you care about a Haskell package, become a maintainer!)

More information about Haskell packages in nixpkgs can be found in the nixpkgs manual.


This is the follow-up to #424162. Come to #haskell:nixos.org if you have any questions.

sternenseemann and others added 12 commits July 30, 2025 12:32
All these packages are the default from Stackage now, curiously even the
ghc-* packages that have >= 9.12 versions.
cabal2nix-unstable is mostly used for regenerating the Haskell package
set. Thus we should aim to make it quick to rebuild in case its hash
changes because of Haskell related changes.

- cabal2nix is not fussy about the Nix version it uses for nix-env(1)
  and we can just assume it is already in PATH like we do for
  maintainers/scripts/haskell/*.

- nix-prefetch-scripts causes the most trouble since its python
  dependencies depend on pandoc, so many Haskell changes require
  an additional Python rebuild when building cabal2nix-unstable.

  nix-prefetch-scripts is most likely installed and not necessary in
  many cases, e.g. hackage2nix doesn't need them which is the main use
  we have for cabal2nix-unstable. For the update scripts that do need
  them, we add them to the used nix-shell explicitly.
It is pretty much impossible to get os-string to work with GHC < 9.2
since it has a hard dependency on bytestring >= 0.11 which only GHC 9.2
started to ship.
This matches what Stackage LTS 23 and thus we were using with GHC < 9.10
before: https://www.stackage.org/lts-23/package/os-string

This is actually not ideal since these GHC versions also ship versions
of filepath that may have module collisions with os-string, so using
os-string-1.0.0 (like for GHC < 9.2) would be better in some situations.
Unfortunately, it looks like the OsPath/os-string transition wasn't
completely thought through and e.g. hashable-1.4.7.0 (which we were also
using with Stackage LTS 23) has a hard dependency on os-string for
GHC >= 9.2, so we don't have much of a choice here.

The combination of a dependency on filepath and os-string doesn't seem
to be super common thus far, but down the line we may have trouble
getting such packages to work with GHC < 9.10 && >= 9.2.
This matches what we wer doing for Stackage LTS 23 with GHC < 9.10:
https://www.stackage.org/lts-23/package/hashable

hashable-1.5.0.0 introduced a hard dependency on base >= 4.18 which
means GHC >= 9.6 is required. Upstream promises that hashable == 1.4.*
will continue being maintained “for the time being”:
https://github.com/haskell-unordered-containers/hashable/blob/master/CHANGES.md#version-1500
@nixpkgs-ci nixpkgs-ci bot added the 2.status: merge conflict This PR has merge conflicts with the target branch label Jul 31, 2025
@sternenseemann

This comment was marked as resolved.

@sternenseemann
Copy link
Member Author

sternenseemann commented Aug 1, 2025

Regressions due to QuickCheck ≥ 2.15

(so far)

@nixpkgs-ci nixpkgs-ci bot added the 2.status: merge conflict This PR has merge conflicts with the target branch label Sep 17, 2025
@sternenseemann
Copy link
Member Author

sternenseemann commented Sep 18, 2025

haskell-updates build report from hydra

evaluation 1818580 of nixpkgs commit 9379fa4 as of 2025-09-18 12:12 UTC

🔴 Branch not mergeable

  • No mergeable job found.
  • No maintained job found.

Build summary

Platform Failed ❌ DependencyFailed ❗ HydraFailure 🚧 Unfinished ⏳ Success ✅
x86_64-linux 🐧 328 149 1 2 7029

Maintained Linux packages with build failure

Maintained Linux packages with failed dependency

Unmaintained packages with build failure

329 job(s)

Unmaintained packages with failed dependency

152 job(s)

Top 50 broken packages, sorted by number of reverse dependencies

50 job(s)

haskell98 ⤴️ 152
failure ⤴️ 72
enumerator ⤴️ 56
connection ⤴️ 49
util ⤴️ 49
derive ⤴️ 48
fclabels ⤴️ 47
syb-with-class ⤴️ 42
MonadCatchIO-transformers ⤴️ 41
TypeCompose ⤴️ 41
PrimitiveArray ⤴️ 35
crypto-random ⤴️ 35
dual ⤴️ 32
hsp ⤴️ 32
language-ecmascript ⤴️ 31
iteratee ⤴️ 29
composite-base ⤴️ 28
regexpr ⤴️ 27
text-format ⤴️ 27
crypto-numbers ⤴️ 25
either-unwrap ⤴️ 25
Crypto ⤴️ 22
crypto-pubkey ⤴️ 22
haskelldb ⤴️ 22
wxdirect ⤴️ 22
BiobaseTypes ⤴️ 21
alg ⤴️ 21
hw-rankselect-base ⤴️ 21
libxml-sax ⤴️ 21
wxc ⤴️ 21
biocore ⤴️ 20
hw-excess ⤴️ 20
reform ⤴️ 20
wxcore ⤴️ 20
attoparsec-enumerator ⤴️ 19
cprng-aes ⤴️ 19
fay ⤴️ 19
hsx2hs ⤴️ 19
hw-balancedparens ⤴️ 19
ixset ⤴️ 19
mmsyn2 ⤴️ 19
wx ⤴️ 19
BiobaseENA ⤴️ 18
asn1-data ⤴️ 18
bytestring-show ⤴️ 18
dbus-core ⤴️ 18
digit ⤴️ 18
gtksourceview2 ⤴️ 18
hw-rankselect ⤴️ 18
wrapped ⤴️ 18

⤴️: The number of packages that depend (directly or indirectly) on this package (if any). If two numbers are shown the first (lower) number considers only packages which currently have enabled hydra jobs, i.e. are not marked broken. The second (higher) number considers all packages.

Report generated with maintainers/scripts/haskell/hydra-report.hs

@nixpkgs-ci nixpkgs-ci bot removed the 2.status: merge conflict This PR has merge conflicts with the target branch label Sep 18, 2025
@wolfgangwalther
Copy link
Contributor

@berberman
Copy link
Member

Just fixed nvfetcher. I'll release a new version with some other changes later, but for now, should I do a hackage revision immediately?

@sternenseemann
Copy link
Member Author

Both revision and new release would work for nvfetcher.

nixpkgs-ci bot and others added 7 commits September 19, 2025 00:20
This seems the best course of action: We are still only performing a
non-breaking update compared to Stackage LTS (which will fix a few
builds) while being able to execute the test suite.

haskellPackages.ghc-tcplugins-extra: 0.4.8 -> 0.5

ghc-typelits-natnormalise requires >= 0.5 since 0.7.11. It does not
look like the 0.5 update actually contains a breaking changes, so
this update is probably safe:

clash-lang/ghc-tcplugins-extra#29 (comment)
clash-lang/ghc-tcplugins-extra@702dda2...v0.5.0
Created with mark-broken.sh
@sternenseemann sternenseemann marked this pull request as ready for review September 20, 2025 21:03
@sternenseemann sternenseemann merged commit f02201c into staging Sep 20, 2025
37 checks passed
@nixos-discourse
Copy link

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/call-for-contributions-we-are-updating-to-ghc-9-10-3/67756/6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4.workflow: package set update Development branch for package set updates (haskell/python) 6.topic: haskell General-purpose, statically typed, purely functional programming language 10.rebuild-darwin: 501+ This PR causes many rebuilds on Darwin and should normally target the staging branches. 10.rebuild-darwin: 5001+ This PR causes many rebuilds on Darwin and must target the staging branches. 10.rebuild-linux: 501+ This PR causes many rebuilds on Linux and should normally target the staging branches. 10.rebuild-linux: 5001+ This PR causes many rebuilds on Linux and must target the staging branches.

Projects

None yet

Development

Successfully merging this pull request may close these issues.