[ANN] Stack 3.9.1

Centered Image

See https://haskellstack.org/ for installation and upgrade instructions.

Changes since v3.7.1:

Behavior changes:

  • Where applicable and Stack supports the GHC version, only the wired-in packages of the actual version of GHC used are treated as wired-in packages.
  • Stack now recognises ghc-internal as a GHC wired-in package.
  • The configuration option package-index has a new default value: the keyids key lists the keys of the Hackage root key holders applicable from 2025-07-24.
  • Stack’s dot command now treats --depth the same way as the ls dependencies command, so that the nodes of stack dot --external --depth 0 are the same as the packages listed by stack ls dependencies --depth 0.
  • When building GHC from source, on Windows, the default Hadrian build target is reloc-binary-dist and the default path to the GHC built by Hadrian is _build/reloc-bindist.
  • Stack’s haddock command no longer requires a package to have a main library that exposes modules.
  • On Windows, the path segment platform \ hash \ ghc version, under .stack-work\install and .stack-work\hoogle, is hashed only once, rather than twice.

Other enhancements:

  • Bump to Hpack 0.39.1.
  • Consider GHC 9.14 to be a tested compiler and remove warnings.
  • Consider Cabal 3.16 to be a tested library and remove warnings.
  • From GHC 9.12.1, base is not a GHC wired-in package. In configuration files, the notify-if-base-not-boot key is introduced, to allow the exisitng notification to be muted if unwanted when using such GHC versions.
  • Add flag --[no-]omit-this (default: disabled) to Stack’s clean command to omit directories currently in use from cleaning (when --full is not specified).
  • Add option -w as synonym for --stack-yaml.
  • stack new now allows codeberg: as a service for template downloads
  • In YAML configuration files, the compiler-target and compiler-bindist-path keys are introduced to allow, when building GHC from source, the Hadrian build target and Hadrian path to the built GHC to be specified.

Bug fixes:

  • --PROG-option=<argument> passes --PROG-option=<argument> (and not --PROG-option="<argument>") to Cabal (the library).
  • The message S-7151 now presents as an error, with advice, and not as a bug.
  • Stack’s dot command now uses a box to identify all GHC wired-in packages, not just those with no dependencies (being only rts).
  • Stack’s dot command now gives all nodes with no dependencies in the graph the maximum rank, not just those nodes with no relevant dependencies at all (being only rts, when --external is specified).
  • Improved error messages for S-4634 and S-8215.
  • Improved in-app help for the --hpack-force flag.

Thanks to all our contributors for this release:

  • Alexey Kotlyarov
  • Dino Morelli
  • Jens Petersen
  • Lauren Yim
  • Mike Pilgrem
  • Olivier Benz
  • Simon Hengel
  • Wolfram Kahl
17 Likes

Unofficial Linux/RISC-V (64-bit, linux/riscv64) release assets are available at v3.9.1 · Commercial Haskell / stack · GitLab.

1 Like

The GHC musl docker manifests (linux/amd64, linux/arm64/v8) for GHC versions 9.14.1, 9.12.3, 9.10.3, 9.8.4 and 9.6.7 now include Stack version 3.9.1. Available from

Quay:

  • quay.io/benz0li/ghc-musl:9.14.1
  • quay.io/benz0li/ghc-musl:9.12.3
  • quay.io/benz0li/ghc-musl:9.10.3
  • quay.io/benz0li/ghc-musl:9.8.4
  • quay.io/benz0li/ghc-musl:9.6.7

Docker Hub :

  • docker.io/benz0li/ghc-musl:9.14.1
  • docker.io/benz0li/ghc-musl:9.12.3
  • docker.io/benz0li/ghc-musl:9.10.3
  • docker.io/benz0li/ghc-musl:9.8.4
  • docker.io/benz0li/ghc-musl:9.6.7

The manifests for GHC versions 9.14.1, 9.12.3 and 9.10.3 also include an image for linux/riscv64.

:information_source: Please be aware that these are unofficial and untested binary distributions of GHC on Alpine Linux.

5 Likes

Thanks to the GHCup project, Stack 3.9.1 is now available via that tool.

2 Likes

On 2026-02-09, GitHub-hosted runners bumped the Docker client version to 29.1.x. That has revealed that Stack 3.9.1 and earlier do not support Docker 29.0.0 or later. (Stack interprets one of Docker’s error messages, and that changed, slightly.) The Stack fix is trivial. I am planning to release Stack 3.9.3 soon, accordingly.

1 Like