# \[ANN\] Stack 2.9.3

**URL:** <https://discourse.haskell.org/t/ann-stack-2-9-3/5459>\
**Category:** Announcements\
**Created:** [December 18, 2022, 12:32am UTC](https://discourse.haskell.org/t/ann-stack-2-9-3/5459 "2022-12-18T00:32:40Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)\
**Post date:** [December 18, 2022, 12:32am UTC](https://discourse.haskell.org/t/ann-stack-2-9-3/5459/1 "2022-12-18T00:32:40Z")

</div>

See [https://haskellstack.org/](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](https://github.com/commercialhaskell/stack/issues/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](https://errors.haskell.org/) 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](https://github.com/commercialhaskell/stack/issues/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-3.8.1.0` in package database. See [#5886](https://github.com/commercialhaskell/stack/pull/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](https://github.com/commercialhaskell/pantry/pull/63)

**Thanks to all our contributors for this release:**

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

---

<div class="post-metadata">

**Author:** ![hasufell](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/hasufell/32/1250_2.png) [@hasufell](https://discourse.haskell.org/u/hasufell)\
**Post date:** [December 18, 2022, 3:19am UTC](https://discourse.haskell.org/t/ann-stack-2-9-3/5459/2 "2022-12-18T03:19:12Z")

</div>

> <https://github.com/haskell/ghcup-metadata/commit/22867158fababb743738c6469b5feb17187072de>

Unofficial bindist for M1 is also uploaded here: [Index of /ghcup/unofficial-bindists/stack/2.9.3/](https://downloads.haskell.org/~ghcup/unofficial-bindists/stack/2.9.3/)

---

<div class="post-metadata">

**Author:** ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)\
**Post date:** [September 28, 2023, 8:19pm UTC](https://discourse.haskell.org/t/ann-stack-2-9-3/5459/3 "2023-09-28T20:19:49Z")

</div>

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`.)
