[ANN] Stack 2.9.3

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

Changes since v2.9.1:

Behavior changes:

  • In YAML configuration files, the package-index key is introduced which takes precedence over the existing package-indices key. The latter is deprecated.
  • In YAML configuration files, the hackage-security key of the package-index key or the package-indices item can be omitted, and the Hackage Security configuration for the item will default to that for the official Hackage server. See #5870.
  • Add the stack config set package-index download-prefix command to set the location of Stack’s package index in YAML configuration files.
  • stack setup with the --no-install-ghc flag warns that the flag and the command are inconsistent and now takes no action. Previously the flag was silently ignored.
  • To support the Haskell Foundation’s Haskell Error Index initiative, all Stack error messages generated by Stack itself begin with an unique code in the form [S-nnnn], where nnnn is a four-digit number.
  • Test suite executables that seek input on the standard input channel (stdin) will not throw an exception. Previously, they would thow an exception, consistent with Cabal’s ‘exitcode-stdio-1.0’ test suite interface specification. Pass the flag --no-tests-allow-stdin to stack build to enforce Cabal’s specification. See #5897

Other enhancements:

  • Help documentation for stack upgrade warns that if GHCup is used to install Stack, only GHCup should be used to upgrade Stack. That is because GHCup uses an executable named stack to manage versions of Stack, that Stack will likely overwrite on upgrade.
  • Add stack ls dependencies cabal command, which lists dependencies in the format of exact Cabal constraints.
  • Add STACK_XDG environment variable to use the XDG Base Directory Specification for the Stack root and Stack’s global YAML configuration file, if the Stack root location is not set on the command line or by using the STACK_ROOT environment variable.
  • Add stack path --global-config, to yield the full path of Stack’s user-specific global YAML configuration file (config.yaml).
  • Add an experimental option, allow-newer-deps, which allows users to specify a subset of dependencies for which version bounds should be ignored (allow-newer-deps: ['foo', 'bar']). This field has no effect unless allow-newer is enabled.

Bug fixes:

  • Fix ambiguous module name Distribution.PackageDescription, if compiling StackSetupShim with Cabal-syntax- in package database. See #5886.
  • In YAML configuration files, if the package-indices key (or the hackage-security key of its item) is omitted, the expiration of timestamps
    is now ignored, as intended. See Pantry #63

Thanks to all our contributors for this release:

  • drlkf
  • Felix Paulusma
  • Fraser Murray
  • Mike Pilgrem
  • Phil de Joux
  • theophilebatoz

Unofficial bindist for M1 is also uploaded here: Index of /ghcup/unofficial-bindists/stack/2.9.3/


I anticipate that most people will be using a more recent version of Stack for macOS/AArch64 or be using GHCup’s ‘unofficial’ version of Stack 2.9.3 for macOS/AArch64, but I have - very belatedly - added an ‘official’ version of the binary distribution to this release. The primary reason being, I’m seeking to add AArch64 to Stack’s stack upgrade function and this is a way to test it. (If you are using GHCup to manage Stack, don’t use stack upgrade.)

1 Like