ANN: stack-2.11.1

See for installation and upgrade instructions.

Changes since v2.9.3:

Behavior changes:

  • Add flag --[no-]-only-local-bin to Stack’s upgrade command for a binary upgrade. If the Stack executable is my-stack, the default is my-stack upgrade --only-local-bin where previously it was, effectively, my-stack upgrade --no-only-local-bin. If the Stack executable is stack, the default is stack upgrade --no-only-local-bin, the same behaviour as previously.
  • Use $XDG_CACHE_HOME/stack/ghci-script, rather than <temp>/haskell-stack-ghci (where <temp> is the directory yielded by the temporary package’s System.IO.Temp.getCanonicalTemporaryDirectory), as the base location for GHCi script files generated by stack ghci or stack repl. See #5203
  • Drop support for Cabal versions before 1.22 and, consequently, GHC versions before 7.10.
  • stack ghci and stack repl now take into account the values of default-language keys in Cabal files, like they take into account the values of default-extensions keys.
  • Removed --ghc-paths, --global-stack-root and --local-bin-path flags for stack path, deprecated in Stack 1.1.0 in favour of --programs, --stack-root and local-bin respectively.
  • On Windows, stack upgrade always renames the file of the running Stack executable (adding extension .old) before attempting to write to the original file name.
  • On Windows, stack upgrade does not offer sudo command alternatives if attempting to write to the original file name of the running Stack exectuable results in a ‘Permission’ error.

Other enhancements:

  • Add options of the form --PROG-option=<argument> to stack build, where PROG is a program recognised by the Cabal library and one of alex, ar, c2hs, cpphs, gcc, greencard, happy, hsc2hs, hscolour, ld, pkg-config, strip and tar. If Cabal uses the program during the configuration step, the argument is passed to it.
  • By default all --PROG-option options are applied to all local packages. This behaviour can be changed with new configuration option apply-prog-options.
  • Add flag --[no-]use-root to stack script (default disabled). Used with --compile or --optimize, when enabled all compilation outputs (including the executable) are written to a script-specific location in the scripts directory of the Stack root rather than the script’s directory, avoiding clutter of the latter directory.
  • Better error message if the value of the STACK_WORK environment variable or --work-dir option is not a valid relative path.
  • Stack will use the value of the GH_TOKEN, or GITHUB_TOKEN, environment variable as credentials to authenticate its GitHub REST API requests.
  • stack uninstall also shows how to uninstall Stack-supplied tools.

Bug fixes:

  • Fix incorrect warning if allow-newer-deps are specified but allow-newer is false. See #6068.
  • stack build with --file-watch or --file-watch-poll outputs ‘pretty’ error messages, as intended. See #5978.
  • stack build unregisters any local packages for the sub libraries of a local package that is to be unregistered. See #6046.
  • The warning that sublibrary dependency is not supported is no longer triggered by internal libraries.

Thanks to all our contributors for this release:

  • Chris Wendt
  • Illia Bobyr
  • Jens Petersen
  • Max Taldykin
  • MaxHearnden
  • Mike Pilgrem
  • Phil de Joux
  • theophilebatoz

Thank you Mike and all contributors!

unofficial darwin M1 and FreeBSD bindists are here: Index of /ghcup/unofficial-bindists/stack/2.11.1/

Added to ghcup metadata: Comparing 13fad50ca228e0b51a0c32cb13f26b123cfa4a40^..d7d93a8 · haskell/ghcup-metadata · GitHub


I anticipate that most macOS/AArch64 users of Stack 2.11.1 are relying on GHCup’s ‘unofficial’ binary distribution. Belatedly, thanks to guidance from @hasufell, an ‘official’ macOS/AArch64 Stack 2.11.1 has been added to the release.