[ANN] First release candidate for stack-2.9.3

You can download binaries for this pre-release from: Release rc/v2.9.2.1 (release candidate) · commercialhaskell/stack · GitHub.

Please test it and let us know at the Stack repository if you run into any trouble. If all goes well, we hope to release the final version in a couple of weeks.

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.

@mpilgrem if you don’t mind you could add those stack pre-releases to ghcup metadata, which will make them more easily available:

I’ll try to do that (add Stack pre-releases to GHCup metadata) later today. EDIT: A pull request has been made.