packages feed

stack 3.9.1 → 3.9.3

raw patch · 26 files changed

+4637/−122 lines, 26 files

Files

ChangeLog.md view
@@ -1,5 +1,22 @@ # Changelog
 
+## v3.9.3 - 2026-02-19
+
+Release notes:
+
+* This release fixes a potential bug for users of Stack's Docker integration.
+
+**Changes since v3.9.1:**
+
+Other enhancements:
+
+* The `resolver` synonym for `snapshot`, informally deprecated from Stack 3.1.1,
+  is formally deprecated in online and in-app documentation.
+
+Bug fixes:
+
+* Stack's Docker integration supports Docker client versions 29.0.0 and greater.
+
 ## v3.9.1 - 2026-01-04
 
 **Changes since v3.7.1:**
cabal.config view
@@ -176,7 +176,7 @@   , silently ==1.2.5.4
   , split ==0.2.5
   , splitmix ==0.1.3.1
-  , stack ==3.9.1
+  , stack ==3.9.3
   , static-bytes ==0.1.1
   , stm ==2.5.3.1
   , stm-chans ==3.0.0.9
doc/CONTRIBUTING.md view
@@ -1,1 +1,872 @@-../CONTRIBUTING.md+# Contributors Guide
+
+Thank you for considering contributing to the maintenance or development of
+Stack, or otherwise supporting users of Stack! We hope that the following
+information will encourage and assist you. We start with some advice about
+Stack's goals and governance, and approach to supporting users.
+
+## Stack's goals
+
+Stack's current goals are:
+
+* To provide easy to use tooling for Haskell development
+* To provide complete support for at least the following three development
+  environments: Linux, macOS, and Windows
+* To address the needs of industrial users, open source maintainers, and other
+  people
+* To focus on the 'curated package set' use case
+* To prioritize reproducible build plans
+
+The goals above are not set in stone. However, any major changes to them
+should involve significant public discussion and a public vote by the Stack
+maintainer team.
+
+## Stack's governance
+
+People involved in maintaining or developing Stack with rights to make commits
+to the repository can be classified into two groups: 'committers' and
+'maintainers'.
+
+### Stack's committers
+
+We encourages a wide range of people to be granted rights to make commits to the
+repository.
+
+People are encouraged to take initiative to make non-controversial
+changes, such as documentation improvements, bug fixes, performance
+improvements, and feature enhancements.
+
+Maintainers should be included in discussions of controversial changes and
+tricky code changes.
+
+Our general approach is **"it is easier to ask forgiveness than permission"**.
+If there is ever a bad change, it can always be rolled back.
+
+### Stack's maintainers
+
+Stack's maintainers are long-term contributors to the project. Michael Snoyman
+(@snoyberg) was the founder of Stack, and its initial maintainer - and he has
+added others. Michael's current interests and priorities mean that he is no
+longer actively involved in adding new features to Stack.
+
+Maintainers are recognized for their contributions including:
+
+* Direct code contribution
+* Review of pull requests
+* Interactions on the GitHub issue tracker
+* Documentation management
+* External support - for example, hosting or training
+
+The maintainer team make certain decisions when that is necessary, specifically:
+
+* How to proceed, if there is disagreement on how to do so on a specific topic
+* Whether to add or remove (see further below) a maintainer
+
+Generally, maintainers are only removed due to non-participation or actions
+unhealthy to the project. Removal due to non-participation is not a punishment,
+simply a recognition that maintainership is for active participants only.
+
+We hope that removal due to unhealthy actions will never be necessary, but would
+include protection for cases of:
+
+* Disruptive behavior in public channels related to Stack
+* Impairing the codebase through bad commits/merges
+
+Like committers, maintainers are broadly encouraged to make autonomous
+decisions. Each maintainer is empowered to make a unilateral decision. However,
+maintainers should favor getting consensus first if:
+
+* They are uncertain what is the best course of action
+* They anticipate that other maintainers or users of Stack will disagree on the
+  decision
+
+## Stack's support
+
+A large part of the general discussion around Stack is on support-related
+topics, and that is reflected in the current issue tracker content. Assistance
+in responding to such matters is greatly appreciated.
+
+While support-related matters can be posted here as an 'issue', we encourage the
+use of other forums, in particular the
+[Haskell Community](https://discourse.haskell.org/) forum. See its 'Learn'
+category. We also recommend that forum for general discussions about Stack's
+current or desired features.
+
+Stack is also discussed:
+
+* in the Haskell
+  [Stack and Stackage](https://matrix.to/#/#haskell-stack:matrix.org) room
+  (address `#haskell-stack:matrix.org`) on [Matrix](https://matrix.org/); and
+
+* on Reddit's [Haskell community](https://www.reddit.com/r/haskell/).
+
+We encourage use of those other forums because support-related discussions can
+clog up the issue tracker and make it more difficult to maintain the project.
+People needing support may also get a faster and fuller response on other
+forums.
+
+Additions to the issue tracker are better suited to concrete feature proposals,
+bug reports, and other code base discussions (for example, refactorings).
+
+## Bug Reports
+
+Please [open an issue](https://github.com/commercialhaskell/stack/issues/new)
+and use the provided template to include all necessary details.
+
+The more detailed your report, the faster it can be resolved and will ensure it
+is resolved in the right way. Once your bug has been resolved, the responsible
+person will tag the issue as _Needs confirmation_ and assign the issue back to
+you. Once you have tested and confirmed that the issue is resolved, close the
+issue. If you are not a member of the project, you will be asked for
+confirmation and we will close it.
+
+## Documentation
+
+Consistent with its goal of being easy to use, Stack aims to maintain a high
+quality of in-tool and online documentation.
+
+The in-tool documentation includes the output when the `--help` flag is
+specified and the content of Stack's warning and error messages.
+
+When drafting documentation it is helpful to have in mind the intended reader
+and what they are assumed to know, and not know, already. In that regard,
+documentation should aim to meet, at least, the needs of a person who is about
+to begin to study computing as an undergraduate but who has not previously
+coded using Haskell. That person may be familiar with one popular operating
+system but may not be familiar with others.
+
+The files which make up Stack's online documentation are located in the `doc`
+directory of the repository. They are formatted in the
+[Markdown syntax](https://daringfireball.net/projects/markdown/), with some
+extensions.
+
+Those files are rendered on [haskellstack.org](http://haskellstack.org) by
+[Read the Docs](https://readthedocs.org/) using
+[MkDocs](https://www.mkdocs.org/) and the
+[Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) theme. The
+`stable` branch of the repository provides the 'stable' version of the online
+documentation. The `master` branch provides the 'latest' version of the
+documentation.
+
+The 'stable' version of the online documentation is intended to be applicable to
+the latest released version of Stack. If you would like to help with that
+documentation, please submit a
+[pull request](https://help.github.com/articles/using-pull-requests/) with your
+changes/additions based off the
+[stable branch](https://github.com/commercialhaskell/stack/tree/stable).
+
+The Markdown files are organised into the navigation menu (the table of
+contents) in the file `mkdocs.yml`, the configuration file for MkDocs. The
+description of a file in the menu can differ from the file's name. The
+navigation menu allows files to be organised in a hierarchy. Currently, up to
+three levels are used. The top level is:
+
+* **Welcome!:** The introduction to Stack. This page aims to be no longer than
+  necessary but also to not assume much existing knowledge on the part of the
+  reader. It provides a 'quick start' guide to getting and using Stack.
+* **How to get & use Stack:** This includes Stack's user's guide, answers to
+  frequently asked questions, and more thorough explanations of aspects of
+  Stack. The user's guide is divided into two parts. The first part is
+  'introductory', and has the style of a tutorial. The second part is
+  'advanced', and has more of a reference style.
+* **How Stack works (advanced):** Many users will not need to consult this
+  advanced documentation.
+* **Stack's code (advanced):** Other information useful to people contributing
+  to, or maintaining, Stack's code, documentation, and other files.
+* **Signing key:** How Stack's released executables are signed.
+* **Glossary:** A glossary of terms used throughout Stack's in-tool and online
+  documentation. We aim to describe the same things in the same way in different
+  places.
+* **Version history:** The log of changes to Stack between versions.
+
+The specific versions of the online documentation (eg `v: v2.9.1`) are generated
+from the content of files at the point in the repository's history specified by
+the corresponding release tag. Consequently, that content is fixed once
+released.
+
+If the names of Markdown files do not change between versions, then people can
+use the flyout on the online documentation to move between different versions of
+the same page. For that reason, the names of new Markdown files should be chosen
+with care and existing Markdown files should not be deleted or renamed without
+due consideration of the consequences.
+
+The Markdown syntax supported by MkDocs and the Material for MkDocs theme can
+differ from the GitHub Flavored Markdown ([GFM](https://github.github.com/gfm/))
+supported for content on GitHub.com. Please refer to the
+[MkDocs documentation](https://www.mkdocs.org/user-guide/writing-your-docs/#writing-with-markdown)
+and the
+[Material for MkDocs reference](https://squidfunk.github.io/mkdocs-material/reference/)
+to ensure your pull request will achieve the desired rendering.
+
+The extensions to the basic Markdown syntax used are set out in `mkdocs.yml` and
+include:
+
+* admonitions
+* code blocks, with syntax highlighting provided by
+  [Pygments](https://pygments.org/)
+* content tabs, which can be nested
+* icons and emojis
+
+The files in the `doc` directory of the repository include two symbolic links
+(symlinks), `ChangeLog.md` and `CONTRIBUTING.md`. Users of Git on Windows should
+be aware of its approach to symbolic links. See the
+[Git for Windows Wiki](https://github.com/git-for-windows/git/wiki/Symbolic-Links).
+If `git config --show-scope --show-origin core.symlinks` is `false` in a local
+repository on Windows, then the files will be checked out as small plain files
+that contain the link text  See the
+[Git documentation](https://git-scm.com/docs/git-config#Documentation/git-config.txt-coresymlinks).
+
+The online documentation can be previewed using the `mkdocs` tool, as described
+in [Getting Started with MkDocs](https://www.mkdocs.org/getting-started/). The
+prerequisites are:
+
+*   [Python](https://www.python.org/); and
+*   the required Python packages set out in `doc/requirements.txt`. They can be
+    installed using Python's package manager `pip` with:
+
+    ~~~text
+    pip install --requirement doc/requirements.txt
+    ~~~
+
+Once the required version of `mkdocs` is installed, command `mkdocs serve` in
+the same directory as the `mkdocs.yml` file to start a web server. The command
+will, eventually, output the URL at which the documentation is being served.
+
+Command `mkdocs build` to build the documentation.
+
+=== "Windows"
+
+    With the correct prerequisites (see further below), users of the `make` tool
+    in the Stack-supplied MSYS2 environment can automate some of these steps
+    from Stack's project directory with:
+
+    * preview: `stack exec -- make docs-serve`; and
+    * build: `stack exec -- make _site/index.html`.
+
+    However, Windows and the Stack-supplied MSYS2 environment do not come with
+    Python or `make` by default. Further, Python on Windows does not use the
+    `python3` command (used on Unix-like operating systems) to invoke Python.
+    Further still, in the MSYS2 environment, development versions of packages
+    `libxml2` and `libxslt` are necessary dependencies. Consequently, the
+    automation requires the following command to install requirements into the
+    the MSYS2 environment:
+
+    ~~~text
+    stack exec -- pacman --sync python make libxml2-devel libxslt-devel
+    ~~~
+
+    !!! note
+
+        If the automation fails before the `mkdocs` tool etc is installed, the
+        directory `.python-doc-virtualenv` created by the automation will need
+        to be deleted before the automation will work again.
+
+    For most users, the automation will be less convenient than simply using the
+    `mkdocs serve` command directly.
+
+=== "Unix-like"
+
+    With `python3` and `make` available on the PATH, users of the `make` tool
+    can automate some of these steps from Stack's project directory with:
+
+    * preview: `make docs-serve`; and
+    * build: `make _site/index.html`.
+
+## Error messages
+
+Stack catches exceptions thrown by its dependencies or by Stack itself in
+`Stack.main`. In addition to exceptions that halt Stack's execution, Stack logs
+certain other matters as 'errors'.
+
+To support the Haskell Foundation's
+[Haskell Error Index](https://errors.haskell.org/) initiative, all Stack
+error messages generated by Stack itself should have a unique initial line:
+
+~~~text
+Error: [S-nnnn]
+~~~
+
+where `nnnn` is a four-digit number in the range 1000 to 9999.
+
+If you create a new Stack error, select a number using a random number generator
+(see, for example, [RANDOM.ORG](https://www.random.org/)) and check that number
+is not already in use in Stack's code. If it is, pick another until the number
+is unique.
+
+All exceptions generated by Stack itself are implemented using data constructors
+of closed sum types. Typically, there is one such type for each module that
+exports functions that throw exceptions. This type and the related `instance`
+definitions are usually located at the top of the relevant module.
+
+Stack supports two types of exceptions: 'pretty' exceptions that are instances
+of class `RIO.PrettyPrint.Pretty`, which provides `pretty :: e -> StyleDoc`, and
+thrown as expressions of type `RIO.PrettyPrint.PrettyException.PrettyException`;
+and other 'plain' exceptions that are simply instances of class
+`Control.Exception.Exception` and, hence, instances of class `Show`. These types
+and classes are re-exported by `Stack.Prelude`.
+
+Stack throws exceptions in parts of the code that should, in principle, be
+unreachable. The functions `Stack.Prelude.bugReport` and
+`Stack.Prelude.bugPrettyReport` are used to give the messages a consistent
+format. The names of the data constructors for those exceptions usually end in
+`Bug`.
+
+In a few cases, Stack may throw an exception in 'pure' code. The function
+`RIO.impureThrow :: Exception e => e -> a`, re-exported by `Stack.Prelude`, is
+used for that purpose.
+
+## Code
+
+If you would like to contribute code to fix a bug, add a new feature, or
+otherwise improve `stack`, pull requests are most welcome. It is a good idea to
+[submit an issue](https://github.com/commercialhaskell/stack/issues/new) to
+discuss the change before plowing into writing code.
+
+If you'd like to help out but are not sure what to work on, look for issues with
+the
+[awaiting pull request](https://github.com/commercialhaskell/stack/issues?q=is%3Aopen+is%3Aissue+label%3A%22awaiting+pull+request%22)
+label. Issues that are suitable for newcomers to the codebase have the
+[newcomer friendly](https://github.com/commercialhaskell/stack/issues?q=is%3Aopen+is%3Aissue+label%3A%22awaiting+pull+request%22+label%3a%22newcomer+friendly%22)
+label. Best to post a comment to the issue before you start work, in case anyone
+has already started.
+
+Please include with your pull request:
+
+* a
+  [ChangeLog](https://github.com/commercialhaskell/stack/blob/master/ChangeLog.md)
+  entry; and
+
+* [documentation](https://github.com/commercialhaskell/stack/tree/master/doc/)
+  updates.
+
+## Backwards Compatibility
+
+The Stack package provides a library and an executable (`stack`) that depends on
+the library. The library is intended for use only by the executable.
+
+Consequently, the Stack package does not need to, and does not, strive for the
+compatibility with a range of versions of GHC that a library package (such as
+`pantry`) would seek.
+
+Stack aims to depend on well-known packages. The specific versions on which it
+depends at any time are specified by `package.yaml` and `stack.yaml`. It does
+not aim to be compatible with more than one version of the `Cabal` package at
+any time. At the time of writing (January 2026) the package versions are
+primarily ones in Stackage snapshot LTS Haskell 24.24 (for GHC 9.10.3), the
+latest version of `Cabal` released on Hackage (`Cabal-3.16.0.0`),
+`pantry-0.11.2`, and `persistent-2.18.0.0`.
+
+A Stack executable makes use of Cabal (the library) through a small 'Setup'
+executable that it compiles from Haskell source code. The executable compiles
+that code with a dependency on the version of Cabal that ships with the
+specified GHC compiler. Each release of Stack will normally aim to support all
+versions of GHC and the Cabal package in Stackage LTS Haskell snapshots
+published within seven years of the release. For example, snapshot LTS Haskell
+13.0, published on 23 December 2018, was the first LTS Haskell snapshot to
+provide GHC 8.6.3 which comes with `base-4.12.0.0` and `Cabal-2.4.0.1`.
+Normally, until, at least, 23 December 2025, Stack releases would aim to support
+the immediate predecessor, GHC 8.4.4 and `base-4.11.1.0`, `Cabal-2.2.0.1` and
+Haddock 2.20.0.
+
+When a version of the Stack executable actually ceases to support a version of
+GHC and `Cabal`, that should be recorded in Stack's
+[ChangeLog](https://github.com/commercialhaskell/stack/blob/master/ChangeLog.md).
+
+## Code Quality
+
+The Stack project uses [yamllint](https://github.com/adrienverge/yamllint) as a
+YAML file quality tool and [HLint](https://github.com/ndmitchell/hlint) as a
+code quality tool.
+
+### Linting of YAML files
+
+The yamllint configuration extends the tools default and is set out in
+`.yamllint.yaml`. In particular, indentation is set at 2 spaces and `- ` in
+sequences is treated as part of the indentation.
+
+### Linting of Haskell source code
+
+The HLint configurations is set out in `.hlint.yaml`.
+
+Stack contributors need not follow dogmatically the suggested HLint hints but
+are encouraged to debate their usefulness. If you find a HLint hint is not
+useful and detracts from readability of code, consider marking it in the
+[configuration file](https://github.com/commercialhaskell/stack/blob/master/.hlint.yaml)
+to be ignored. Please refer to the
+[HLint manual](https://github.com/ndmitchell/hlint#readme)
+for configuration syntax.
+
+Quoting
+[@mgsloan](https://github.com/commercialhaskell/stack/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Amgsloan):
+
+> We are optimizing for code clarity, not code concision or what HLint thinks.
+
+You can install HLint with Stack. You might want to install it in the global
+project in case you run into dependency conflicts. HLint can report hints in
+your favourite text editor. Refer to the HLint repository for more details.
+
+To install, command:
+
+~~~text
+stack install hlint
+~~~
+
+Once installed, you can check your changes with command:
+
+~~~text
+stack exec -- sh ./etc/scripts/hlint.sh
+~~~
+
+## Code syntax
+
+Stack makes use of GHC's `GHC2024` collection of language extensions. That is
+set using the `language` key in the `package.yaml` file.
+
+The `GHC2024` edition enables the `MonoLocalBinds` language extension. Enabling
+the extension can change how GHC infers the types of local bindings (that is,
+let-bound or where-bound variables). When enabled it means that the types of a
+group of local bindings are not generalised unless:
+
+* any of its binders has a partial type signature; or
+
+* all of its free variables are closed. If a variable is closed then its type
+  definitely has no free type variables. A variable imported from another module
+  is closed. A variable that is let-bound and has an explicit type signature
+  with no free type variables is closed.
+
+Stack makes use of single-constructor types where the constructor has a large
+number of fields. Some of those fields have similar types, and so on. Given
+that, Stack makes use of `OverloadedRecordDot`, introduced in GHC 9.2.1. It also
+makes use of `NoFieldSelectors`, also introduced in GHC 9.2.1, and, where
+necessary, `DuplicateRecordFields`. Together, these language extensions enable
+the removal from the names of fields of the prefixes that were used historically
+to indicate the type and make field names unique. This is because the names of
+fields no longer need to be unique in situations where the intended field is
+unambiguous. This allows for a terser syntax without loss of expressiveness.
+For example:
+
+~~~haskell
+let cliTargets = (boptsCLITargets . bcoBuildOptsCLI) bco
+~~~
+
+can become:
+
+~~~haskell
+let cliTargets = bco.buildOptsCLI.targets
+~~~
+
+The intended field is unambiguous in almost all cases. In the case of a few
+record updates it is ambiguous. The name of the field needs to be qualified in
+those cases. For example:
+
+~~~haskell
+import qualified  Stack.Types.Build as ConfigCache ( ConfigCache (..) )
+...
+let ignoreComponents :: ConfigCache -> ConfigCache
+    ignoreComponents cc = cc { ConfigCache.components = Set.empty }
+~~~
+
+## Code Style
+
+A single code style is not applied consistently to Stack's code and Stack is not
+Procrustean about matters of style. Rules of thumb, however, are:
+
+* keep pull requests that simply reformat code separate from those that make
+  other changes to code; and
+* when making changes to code other than reformatting, follow the existing style
+  of the function(s) or module(s) in question.
+
+That said, the following may help:
+
+* Stack's code generally avoids the use of C preprocessor (CPP) directives.
+  Windows and non-Windows code is separated in separate source code directories
+  and distinguished in Stack's Cabal file. `Stack.Constants.osIsWindows :: Bool`
+  is provided. Multi-line strings are generally formatted on the assumption that
+  GHC's `CPP` language pragma is not being used.
+* Language pragmas usually start with `NoImplictPrelude`, where applicable, and
+  then all others are listed alphabetically. The closing `#-}` are aligned, for
+  purely aesthetic reasons.
+* Stack is compiled with GHC's `-Wall` enabled, which includes `-Wtabs` (no tabs
+  in source code). Most modules are based on two spaces (with one space for a
+  `where`) for indentation but older and larger modules are still based on four
+  spaces.
+* Stack's code and documentation tends to be based on lines of no more than 80
+  characters or, if longer, no longer than necessary.
+* Stack uses export lists.
+* Stack's imports are listed alphabetically, including `Stack.Prelude`, where
+  applicable. The module names are left aligned, with space left for `qualified`
+  where it is absent.
+* Stack's code is sufficiently stable that explicit import lists can sensibly be
+  used. The exception is the import of `Stack.Prelude`. Not all modules have
+  comprehensive explicit import lists.
+* Short explicit import lists follow the module name. Longer lists start on the
+  line below the module name. Spaces are used to separate listed items from
+  their enclosing parentheses.
+* As noted above, the types used to implement Stack's exceptions and the related
+ `instance` definitions are usually located at the top of the relevant module.
+* In function type signatures, the `::` is kept on the same line as the
+  function's name. This format is Haskell syntax highlighter-friendly.
+* If `where` is used, the declarations follow on a separate line.
+
+## Testing
+
+The Stack code has both unit tests and integration tests.
+
+### Working with Unit Tests
+
+Unit tests can be found in the
+[tests/unit](https://github.com/commercialhaskell/stack/tree/master/tests/unit)
+directory. Tests are written using the [Hspec](https://hspec.github.io/)
+framework. In order to run the full test suite, you can simply command:
+
+~~~text
+stack test
+~~~
+
+The `--file-watch` is a very useful option to get quick feedback. However,
+running the entire test suite after each file change will slow you down. You
+will need to specify which test suite (unit test or integration) and pass
+arguments to specify which module you'd specifically like to run to get quick
+feedback. A description of this follows below.
+
+
+If you would like to run the unit tests on their own, you can command:
+
+~~~text
+stack test stack:stack-unit-test
+~~~
+
+Running an individual module works with a command like this:
+
+~~~text
+stack test stack:stack-unit-test --ta "-m <PATTERN>"
+~~~
+
+Where `<PATTERN>` is the name of the module without `Spec.hs`.
+
+You may also load tests into GHCi and run them with these command:
+
+~~~text
+stack ghci stack:stack-unit-test --only-main
+# GHCi starting up output ...
+> :main -m "<PATTERN>"
+~~~
+
+Where again, `<PATTERN>` is the name of the module without `Spec.hs`.
+
+### Working with Integration Tests
+
+Integration tests can be found in the
+[tests/integration](https://github.com/commercialhaskell/stack/tree/master/tests/integration)
+folder.
+
+Running the integration tests is a little involved, you will need to command:
+
+~~~text
+stack build --flag stack:integration-tests stack --exec stack-integration-test
+~~~
+
+Running an individual module works with a command like this:
+
+~~~text
+stack build --flag stack:integration-tests stack --exec "stack-integration-test -m <PATTERN>"
+~~~
+
+Where `<PATTERN>` is the name of the folder listed in the
+[test/integration/tests/](https://github.com/commercialhaskell/stack/tree/master/test/integration/tests)
+directory.
+
+You may also achieve this through GHCi with this command:
+
+~~~text
+stack ghci stack:stack-integration-test
+# GHCi starting up output ...
+> :main -m "<PATTERN>"
+~~~
+
+Where again, `<PATTERN>` is the name of the folder listed in the
+[test/integration/tests/](https://github.com/commercialhaskell/stack/tree/master/test/integration/tests)
+directory.
+
+You can disable a few integration tests through the -n option :
+
+~~~text
+stack build --flag stack:integration-tests stack --exec "stack-integration-test -n <PATTERN1> -n <PATTERN2>"
+~~~
+
+to disable folders named after `<PATTERN1>` and `<PATTERN2>`. It is especially
+useful when some tests are taking a while to complete.
+
+On Linux, the `stack-integration-test` executable uses the `lld` linker and
+expects it to be on the PATH. The integration tests complete significantly
+quicker with `lld` than with the `ld.bfd` linker.
+
+## Continuous integration (CI)
+
+We use [GitHub Actions](https://docs.github.com/en/actions) to do CI on Stack.
+The configuration of the workflows is in the YAML files in `.github/workflows`.
+The current active workflows are:
+
+### Linting - `lint.yml`
+
+This workflow will run if:
+
+* there is a pull request
+* commits are pushed to these branches: `master`, `stable` and `rc/**`
+
+The workflow has one job (`style`). It runs on `ubuntu` only and applies
+yamllint and Hlint.
+
+### Test suite - `unit-tests.yml`
+
+This workflow will run if:
+
+* there is a pull request
+* commits are pushed to these branches: `master`, `stable` and `rc/**`.
+* requested
+
+The workflow has two jobs: `pedantic` and `unit-tests`.
+
+The `pedantic` job runs on `ubuntu` only and builds Stack with the
+`--pedantic` flag.
+
+The `unit-tests` job runs on a matrix of operating systems and Stack
+project-level configuration files (`stack.yaml`, by default). It builds and
+tests Stack with the following flags: `--haddock --no-haddock-deps`.
+
+Its approach to creating a cache depends on the operating system. Its 'Cache
+dependencies on Unix-like OS' step caches the Stack root on Unix-like operating
+systems. Its 'Cache dependencies on Windows' step caches the same information
+on Windows, but takes into account that a relevant directory is located outside
+of the Stack root.
+
+### Integration-based - `integration-tests.yml`
+
+This workflow will run if:
+
+* there is a pull request
+* commits are pushed to these branches: `master`, `stable` and `rc/**`
+* any tag is created
+* requested
+
+The workflow has three jobs: `integration-tests`, `linux-arm64` and
+`github-release`.
+
+The `integration-tests` job runs on a matrix of operating systems (`ubuntu`,
+`windows` and `macos`) and makes use of the `release.hs` script at
+`etc/scripts`. Its approach to creating a cache is the same as for
+`unit-tests.yml`, described above.
+
+Its 'Install deps and run checks' step uses `release.hs check`.
+
+Its 'Build bindist' step uses `release.hs build`.
+
+Its 'Upload bindist' step uploads artifacts using the name of the runner's
+operating system (`Linux`, `Windows` or `macOS`) as the name for the artifacts.
+
+The `linux-arm64` job runs on a self-hosted runner for Linux and ARM64. It makes
+use of Docker and a Docker file at `etc/dockerfiles/arm64.Dockerfile`.
+
+Its 'Build bindist' step makes use of a compiled version of `release.hs` script
+at `etc/scripts` to command `release build`.
+
+Its 'Upload bindist' step uploads artifacts using `Linux-ARM64` as the name for
+the artifacts.
+
+The `github-release` job needs `integration-tests` and `linux-arm64`. It only
+takes effect if the trigger for the workflow was the creation of a tag.
+
+Its four steps `Download Linux/Windows/macOS/Linux-ARM64 artifact` download the
+named artifacts to path `_release`.
+
+Its step 'Hash and sign assets' makes use of a 'secret' environment variable
+`RELEASE_SIGNING_KEY` established by the owner of the Stack repository. The
+variable contains the private key for the GPG key with ID 0x575159689BEFB442.
+That key is imported into GPG and then used by GPG to create a detached signature
+for each file.
+
+### Stan tool - `stan.yml`
+
+[Stan](https://hackage.haskell.org/package/stan) is a Haskell static analysis
+tool. As of `stan-0.1.0.1`, it supports GHC >= 9.6.3 and Stack is built with
+GHC 9.10.3. The tool is configured by the contents of the `.stan.toml` file.
+
+This workflow will run if:
+
+* there is a pull request
+* requested
+
+## Change log
+
+Stack seeks to maintain a comprehesive and useful change log, that captures all
+changes that could be relevant to users of Stack. The change log is also
+published at <https://docs.haskellstack.org/> under menu item
+"More/Version history".
+
+The change log for each release or the current, unreleased, version of Stack is
+organised under one or more of the headings "Major changes", "Behavior changes",
+"Other enhancements" and "Bug fixes". Major changes are those anticipated to be
+important to many Stack users. The heading "Release notes" can also be used to
+communicate other important information about a release not categorised under
+those headings.
+
+Change log entries aim to be succinct and clear. The change log is not intended
+to be a substitute for high quality in-tool and online documentation.
+
+If you consider that the existing change log is incomplete, inaccurate or
+ambiguous, please
+[open an issue](https://github.com/commercialhaskell/stack/issues/new) at
+Stack's GitHub repository.
+
+## Haskell Language Server
+
+You may be using [Visual Studio Code](https://code.visualstudio.com/) (VS Code)
+with its
+[Haskell extension](https://marketplace.visualstudio.com/items?itemName=haskell.haskell),
+which is powered by the
+[Haskell Language Server](https://github.com/haskell/haskell-language-server)
+(HLS).
+
+Stack can be built with Stack (which is recommended) or with Cabal (the tool).
+
+=== "Stack"
+
+    If you use Stack to build Stack, command `stack ghci` in the root directory
+    of the Stack project should work as expected, if you have first commanded
+    `stack build` once. `stack build` causes Cabal (the library) to create the
+    automatically generated module `Stack_build`.
+
+    If `ghc` is not on your PATH, then Haskell Language Server may report the
+    following error about `Stack.Constants.ghcShowOptionsOutput`:
+    ~~~text
+    • Exception when trying to run compile-time code:
+        ghc: readCreateProcess: does not exist (No such file or directory)
+      Code: (TH.runIO (readProcess "ghc" ["--show-options"] "")
+               >>= TH.lift . lines)
+    • In the untyped splice:
+        $(TH.runIO (readProcess "ghc" ["--show-options"] "") >>= TH.lift
+            . lines)
+    ~~~
+
+    `ghc` should be on the PATH if you run VS Code itself in the Stack
+    environment:
+    ~~~text
+    stack exec -- code .
+    ~~~
+
+    The following [cradle (`hie.yaml`)](https://github.com/haskell/hie-bios)
+    should suffice to configure Haskell Language Server (HLS) explicitly for
+    `./Setup.hs` and each of the buildable components in Stack's Cabal file:
+    ~~~yaml
+    cradle:
+      multi:
+      - path: "./Setup.hs"
+        config:
+          cradle:
+            direct:
+              arguments: []
+      - path: "./"
+        config:
+          cradle:
+            stack:
+            - path: "./src"
+              component: "stack:lib"
+            - path: "./app"
+              component: "stack:exe:stack"
+            - path: "./tests/integration"
+              component: "stack:exe:stack-integration-test"
+            - path: "./tests/unit"
+              component: "stack:test:stack-unit-test"
+    ~~~
+
+=== "Cabal (the tool)"
+
+    If you use Cabal (the tool) to build Stack, command `cabal repl` in the root
+    directory of the Stack project should work as expected, if you have GHC and
+    (on Windows) MSYS2 on the PATH. Stack's custom `./Setup.hs` causes
+    `cabal repl` to cause Cabal (the library) to create the automatically
+    generated module `Stack_build`.
+
+    If `ghc` is not on your PATH, then Haskell Language Server may report the
+    following error about `Stack.Constants.ghcShowOptionsOutput`:
+    ~~~text
+    • Exception when trying to run compile-time code:
+        ghc: readCreateProcess: does not exist (No such file or directory)
+      Code: (TH.runIO (readProcess "ghc" ["--show-options"] "")
+               >>= TH.lift . lines)
+    • In the untyped splice:
+        $(TH.runIO (readProcess "ghc" ["--show-options"] "") >>= TH.lift
+            . lines)
+    ~~~
+
+    `ghc` and (on Windows) MSYS2 should be on the PATH if you run commands
+    (including `cabal`) in the Stack environment:
+    ~~~text
+    stack exec --no-ghc-package-path -- cabal repl
+    ~~~
+
+    or
+    ~~~text
+    stack exec --no-ghc-package-path -- code .
+    ~~~
+
+    Use of GHC's environment variable `GHC_PACKAGE_PATH` is not compatible with
+    Cabal (the tool). That is why the `--no-ghc-package-path` flag must be
+    specified with `stack exec` when relying on Cabal (the tool).
+
+    The following [cradle (`hie.yaml`)](https://github.com/haskell/hie-bios)
+    should suffice to configure Haskell Language Server (HLS) explicitly for
+    `./Setup.hs` and each of the buildable components in Stack's Cabal file:
+    ~~~yaml
+    cradle:
+      multi:
+      - path: "./Setup.hs"
+        config:
+          cradle:
+            direct:
+              arguments: []
+      - path: "./"
+        config:
+          cradle:
+            cabal:
+            - path: "./src"
+              component: "lib:stack"
+            - path: "./app"
+              component: "exe:stack"
+            - path: "./tests/integration"
+              component: "exe:stack-integration-test"
+            - path: "./tests/unit"
+              component: "test:stack-unit-test"
+    ~~~
+
+A cradle is not committed to Stack's repository because it imposes a choice of
+tool used for building.
+
+## Dev Containers
+
+A [Development Container](https://containers.dev) (or Dev Container for short)
+allows you to use a container as a full‑featured development environment.
+
+You can run Dev Containers locally/remotely (with VS Code), or create a
+[Codespace](https://github.com/features/codespaces) for a branch in a
+repository to develop online.
+
+Stack's default Dev Container is intended for use with its default
+project‑level configuration (`stack.yaml`). But there are also Dev Containers
+for the experimental project‑level configurations.
+
+For further information, see the documentation for
+[Dev Containers](dev_containers.md).
+
+## Slack channel
+
+If you are making deep changes and real-time communication with the Stack team
+would be helpful, we have a `#stack-collaborators` Slack channel in the
+Haskell Foundation workspace. To join the workspace, follow this
+[link](https://haskell-foundation.slack.com/join/shared_invite/zt-z45o9x38-8L55P27r12YO0YeEufcO2w#/shared-invite/email).
+
+## Matrix room
+
+There is also a
+[Haskell Stack room](https://matrix.to/#/#haskell-stack:matrix.org)
+at address `#haskell-stack:matrix.org` on [Matrix](https://matrix.org/).
doc/ChangeLog.md view
@@ -1,1 +1,3569 @@-../ChangeLog.md+# Changelog
+
+## v3.9.3 - 2026-02-19
+
+Release notes:
+
+* This release fixes a potential bug for users of Stack's Docker integration.
+
+**Changes since v3.9.1:**
+
+Other enhancements:
+
+* The `resolver` synonym for `snapshot`, informally deprecated from Stack 3.1.1,
+  is formally deprecated in online and in-app documentation.
+
+Bug fixes:
+
+* Stack's Docker integration supports Docker client versions 29.0.0 and greater.
+
+## v3.9.1 - 2026-01-04
+
+**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.
+
+## v3.7.1 - 2025-06-28
+
+**Changes since v3.5.1:**
+
+Other enhancements:
+
+* Bump to Hpack 0.38.1.
+* The `--extra-dep` option of Stack's `script` command now accepts a YAML value
+  specifying any immutable extra-dep. Previously only an extra-dep in the
+  package index that could be specified by a YAML string (for example,
+  `acme-missiles-0.3@rev:0`) was accepted.
+
+Bug fixes:
+
+* `stack script --package <pkg-name>` now uses GHC's `-package-id` option to
+  expose the installed package, rather than GHC's `-package` option. For
+  packages with public sub-libraries, `-package <pkg>` can expose an
+  installed package other than one listed by `ghc-pkg list <pkg>`.
+* Work around `ghc-pkg` bug where, on Windows only, it cannot register a package
+  into a package database that is also listed in the `GHC_PACKAGE_PATH`
+  environment variable. In previous versions of Stack, this affected
+  `stack script` when copying a pre-compiled package from another package
+  database.
+* On Windows, when decompressing, and extracting, tools from archive files,
+  Stack uses the system temporary directory, rather than the root of the
+  destination drive, if the former is on the destination drive.
+
+## v3.5.1 - 2025-03-29
+
+**Changes since v3.3.1:**
+
+Behavior changes:
+
+* Stack will also warn (message S-8432) if there is any non-ISO/IEC 8859-1
+  (Latin-1) character in Stack's 'programs' path, as `hsc2hs` does not work if
+  there is such a character in the path to its default template
+  `template-hsc.h`.
+* Stack customizes setup using `Cabal`, so if a `setup-depends` field does not
+  mention it as a dependency, Stack warns and adds the GHC boot package as a
+  dependency. Previously, Stack would not do so but only warn that build errors
+  were likely.
+
+Other enhancements:
+
+* Bump to Hpack 0.38.0.
+* In YAML configuration files, the `install-msys` key is introduced, to enable
+  or disable the download and installation of Stack-supplied MSYS2 when
+  necessary (subject to `skip-msys: false`). The default is the same as the
+  `install-ghc` setting (including if that is set at the command line).
+  Consequently, the default behaviour of Stack is unaffected.
+* Add the `stack config set install-msys` command to configure the
+  `install-msys` option in YAML configuration files.
+* Option `allow-newer-deps` is no longer classified as experimental in
+  documentation.
+* `stack sdist` and `stack upload` report the version of Cabal (the library)
+  being used to check packages.
+* Add the `stack config build-files` command to generate (when applicable) a
+  Cabal file from a package description in the Hpack format and/or a lock file
+  for Stack's project-level configuration, without taking any other build steps.
+
+## v3.3.1 - 2024-12-28
+
+**Changes since v3.1.1:**
+
+Behavior changes:
+
+* Stack interprets consecutive line ends in the value of the `user-message`
+  project-specific configuration option as a single blank line. Previously all
+  line ends were interpreted as white space.
+* Stack no longer supports Docker versions before Docker 1.9.1 and,
+  consequently, if a Docker container is not being run 'detached', its standard
+  input channel will always be kept open. (Before Docker 1.9.1 the use of an
+  interactive container could hang in certain circumstances.)
+* On Windows, Stack will always warn (message S-8432) if there is a space
+  character in Stack's 'programs' path, as GHC 9.4.1 and later do not work if
+  there is a space in the path to the `ghc` executable. S-8432 now presents as a
+  warning and not an error.
+* Stack respects the `--no-run-tests` and `--no-run-benchmarks` flags when
+  determining build actions. Previously Stack respected the flags when executing
+  the run test suites or run benchmarks actions for each targeted project
+  package.
+
+Other enhancements:
+
+* Consider GHC 9.10 to be a tested compiler and remove warnings.
+* Consider Cabal 3.12 to be a tested library and remove warnings.
+* Add flags `--run-tests` and `--run-benchmarks` (the existing defaults) to
+  Stack's `build` command, which take precedence over the existing
+  `no-run-tests` and `no-run-benchmarks` configuration options, respectively.
+* In configuration files, the `notify-if-no-run-tests` and
+  `notify-if-no-run-benchmarks` keys are introduced, to allow the exisitng
+  notification to be muted if unwanted.
+
+Bug fixes:
+
+* Stack's in-app messages refer to https://haskellstack.org as currently
+  structured. (Most URLs in older Stack versions are redirected.)
+* Stack's `upgrade` command only treats the current running Stack executable
+  as '`stack`' if the executable file is named `stack` or, on Windows,
+  `stack.exe`. Previously only how it was invoked was considered.
+* `stack test --no-run-tests --dry-run` no longer reports that Stack would test
+  project packages with test suites and
+  `stack bench --no-run-benchmarks --dry-run` no longer reports that Stack
+  would benchmark project packages with benchmarks.
+* `StackSetupShim` compiles with `Cabal >= 3.14.0.0`.
+
+## v3.1.1 - 2024-07-28
+
+Release notes:
+
+* The change in major version from 2.x to 3.1 marks the dropping of support for
+  versions of GHC before 8.4, deprecated in Stack 2.15.1.
+
+**Changes since v2.15.7:**
+
+Behavior changes:
+
+* Stack uses the version of the Cabal package that comes with the specified
+  version of GHC. Stack no longer supports such Cabal versions before 2.2, which
+  came with versions of GHC before 8.4. Consequently, the `init` command will
+  not try LTS Haskell before 12.0.
+* The `init` command initialises `stack.yaml` with a `snapshot` key rather than
+  a `resolver` key.
+* After installing GHC or another tool, Stack deletes the archive file which
+  provided the tool.
+* Remove hidden flag `--skip-intermediate-deps`, effectively deprecated since
+  Stack 1.3.0, from `ghci` and `repl` commands.
+* The `haddock --haddock-for-hackage` command only seeks to create an archive of
+  the `<package_version>-docs` directory for build targets and if flags
+  excluding the building of project packages are not set.
+* The predecessor of configuration option `package-index`, `package-indices`
+  (deprecated in Stack 2.9.3) has been removed as an alternative option.
+* If a build target is a package identifier, and the package version is not in
+  the snapshot or the package index, Stack will report an error when the target
+  is parsed. Previously, if another version of the package was in the snapshot,
+  Stack would construct the build plan with that other version or, if it was
+  not, Stack would defer an error to the construction of the build plan.
+* The `list` command, with a specified snapshot and package, also reports the
+  version of the package included indirectly in the snapshot (as a boot package
+  of the compiler specified by the snapshot).
+* `stack build --flag *:[-]<flag_name>` now only applies the flag setting to
+  packages for which the Cabal flag is defined, as opposed to all packages.
+* On Unix-like operating systems, drop support for `/etc/stack/config`,
+  deprecated in Stack 0.1.6.0.
+* Drop support for, in the Stack root, directory `global` and file `stack.yaml`,
+  both deprecated in Stack 0.1.6.0.
+
+Other enhancements:
+
+* Bump to Hpack 0.37.0.
+* In YAML configuration files, the `msys-environment` key is introduced to
+  allow, on Windows, the MSYS2 environment to be specified. The default
+  environment is still `MINGW64` on 64-bit Windows and `MINGW32` on 32-bit
+  Windows.
+* In YAML configuration files, the `default-init-snapshot` key is introduced to
+  allow a default snapshot to be specified for use with the `stack init`
+  command, as if it had been specified at the command line.
+* Add flags `--haddock-executables`, `--haddock-tests` and
+  `--haddock-benchmarks` to Stack's `build` command (including the `haddock`
+  synonym for `build --haddock`) to enable also building Haddock
+  documentation for executables, test suites and benchmarks. Due to a bug in
+  Cabal (the library), Stack will ignore the flags with a warning for GHC
+  versions before 9.4.
+* Add flag `--[no-]save-hackage-creds` to Stack's `upload` command, which takes
+  precedence over the existing `save-hackage-creds` configuration option.
+* In YAML configuration files, the `global-hints-location` key is introduced to
+  allow the location of the global hints YAML specification file to be
+  specified.
+* By default, Hpack 0.12.0 or later will decline to overwrite a Cabal file that
+  was created by a more recent version of Hpack and Hpack 0.20.0 or later will
+  decline to overwrite a Cabal file that was modified manually. In YAML
+  configuration files, the `hpack-force` key is introduced to allow Hpack to
+  overwrite such a Cabal file. The corresponding `--hpack-force` flag is also
+  added.
+* Add the `stack config set recommend-stack-upgrade` command to configure
+  whether or not Stack should notify the user if it identifes a new version of
+  Stack is available in YAML configuration files.
+* Add the `ls globals` command to list all global packages for the version of
+  GHC specified by the snapshot.
+* Add `stack -h` (equivalent to `stack --help`).
+* In YAML configuration files, the `file-watch-hook` key is introduced to allow
+  `--file-watch` post-processing to be customised with a executable or `sh`
+  shell script.
+* Add flag `--[no-]allow-newer` to Stack's `build` command, which takes
+  precedence over the existing `allow-newer` configuration option.
+
+Bug fixes:
+
+* The `config set snapshot` and `config set resolver` commands now respect the
+  presence of a synoymous key.
+* The `config set` commands support existing keys only in the form `key: value`
+  on a single line. The commands now recognise that a line `key:` does not have
+  that form.
+* On Unix-like operating systems, the `test --coverage` command now finds
+  package keys even for very long package names.
+* The Error S-6362 message now acknowledges when the wanted compiler has been
+  specified at the command line.
+* Fix a regression, introduced in Stack 2.11.1, that caused the `script` command
+  to parse an (otherwise ignored) project-level configuration file.
+* Stack no longer makes recommendations about a project-level configuration file
+  when only a global configuration file is in use.
+* Fix a regression, introduced in Stack 2.15.7, that caused GHC 8.10.7 or
+  earlier to fail to build a package with a `Custom` build type, if GHC option
+  `-haddock` was specified.
+
+## v2.15.7 - 2024-05-12
+
+Release notes:
+
+* This release fixes potential bugs.
+* The hash that Stack uses to distinguish one build plan from another has
+  changed for plans that set (as opposed to unset) manually Cabal flags for
+  immutable dependencies. This will cause Stack to rebuild dependencies for such
+  plans.
+
+**Changes since v2.15.5:**
+
+Major changes:
+
+* Stack 2.15.5 and earlier cannot build with Cabal (the library) version
+  `3.12.0.0`. Stack can now build with that Cabal version.
+
+Behavior changes:
+
+* Stack's `StackSetupShim` executable, when called with `repl` and
+  `stack-initial-build-steps`, no longer uses Cabal's `replHook` to apply
+  `initialBuildSteps` but takes a more direct approach.
+
+Bug fixes:
+
+* Fix a regression introduced in Stack 2.15.1 that caused a 'no operation'
+  `stack build` to be slower than previously.
+* The hashes that Stack uses to distinguish one build plan from another now
+  include the Cabal flags for immutable dependencies set manually. Previously,
+  in error, only such flags that were unset manually were included.
+
+## v2.15.5 - 2024-03-28
+
+Release notes:
+
+* This release fixes potential bugs.
+
+**Changes since v2.15.3:**
+
+Behavior changes:
+
+* Following the handover of the Stackage project to the Haskell Foundation, the
+  default value of the `urls` key is
+  `latest-snapshot: https://stackage-haddock.haskell.org/snapshots.json`.
+* Stack no longer includes the snapshot package database when compiling the
+  setup executable for a package with `build-type: Configure`.
+
+## v2.15.3 - 2024-03-07
+
+Release notes:
+
+* With one exception, this release fixes bugs.
+
+**Changes since v2.15.1:**
+
+Behavior changes:
+
+* `stack path --global-config`, `--programs`, and `--local-bin` no longer set
+  up Stack's environment.
+
+Bug fixes:
+
+* Due to a bug, Stack 2.15.1 did not support versions of GHC before 8.2. Stack
+  now supports GHC versions from 8.0.
+* `--haddock-for-hackage` does not ignore `--haddock-arguments`.
+* On Windows, package locations that are Git repositories with submodules now
+  work as intended.
+* The `ghc`, `runghc` and `runhaskell` commands accept `--package` values that
+  are a list of package names or package identifiers separated by spaces and, in
+  the case of package identifiers, in the same way as if they were specified as
+  targets to `stack build`.
+
+## v2.15.1 - 2024-02-09
+
+Release notes:
+
+* After an upgrade from an earlier version of Stack, on first use only,
+  Stack 2.15.1 may warn that it had trouble loading the CompilerPaths cache.
+* The hash used as a key for Stack's pre-compiled package cache has changed,
+  following the dropping of support for Cabal versions older than `1.24.0.0`.
+
+**Changes since v2.13.1:**
+
+Behavior changes:
+
+* Stack does not leave `*.hi` or `*.o` files in the `setup-exe-src` directory of
+  the Stack root, and deletes any corresponding to a `setup-<hash>.hs` or
+  `setup-shim-<hash>.hs` file, to avoid GHC issue
+  [#21250](https://gitlab.haskell.org/ghc/ghc/-/issues/21250).
+* If Stack's Nix integration is not enabled, Stack will notify the user if a
+  `nix` executable is on the PATH. This usually indicates the Nix package
+  manager is available. In YAML configuration files, the `notify-if-nix-on-path`
+  key is introduced, to allow the notification to be muted if unwanted.
+* Drop support for Intero (end of life in November 2019).
+* `stack path --stack-root` no longer sets up Stack's environment and does not
+  load Stack's configuration.
+* Stack no longer locks on configuration, so packages (remote and local) can
+  be configured in parallel. This increases the effective concurrency of builds
+  that before would use fewer threads. Reconsider your `--jobs` setting
+  accordingly. See [#84](https://github.com/commercialhaskell/stack/issues/84).
+* Stack warns that its support for Cabal versions before `2.2.0.0` is deprecated
+  and may be removed in the next version of Stack. Removal would mean that
+  projects using snapshots earlier than `lts-12.0` or `nightly-2018-03-18`
+  (GHC 8.4.1) might no longer build. See
+  [#6377](https://github.com/commercialhaskell/stack/issues/6377).
+* If Stack's `--resolver` option is not specified, Stack's `unpack` command with
+  a package name will seek to update the package index before seeking to
+  download the most recent version of the package in the index.
+* If the version of Cabal (the library) provided with the specified GHC can copy
+  specific components, Stack will copy only the components built and will not
+  build all executable components at least once.
+
+Other enhancements:
+
+* Consider GHC 9.8 to be a tested compiler and remove warnings.
+* Stack can build packages with dependencies on public sub-libraries of other
+  packages.
+* Add flag `--no-init` to Stack's `new` command to skip the initialisation of
+  the newly-created project for use with Stack.
+* The HTML file paths produced at the end of `stack haddock` are printed on
+  separate lines and without a trailing dot.
+* Add option of the form `--doctest-option=<argument>` to `stack build`, where
+  `doctest` is a program recognised by versions of the Cabal library from
+  `1.24.0.0`.
+* Experimental: Add flag `--haddock-for-hackage` to Stack's `build` command
+  (including the `haddock` synonym for `build --haddock`) to enable building
+  project packages with flags to generate Haddock documentation, and an archive
+  file, suitable for upload to Hackage. The form of the Haddock documentation
+  generated for other packages is unaffected.
+* Experimental: Add flag `--documentation` (`-d` for short) to Stack's `upload`
+  command to allow uploading of documentation for packages to Hackage.
+* `stack new` no longer rejects project templates that specify a `package.yaml`
+  in a subdirectory of the project directory.
+* Stack will notify the user if Stack has not been tested with the version of
+  GHC that is being user or a version of Cabal (the library) that has been
+  found. In YAML configuration files, the `notify-if-ghc-untested` and
+  `notify-if-cabal-untested` keys are introduced, to allow the notification to
+  be muted if unwanted.
+* The compiler version is included in Stack's build message (e.g.
+  `stack> build (lib + exe + test) with ghc-9.6.4`).
+* Add flag `--candidate` to Stack's `unpack` command, to allow package
+  candidates to be unpacked locally.
+* Stack will notify the user if a specified architecture value is unknown to
+  Cabal (the library). In YAML configuration files, the `notify-if-arch-unknown`
+  key is introduced, to allow the notification to be muted if unwanted.
+* Add option `--filter <item>` to Stack's `ls dependencies text` command to
+  filter out an item from the results, if present. The item can be `$locals` for
+  all project packages.
+* Add option `--snapshot` as synonym for `--resolver`.
+* Add the `config set snapshot` command, corresponding to the
+  `config set resolver` command.
+
+Bug fixes:
+
+* Fix the `Curator` instance of `ToJSON`, as regards `expect-haddock-failure`.
+* Better error message if a `resolver:` or `snapshot:` value is, in error, a
+  YAML number.
+* Stack accepts all package names that are, in fact, acceptable to Cabal.
+* Stack's `sdist` command can check packages with names that include non-ASCII
+  characters.
+
+## v2.13.1 - 2023-09-29
+
+Release notes:
+
+* Further to the release notes for Stack 2.3.1, the `-static` suffix has been
+  removed from the statically-linked Linux/x86_64 executables.
+* The executables for Linux/Aarch64 are now statically-linked.
+* Executables are now provided for macOS/AArch64.
+
+**Changes since v2.11.1:**
+
+Behavior changes:
+
+* Build artefacts are placed in `.stack-work/dist/<platform>/<GHC_version>`
+  (hashed to a shorter path on Windows), rather than
+  `.stack-work/dist/<platform>/<Cabal_version>`. This allows build artifacts to
+  be distinguished by GHC version.
+* By default, the `stack build` progress bar is capped to a length equal to the
+  terminal width.
+* When building GHC from source, Stack no longer uses Hadrian's deprecated
+  `--configure`\\`-c` flag and, instead, seeks to run GHC's Python `boot` and
+  sh `configure` scripts, and ensure that the `happy` and `alex` executables are
+  on the PATH.
+* When auto-detecting `--ghc-build` on Linux, the `musl` GHC build only is
+  considered a possible GHC build if `libc.musl-x86_64.so.1` is found in `\lib`
+  or `\lib64`.
+* No longer supports Cabal versions older than `1.24.0.0`. This means projects
+  using snapshots earlier than `lts-7.0` or `nightly-2016-05-26` (GHC 8.0.1)
+  will no longer build. GHC 8.0.1 comes with Haddock 2.17.2.
+* When unregistering many packages in a single step, Stack can now do that
+  efficiently. Stack no longer uses GHC-supplied `ghc-pkg unregister` (which is,
+  currently, slower).
+* `stack hpc report`, `stack list`, `stack templates` and `stack uninstall`
+  output their information to the standard output stream rather than to the
+  standard error stream. Logging is still to the standard error stream.
+* `stack upgrade` no longer assumes that binary upgrade is not supported on a
+  AArch64 machine architecture.
+
+Other enhancements:
+
+* Consider GHC 9.6 to be a tested compiler and remove warnings.
+* Consider Cabal 3.10 to be a tested library and remove warnings.
+* Bump to Hpack 0.36.0.
+* Depend on `pantry-0.9.2`, for support for long filenames and directory names
+  in archives created by `git archive`.
+* Avoid the duplicate resolving of usage files when parsing `*.hi` files into a
+  set of modules and a collection of resolved usage files. See
+  [#6123](https://github.com/commercialhaskell/stack/pull/6123).
+* Add composable component type flags `--exes`, `--tests` and `--benchmarks` to
+  Stack's `ide targets` command, to list only those components.
+* `stack --verbose` excludes lengthy information about build plan construction
+  in the debug output by default. The new `stack --[no-]plan-in-log` flag
+  enables or disables the inclusion of the information in the debug output.
+* In YAML configuration files, the `casa` key is introduced, which takes
+  precedence over the existing `casa-repo-prefix` key. The latter is deprecated.
+  The new key also allows Stack's use of a Casa (content-addressable storage
+  archive) server to be disabled and the maximum number of keys per request to
+  be configured. The default Casa prefix references https://casa.stackage.org,
+  instead of https://casa.fpcomplete.com.
+* Add option `--progress-bar=<format>` to Stack's `build` command to configure
+  the format of the progress bar, where `<format>` is one of `none`,
+  `count-only` (only the package count), `capped` (capped to a length equal to
+  the terminal width) and `full` (the previous format).
+
+Bug fixes:
+
+* Restore `stack sdist --pvp-bounds lower` (broken with Stack 2.9.1).
+* Restore building of Stack with Cabal flag `disable-git-info` (broken with
+  Stack 2.11.1).
+* With `stack hoogle`, avoid the message
+  `Minimum version is hoogle-5.0. Found acceptable hoogle-<x.y.z> in your index, requiring its installation.`
+  when a `hoogle` executable has already been found on the `PATH`.
+* Stack's sanity check on a selected GHC now passes GHC flag
+  `-hide-all-packages`, stopping GHC from looking for a package environment in
+  default locations.
+* Restore Stack script files without extensions (broken with Stack 2.11.1).
+* Restore message suffix `due to warnings` with `dump-logs: warning` (broken
+  with Stack 2.11.1).
+* On Windows, the `local-programs-path` directory can now be on a different
+  drive to the system temporary directory and MSYS2 will still be installed.
+
+## v2.11.1 - 2023-05-18
+
+**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](https://github.com/commercialhaskell/stack/issues/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` fields in Cabal files, like they take into account the
+  values of `default-extensions` fields.
+* 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.
+* On Linux, Stack's `setup` command now distinguishes GHC build
+  `tinfo6-libc6-pre232` from existing `tinfo6`. The former refers to systems
+  where the version of `libc6` (the GNU C Library) is not compatible with
+  version 2.32. `tinfo6-libc6-pre232` is now a possible value for the
+  `ghc-build` configuration option.
+
+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 project 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](https://github.com/commercialhaskell/stack/issues/6086).
+* `stack build` with `--file-watch` or `--file-watch-poll` outputs 'pretty'
+  error messages, as intended. See
+  [#5978](https://github.com/commercialhaskell/stack/issues/5978).
+* `stack build` unregisters any project packages for the sub libraries of a
+  project package that is to be unregistered. See
+  [#6046](https://github.com/commercialhaskell/stack/issues/6046).
+* The warning that sublibrary dependency is not supported is no longer triggered
+  by internal libraries.
+
+## v2.9.3.1 - 2023-06-22
+
+Hackage-only release of the `stack` package:
+
+* Supports building against snapshot Stackage LTS Haskell 21.0 (GHC 9.4.5),
+  without extra-deps.
+* Supports build with `persistent-2.14.5.0`, using CPP directives.
+* Supports build with `unix-compat-0.7`, by removing reliance on the module
+  `System.PosixCompat.User` removed in that package.
+* Includes `cabal.project` and `cabal.config` files in the package.
+
+## v2.9.3 - 2022-12-16
+
+**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 stream (`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`).
+* Experimental: Add 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 key 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)
+
+## v2.9.1 - 2022-09-19
+
+**Changes since v2.7.5:**
+
+Release notes:
+
+* After an upgrade from an earlier version of Stack, on first use only,
+  Stack 2.9.1 may warn that it had trouble loading the CompilerPaths cache.
+* The support from the Stack team for executable releases now includes
+  Linux/AArch64 and is limited to:
+
+    * Linux 64-bit/x86_64 (statically-linked)
+    * Linux AArch64 (dynamically-linked)
+    * macOS x86_64
+    * Windows 64-bit/x86_64
+
+Behavior changes:
+
+* `stack build --coverage` will generate a unified coverage report, even if
+  there is only one `*.tix` file, in case a package has tested the library of
+  another package that has not tested its own library. See
+  [#5713](https://github.com/commercialhaskell/stack/issues/5713)
+* `stack --verbose` no longer includes the lengthy raw snapshot layer (rsl) in
+  the debug output by default. The new `stack --[no-]rsl-in-log` flag enables or
+  disables the inclusion of the rsl in the debug output.
+
+Other enhancements:
+
+* Consider GHC 9.2 and 9.4 to be tested compilers and remove warnings.
+* Consider Cabal 3.6 and 3.8 to be a tested libraries and remove warnings.
+* Bump to Hpack 0.35.0.
+* On Windows, the installer now sets `DisplayVersion` in the registry, enabling
+  tools like `winget` to properly read the version number.
+* Adds flag `--script-no-run-compile` (disabled by default) that uses the
+  `--no-run` option with `stack script` (and forces the `--compile` option).
+  This enables a command like `stack --script-no-run-compile Script.hs` to
+  behave like `stack script <arguments> --no-run --compile -- Script.hs` but
+  without having to list all the `<arguments>` in the Stack interpreter options
+  comment in `Script.hs` on the command line. That may help test that scripts
+  compile in CI (continuous integration). See
+  [#5755](https://github.com/commercialhaskell/stack/issues/5755)
+* Fuller help is provided at the command line if a subcommand is missing (for
+  example, `stack ls` now yields the equivalent of `stack ls --help`). See
+  [#809](https://github.com/commercialhaskell/stack/issues/809)
+* Add build option `--cabal-verbosity=VERBOSITY` to specify the Cabal verbosity
+  level (the option accepts Cabal's numerical and extended syntax).
+  See [#1369](https://github.com/commercialhaskell/stack/issues/809)
+* Add the possibility of a `sh` script to customise fully GHC installation. See
+  [#5585](https://github.com/commercialhaskell/stack/pull/5585)
+* `tools` subcommand added to `stack ls`, to list stack's installed tools.
+* `stack uninstall` shows how to uninstall Stack.
+* `--ghc-variant` accepts `int-native` as a variant.
+
+Bug fixes:
+
+* Fix `stack clean --full`, so that the files to be deleted are not in use. See
+  [#5714](https://github.com/commercialhaskell/stack/issues/5714)
+* Fix an inconsistency in the pretty formatting of the output of
+  `stack build --coverage`
+* Fix repeated warning about missing parameters when using `stack new`
+* Include `pantry-0.5.6`: Remove operational and mirror keys from bootstrap key
+  set [#53](https://github.com/commercialhaskell/pantry/pull/53)
+* Pass any CPP options specified via `cpp-options:` in the Cabal file to GHCi
+  using GHC's `-optP` flag. See
+  [#5608](https://github.com/commercialhaskell/stack/pull/5608)
+* On Unix-like operating systems, respect the `with-gcc` option when installing
+  GHC. See [#5609](https://github.com/commercialhaskell/stack/pull/5609)
+* Fixed logic in `get_isa()` in `get-stack.sh` to exclude systems that do not
+  have x86 in their `uname -m` output. See
+  [5792](https://github.com/commercialhaskell/stack/issues/5792).
+* Fixed output of `stack ls snapshots local` on Windows, to behave like that on
+  Unix-like operating systems.
+* Fix non-deterministic test failures when executing a test suite for a
+  multi-project repository with parallelism enabled. See
+  [#5024](https://github.com/commercialhaskell/stack/issues/5024)
+
+## v2.7.5 - 2022-03-06
+
+**Changes since v2.7.3:**
+
+Behavior changes:
+
+* Cloning git repositories is not per sub-directory anymore, see
+  [#5411](https://github.com/commercialhaskell/stack/issues/5411)
+
+Other enhancements:
+
+* `stack setup` supports installing GHC for macOS/AArch64 (M1)
+* `stack upload` supports authentication with a Hackage API key (via
+  `HACKAGE_KEY` environment variable).
+
+Bug fixes:
+
+* Ensure that `extra-path` works for case-insensitive `PATH`s on Windows.
+  See [rio#237](https://github.com/commercialhaskell/rio/pull/237)
+* Fix handling of overwritten `ghc` and `ghc-pkg` locations.
+  [#5597](https://github.com/commercialhaskell/stack/pull/5597)
+* Fix failure to find package when a dependency is shared between projects.
+  [#5680](https://github.com/commercialhaskell/stack/issues/5680)
+* `stack ghci` now uses package flags in `stack.yaml`
+  [#5434](https://github.com/commercialhaskell/stack/issues/5434)
+
+
+## v2.7.3 - 2021-07-20
+
+**Changes since v2.7.1:**
+
+Other enhancements:
+
+* `stack upgrade` will download from `haskellstack.org` before trying
+  `github.com`. See
+  [#5288](https://github.com/commercialhaskell/stack/issues/5288)
+* `stack upgrade` makes less assumptions about archive format. See
+  [#5288](https://github.com/commercialhaskell/stack/issues/5288)
+* Add a `--no-run` flag to the `script` command when compiling.
+
+Bug fixes:
+
+* GHC source builds work properly for recent GHC versions again. See
+  [#5528](https://github.com/commercialhaskell/stack/issues/5528)
+* `stack setup` always looks for the unpacked directory name to support
+  different tar file naming conventions. See
+  [#5545](https://github.com/commercialhaskell/stack/issues/5545)
+* Bump `pantry` version for better OS support. See
+  [pantry#33](https://github.com/commercialhaskell/pantry/issues/33)
+* When building the sanity check for a new GHC install, make sure to clear
+  `GHC_PACKAGE_PATH`.
+* Specifying GHC RTS flags in the `stack.yaml` no longer fails with an error.
+  [#5568](https://github.com/commercialhaskell/stack/pull/5568)
+* `stack setup` will look in sandboxed directories for executables, not
+  relying on `findExecutables. See
+  [GHC issue 20074](https://gitlab.haskell.org/ghc/ghc/-/issues/20074)
+* Track changes to `setup-config` properly to avoid reconfiguring on every
+  change. See
+  [#5578](https://github.com/commercialhaskell/stack/issues/5578)
+
+
+## v2.7.1 - 2021-05-07
+
+**Changes since v2.5.1.1:**
+
+Behavior changes:
+
+* `stack repl` now always warns about GHCi problems with loading multiple
+  packages. It also sets now proper working directory when invoked with
+  one package. See
+  [#5421](https://github.com/commercialhaskell/stack/issues/5421)
+* `custom-setup` dependencies are now properly initialized for `stack dist`.
+  This makes `explicit-setup-deps` no longer required and that option was
+  removed. See
+  [#4006](https://github.com/commercialhaskell/stack/issues/4006)
+
+Other enhancements:
+
+* Consider GHC 9.0 to be a tested compiler and remove warnings.
+* Consider Cabal 3.6 to be a tested library and remove warnings.
+* Nix integration now passes `ghcVersion` (in addition to existing `ghc`) to
+  `shell-file` as an identifier that can be looked up in a compiler attribute
+  set.
+* Nix integration now allows Nix integration if the user is ready in nix-shell.
+  This gets rid of "In Nix shell but reExecL is False" error.
+* `stack list` is a new command to list package versions in a snapshot.
+  See [#5431](https://github.com/commercialhaskell/stack/pull/5431)
+* `custom-preprocessor-extensions` is a new configuration option for allowing
+  Stack to be aware of any custom preprocessors you have added to `Setup.hs`.
+  See [#3491](https://github.com/commercialhaskell/stack/issues/3491)
+* Added `--candidate` flag to `upload` command to upload a package candidate
+  rather than publishing the package.
+* Error output using `--no-interleaved-output` no longer prepends indenting
+  whitespace. This allows emacs compilation-mode and vim quickfix to locate
+  and track errors. See
+  [#5523](https://github.com/commercialhaskell/stack/pull/5523)
+
+Bug fixes:
+
+* `stack new` now supports branches other than `master` as default for GitHub
+  repositories. See
+  [#5422](https://github.com/commercialhaskell/stack/issues/5422)
+* Ignore all errors from `hi-file-parser`. See
+  [#5445](https://github.com/commercialhaskell/stack/issues/5445) and
+  [#5486](https://github.com/commercialhaskell/stack/issues/5486).
+* Support basic auth in package-indices. See
+  [#5509](https://github.com/commercialhaskell/stack/issues/5509).
+* Add support for parsing `.hi`. files from GHC 8.10 and 9.0. See
+  [hi-file-parser#2](https://github.com/commercialhaskell/hi-file-parser/pull/2).
+
+
+## v2.5.1.1 - 2020-12-09
+
+Hackage-only release:
+
+* Support build with persistent-2.11.x and optparse-applicative-0.16.x
+
+
+## v2.5.1 - 2020-10-15
+
+**Changes since v2.3.3**
+
+Major changes:
+
+* Add the `snapshot-location-base` yaml configuration option, which allows to
+  override the default location of snapshot configuration files. This option
+  affects how snapshot synonyms (LTS/Nightly) are expanded to URLs by the
+  `pantry` library.
+* `docker-network` configuration key added to override docker `--net` arg
+
+Behavior changes:
+
+* File watching now takes into account specified targets, old behavior could be
+  restored using the new flag `--watch-all`
+  [#5310](https://github.com/commercialhaskell/stack/issues/5310)
+
+Other enhancements:
+
+* The output of `stack ls dependencies json` now includes keys `sha256` and
+  `size` for dependencies of `type` `archive` in `location`.
+  [#5280](https://github.com/commercialhaskell/stack/issues/5280)
+* Build failures now show a hint to scroll up to the corresponding section
+  [#5279](https://github.com/commercialhaskell/stack/issues/5279)
+* Customisable output styles (see `stack --help` and the `--stack-colors`
+  option, and `stack ls stack-colors --help`) now include `info`, `debug`,
+  `other-level`, `secondary` and `highlight`, used with verbose output.
+
+Bug fixes:
+
+* Fix `stack test --coverage` when using Cabal 3
+* `stack new` now generates PascalCase'd module name correctly.
+  [#5376](https://github.com/commercialhaskell/stack/issues/5376)
+* Connection issues to Casa server no longer cause builds to failure. Casa acts
+  only as an optimizing cache layer, not a critical piece of infrastructure.
+* Fix modified time busting caches by always calculating sha256 digest during
+  the build process.
+  [#5125](https://github.com/commercialhaskell/stack/issues/5125)
+
+
+## v2.3.3 - 2020-08-06
+
+**Changes since v2.3.1**
+
+Other enhancements:
+
+* Add the `stack-developer-mode` flag
+
+Bug fixes:
+
+* When using the `STACK_YAML` env var with Docker, make the path absolute.
+* Fix the problem of `stack repl foo:test:bar` failing without a project build
+  before that. See
+  [#5213](https://github.com/commercialhaskell/stack/issues/5213)
+* Fix `stack sdist` introducing unnecessary sublibrary syntax when using
+  pvp-bounds. See
+  [#5289](https://github.com/commercialhaskell/stack/issues/5289)
+
+## v2.3.1 - 2020-04-29
+
+Release notes:
+
+* We have reduced the number of platforms that we support with executable
+  releases. The reason behind this is that we have been slowed down in our
+  release process until now with issues trying to build executables for less
+  common platforms. In order to make sure we can address issues more quickly
+  (like supporting new GHC versions), we are limiting support from the Stack
+  team to:
+
+    * Linux 64-bit/x86_64 (statically-linked)
+    * macOS x86_64
+    * Windows 64-bit/x86_64
+
+  If others want to provide additional executables, we will definitely be happy
+  for the support. But since our CI system is currently able to produce these
+  three executables only, that's what we will be providing with the next
+  release.
+
+* Since we no longer have dynamically-linked Linux executables, we are removing
+  the `-static` suffix from the static Linux/x86_64 executables. If you have
+  scripts to download the latest stable Linux/x86_64 executable, update them to
+  use `linux-x86_64` instead of `linux-x86_64-static` (if you are already using
+  the former, nothing needs to change). For this release, both are supported,
+  but the next release will no longer have the `-static` variant.
+
+* We are also deprecating the download links at https://stackage.org/stack. See
+  this page for the current installation instructions:
+  https://docs.haskellstack.org/en/stable/install_and_upgrade/.
+
+* These are the canonical locations to download the latest stable binaries from,
+  and will continue to be supported going forward:
+
+    * Linux 64-bit/x86_64 (static):
+      https://get.haskellstack.org/stable/linux-x86_64.tar.gz
+    * macOS x86_64: https://get.haskellstack.org/stable/osx-x86_64.tar.gz
+    * Windows 64-bit/x86_64:
+      https://get.haskellstack.org/stable/windows-x86_64.zip
+
+  As always, binaries for specific versions are available from the GitHub
+  releases: https://github.com/commercialhaskell/stack/releases.
+
+**Changes since v2.1.3.1**
+
+Major changes:
+
+* `setup-info-locations` yaml configuration now allows overwriting the default
+  locations of `stack-setup-2.yaml`.
+  [#5031](https://github.com/commercialhaskell/stack/pull/5031)
+  [#2983](https://github.com/commercialhaskell/stack/issues/2983)
+  [#2913](https://github.com/commercialhaskell/stack/issues/2913)
+
+* The `setup-info` configuration key now allows overwriting parts of the default
+  `setup-info`
+
+* The `--setup-info-yaml` command line flag now may be used in all Stack
+  commands such as `stack build`, and not only in `stack setup`
+
+* The `--setup-info-yaml` may specify multiple locations for `stack-setup.yaml`
+  files.
+
+* The `stack upload` can read first reads environment Variable
+  `$HACKAGE_USERNAME` and `$HACKAGE_PASSWORD` if they are missing only then asks
+  for `username` or `password`
+
+* Fully remove GHCJS support.
+
+* Remove the `freeze` command. It has been replaced by lock files.
+
+Behavior changes:
+
+* Remove the deprecated `--stack-setup-yaml` command line argument in favor of
+  `--setup-info-yaml`. See
+  [#2647](https://github.com/commercialhaskell/stack/issues/2647)
+
+* We now recommend checking in generated Cabal files for repos. When generating
+  lock files for extra-deps that only include `package.yaml` files, a
+  deprecation warning will be generated. Also, those packages will no longer be
+  included in the generated lock files. See
+  [#5210](https://github.com/commercialhaskell/stack/issues/5210).
+
+Other enhancements:
+
+* Add `build-output-timestamps` flag in yaml. Setting it to true prefixes each
+  build log output line with a timestamp.
+
+* Show warning about `local-programs-path` with spaces on windows when running
+  scripts. See
+  [#5013](https://github.com/commercialhaskell/stack/pull/5013)
+
+* Add `ls dependencies json` which will print dependencies as JSON.
+  `ls dependencies --tree`  is now `ls dependencies tree`. See
+  [#4424](https://github.com/commercialhaskell/stack/pull/4424)
+
+* Remove warning for using Stack with GHC 8.8-8.10, and Cabal 3.0-3.2.
+
+* Allow relative paths in `--setup-info-yaml` and tool paths
+  [#3394](https://github.com/commercialhaskell/stack/issues/3394)
+
+* Added the `--only-locals` flag. See
+  [#5272](https://github.com/commercialhaskell/stack/issues/5272)
+
+Bug fixes:
+
+* Upgrade `pantry`: module mapping insertions into the database are now atomic.
+  Previously, if you SIGTERMed at the wrong time while running a script, you
+  could end up with an inconsistent database state.
+
+* `--resolver global` does not retrieve snapshots list from the internet because
+  does not need it. See
+  [#5103](https://github.com/commercialhaskell/stack/issues/5103)
+
+* Fix using relative links in haddocks output.  See
+  [#4971](https://github.com/commercialhaskell/stack/issues/4971).
+
+* Do not include generated Cabal file information in lock files. See
+  [#5045](https://github.com/commercialhaskell/stack/issues/5045).
+
+* Use proper Hoogle executable path when installed automatically. See
+  [#4905](https://github.com/commercialhaskell/stack/issues/4905)
+
+* Fix GHC version for batched package unregistration. See
+  [#4951](https://github.com/commercialhaskell/stack/issues/4951)
+
+* Use Hoogle from the snapshot used and not the latest version. See
+  [#4905](https://github.com/commercialhaskell/stack/issues/4905)
+
+* Resolve "'stty' is not recognized". See
+  [#4901](https://github.com/commercialhaskell/stack/issues/4901)
+
+* Fix missing reconfigure check causing errors when a package gets
+  used in multiple projects. See
+  [#5147](https://github.com/commercialhaskell/stack/issues/5147)
+
+## v2.1.3.1 - 2019-07-16
+
+Hackage-only release:
+
+* Support persistent-template-2.7.x
+* Support rio-0.1.11.0
+* Add `stack.yaml` back to hackage sdist, and add `snapshot.yaml`
+
+
+## v2.1.3 - 2019-07-13
+
+**Changes since v2.1.1**
+
+Behavior changes:
+
+* Disable WAL mode for SQLite3 databases, to improve compatibility with some
+  platforms and filesystems. See
+  [#4876](https://github.com/commercialhaskell/stack/issues/4876).
+
+* By default, do not perform expiry checks in Hackage Security. See
+  [#4928](https://github.com/commercialhaskell/stack/issues/4928).
+
+Other enhancements:
+
+* Do not rerun expected test failures. This is mostly a change that will only
+  affect the Stackage Curator use case, but there is now an additional message
+  letting the user know when a previously-failed test case is being rerun.
+
+* Move configure information for project packages back to .stack-work to improve
+  caching. See
+  [#4893](https://github.com/commercialhaskell/stack/issues/4893).
+
+Bug fixes:
+
+* Fix to allow dependencies on specific versions of local git repositories. See
+  [#4862](https://github.com/commercialhaskell/stack/pull/4862)
+
+* Allow Stack commands to be run in Nix mode without having a project file
+  available. See
+  [#4854](https://github.com/commercialhaskell/stack/issues/4864).
+
+* Removes dependency on gnu-tar for OSX and Linux environment. The
+  `--force-local` option was required only for windows environment.
+
+* Properly wait for the `tar` subprocess to complete before returning, thereby
+  avoiding a SIGTERM screwing up GHC installation. See
+  [#4888](https://github.com/commercialhaskell/stack/issues/4888).
+
+* Use package complete locations from lock files when resolving dependencies in
+  `extra-deps`. See
+  [#4887](https://github.com/commercialhaskell/stack/issues/4887).
+
+* Set the `HASKELL_DIST_DIR` environment to a proper package dist directory so
+  `doctest` is able to load modules autogenerated by Cabal.
+
+* Expose package library when running tests.
+
+* Fix support for non-ASCII module names. See
+  [#4938](https://github.com/commercialhaskell/stack/issues/4938)
+
+Other changes:
+
+* Rename `pantry-tmp` package back to `pantry`, now that we have gained
+  maintainership (which had been used by someone else for a candidate-only test
+  that made it look like the name was free but prevented uploading a real
+  package).
+
+
+## v2.1.1.1 - 2019-06-14
+
+Hackage-only release that removes `stack.yaml` from the sdist.  This is because
+`stack.yaml` now defines a multi-package project, whereas Hackage works on the
+basis on individual packages (see
+[#4860](https://github.com/commercialhaskell/stack/issues/4860))
+
+If building a `stack` executable for distribution, please download the source
+code from https://github.com/commercialhaskell/stack/releases/tag/v2.1.1 and
+build it using Stack itself in order to ensure identical behaviour to official
+binaries. This package on Hackage is provided for convenience and bootstrapping
+purposes.
+
+
+## v2.1.1 - 2019-06-13
+
+The Stack 2 release represents a series of significant changes to how Stack
+works internally. For the vast majority of cases, these changes are backwards
+compatible, in that existing projects will continue to build in the same way
+with Stack 2 as they did with Stack 1. The large version bump is due to the
+fundamental internal changes to cache handling, database storage (using SQLite
+in place of binary files), implicit snapshots (which greatly improve the
+precompiled cache), and moving to Pantry. We have also removed some less used
+features, as listed below.
+
+**Changes since v1.9.3**
+
+Major changes:
+
+* Switch over to pantry for managing packages. This is a major change to Stack's
+  internals, and affects user-visible behavior in a few places. Some highlights:
+    * Drop support for multiple package indices and legacy
+      `00-index.tar` style indices. See
+      [#4137](https://github.com/commercialhaskell/stack/issues/4137).
+    * Support for archives and repos in values of the `packages` key has been
+      removed. Instead, you must use the `extra-deps` key for such dependencies.
+      `packages` now only supports local filepaths.
+    * Add support for Git repositories containing (recursive) submodules.
+    * Addition of new configuration options for specifying a "pantry
+      tree" key, which provides more reproducibility around builds,
+      and (in the future) will be used for more efficient package
+      content downloads. You can also specify package name and version
+      for more efficient config parsing.
+          * __NOTE__ The new `stack freeze` command provides support
+            for automatically generating this additional
+            information.
+    * Package contents and metadata are stored in an SQLite database
+      in place of files on the filesystem. The `pantry` library can be
+      used for interacting with these contents.
+    * Internally, Stack has changed many datatypes, including moving
+      to Cabal's definition of many data types. As a result of such
+      changes, existing cache files will in general be invalidated,
+      resulting in Stack needing to rebuild many previously cached
+      builds in the new version. Sorry :(.
+    * A new command, `stack freeze` has been added which outputs
+      project and snapshot definitions with dependencies pinned to
+      their exact versions.
+    * The `ignore-revision-mismatch` setting is no longer needed, and
+      has been removed.
+    * Overriding GHC boot packages results in any other GHC boot
+      packages depending on it being no longer available as a dependency,
+      such packages need to be added explicitly when needed. See
+      [#4510] (https://github.com/commercialhaskell/stack/issues/4510).
+    * Cabal solver integration was not updated to support newer
+      `cabal-install` versions so `stack solver` command was removed as
+      well as a related option `--solver` from `stack new` and
+      `stack init`.
+* Upgrade to Cabal 2.4
+    * Note that, in this process, the behavior of file globbing has
+      been modified to match that of Cabal. In particular, this means
+      that for Cabal spec versions less than 2.4, `*.txt` will
+      match `foo.txt`, but not `foo.2.txt`.
+* Remove the `stack image` command. With the advent of Docker multistage
+  builds, this functionality is no longer useful. For an example, please see
+  [Building Haskell Apps with Docker](https://www.fpcomplete.com/blog/2017/12/building-haskell-apps-with-docker).
+* Experimental: Support building GHC from source
+    * Stack now supports building and installing GHC from source. The built GHC
+      is uniquely identified by a commit id and an Hadrian "flavour" (Hadrian is
+      the newer GHC build system), hence `compiler` can be set to use a GHC
+      built from source with `ghc-git-COMMIT-FLAVOUR`
+* `stack.yaml` now supports a `configure-options`, which are passed directly to
+  the `configure` step in the Cabal build process. See
+  [#1438](https://github.com/commercialhaskell/stack/issues/1438)
+* Remove support for building GHCJS itself. Future releases of Stack
+  may remove GHCJS support entirely.
+* Support for lock files for pinning exact project dependency versions
+
+Behavior changes:
+
+* `stack.yaml` now supports `snapshot`: a synonym for `resolver`. See
+  [#4256](https://github.com/commercialhaskell/stack/issues/4256)
+* `stack script` now passes `-i -idir` in to the `ghc`
+  invocation. This makes it so that the script can import local
+  modules, and fixes an issue where `.hs` files in the current
+  directory could affect interpretation of the script. See
+  [#4538](https://github.com/commercialhaskell/stack/pull/4538)
+* When using `stack script`, custom snapshot files will be resolved
+  relative to the directory containing the script.
+* Remove the deprecated `--upgrade-cabal` flag to `stack setup`.
+* Support the `drop-packages` key in `stack.yaml`
+* Remove the GPG signing code during uploads. The GPG signatures have
+  never been used yet, and there are no plans to implement signature
+  verification.
+* Remove the `--plain` option for the `exec` family of commands
+* Always use the `--exact-configuration` Cabal configuration option when
+  building (should mostly be a non-user-visible enhancement).
+* No longer supports Cabal versions older than `1.19.2`.  This means
+  projects using snapshots earlier than `lts-3.0` or
+  `nightly-2015-05-05` will no longer build.
+* Remove the `stack docker cleanup` command.  Docker itself now has
+  [`docker image prune`](https://docs.docker.com/engine/reference/commandline/image_prune/)
+  and
+  [`docker container prune`](https://docs.docker.com/engine/reference/commandline/container_prune/),
+  which you can use instead.
+* Interleaved output is now turned on by default, see
+  [#4702](https://github.com/commercialhaskell/stack/issues/4702). In
+  addition, the `packagename> ` prefix is no longer included in
+  interleaved mode when only building a single target.
+* The `-fhide-source-paths` GHC option is now enabled by default and
+  can be disabled via the `hide-source-paths` configuration option in
+  `stack.yaml`. See
+  [#3784](https://github.com/commercialhaskell/stack/issues/3784)
+* Stack will reconfigure a package if you modify your `PATH` environment
+  variable. See
+  [#3138](https://github.com/commercialhaskell/stack/issues/3138).
+* For GHC 8.4 and later, disable the "shadowed dependencies" workaround. This
+  means that Stack will no longer have to force reconfigures as often. See
+  [#3554](https://github.com/commercialhaskell/stack/issues/3554).
+* When building a package, Stack takes a lock on the dist directory in
+  use to avoid multiple runs of Stack from trampling each others'
+  files. See
+  [#2730](https://github.com/commercialhaskell/stack/issues/2730).
+* Stack will check occasionally if there is a new version available and prompt
+  the user to upgrade. This will not incur any additional network traffic, as
+  it will piggy-back on the existing Hackage index updates. You can set
+  `recommend-stack-upgrade: false` to bypass this. See
+  [#1681](https://github.com/commercialhaskell/stack/issues/1681).
+* `stack list-dependencies` has been removed in favour of
+  `stack ls dependencies`.
+* The new default for `--docker-auto-pull` is enabled. See
+  [#3332](https://github.com/commercialhaskell/stack/issues/3332).
+
+Other enhancements:
+
+* Support MX Linux in get-stack.sh. Fixes
+  [#4769](https://github.com/commercialhaskell/stack/issues/4769).
+* Defer loading up of files for project packages. This allows us to get
+  plan construction errors much faster, and avoid some unnecessary
+  work when only building a subset of packages. This is especially
+  useful for the curator use case.
+* Existing global option `--color=WHEN` is now also available as a
+  non-project-specific yaml configuration parameter `color:`.
+* Adopt the standard proposed at http://no-color.org/, that color should not be
+  added by default if the `NO_COLOR` environment variable is present.
+* New command `stack ls stack-colors` lists the styles and the associated 'ANSI'
+  control character sequences that Stack uses to color some of its output. See
+  `stack ls stack-colors --help` for more information.
+* New global option `--stack-colors=STYLES`, also available as a
+  non-project-specific yaml configuration parameter, allows a Stack user to
+  redefine the default styles that Stack uses to color some of its output. See
+  `stack --help` for more information.
+* British English spelling of 'color' (colour) accepted as an alias for
+  `--color`, `--stack-colors`, `stack ls stack-colors` at the command line and
+  for `color:` and `stack-colors:` in yaml configuration files.
+* New build option `--ddump-dir`. (See
+  [#4225](https://github.com/commercialhaskell/stack/issues/4225))
+* Stack parses and respects the `preferred-versions` information from
+  Hackage for choosing latest version of a package in some cases,
+  e.g. `stack unpack packagename`.
+* The components output in the `The main module to load is ambiguous` message
+  now include package names so they can be more easily copy-pasted.
+* Git repos are shared across multiple projects. See
+  [#3551](https://github.com/commercialhaskell/stack/issues/3551)
+* Use en_US.UTF-8 locale by default in pure Nix mode so programs will not
+  crash because of Unicode in their output
+  [#4095](https://github.com/commercialhaskell/stack/issues/4095)
+* Add `--tree` to `ls dependencies` to list dependencies as tree.
+  [#4101](https://github.com/commercialhaskell/stack/issues/4101)
+* Add `--pedantic` to `ghci` to run with `-Wall` and `-Werror`
+  [#4463](https://github.com/commercialhaskell/stack/issues/4463)
+* Add `--cabal-files` flag to `stack ide targets` command.
+* Add `--stdout` flag to all `stack ide` subcommands.
+* Use batches when unregistering packages with `ghc-pkg`.
+  (See [#2662](https://github.com/commercialhaskell/stack/issues/2662))
+* `get-stack` script now works on Windows CI machines of Appveyor,
+  Travis and Azure Pipelines. See
+  [#4535](https://github.com/commercialhaskell/stack/issues/4535)/
+* Show snapshot being used when `stack ghci` is invoked outside of a project
+  directory. See
+  [#3651](https://github.com/commercialhaskell/stack/issues/3651)
+* The script interpreter now accepts a `--extra-dep` flag for adding
+  packages not present in the snapshot. Currently, this only works
+  with packages from Hackage, not Git repos or archives.
+* When using the script interpreter with `--optimize` or `--compile`,
+  Stack will perform an optimization of checking whether a newer
+  executable exists, making reruns significantly faster. There is a
+  downside to this, however: if you have a multifile script, and
+  change one of the dependency modules, Stack will not automatically
+  detect and recompile.
+* `stack clean` will delete the entire `.stack-work/dist` directory,
+  not just the relevant subdirectory for the current GHC version. See
+  [#4480](https://github.com/commercialhaskell/stack/issues/4480).
+* Add `stack purge` as a shortcut for `stack clean --full`. See
+  [#3863](https://github.com/commercialhaskell/stack/issues/3863).
+* Both `stack dot` and `stack ls dependencies` accept a
+  `--global-hints` flag to bypass the need for an installed GHC. See
+  [#4390](https://github.com/commercialhaskell/stack/issues/4390).
+* Add the `stack config env` command for getting shell script environment
+  variables. See [#620](https://github.com/commercialhaskell/stack/issues/620).
+* Less verbose output from `stack setup` on Windows. See
+  [#1212](https://github.com/commercialhaskell/stack/issues/1212).
+* Add an optional `ignore-expiry` key to the `hackage-security` key of
+  `~/.stack/config.yaml`. It allows disabling of timestamp expiration
+  verification just like `cabal --ignore-expiry` does. The flag is not enabled
+  by default so that the default functionality is not changed.
+* Include default values for most command line flags in the `--help` output. See
+  [#893](https://github.com/commercialhaskell/stack/issues/893).
+* Set the `GHC_ENVIRONMENT` environment variable to specify dependency
+  packages explicitly when running test. This is done to prevent
+  ambiguous module name errors in `doctest` tests.
+* `get-stack` script now works on Windows CI machines of Appveyor,
+  Travis and Azure Pipelines. See
+  [#4535](https://github.com/commercialhaskell/stack/issues/4535)
+* Warn when a Docker image does not include a `PATH` environment
+  variable. See
+  [#2472](https://github.com/commercialhaskell/stack/issues/2742)
+* When using `system-ghc: true`, Stack will now find the appropriate GHC
+  installation based on the version suffix, allowing you to more easily switch
+  between various system-installed GHCs. See
+  [#2433](https://github.com/commercialhaskell/stack/issues/2433).
+* `stack init` will now support create a `stack.yaml` file without any local
+  packages. See [#2465](https://github.com/commercialhaskell/stack/issues/2465)
+* Store caches in SQLite database instead of files.
+* No longer use "global" Docker image database (`docker.db`).
+* User config files are respected for the script command. See
+  [#3705](https://github.com/commercialhaskell/stack/issues/3705),
+  [#3887](https://github.com/commercialhaskell/stack/issues/3887).
+* Set the `GHC_ENVIRONMENT` environment variable to `-` to tell GHC to ignore
+  any such files when GHC is new enough (>= 8.4.4), otherwise simply unset the
+  variable. This allows Stack to have control of package databases when running
+  commands like `stack exec ghci`, even in the presence of implicit environment
+  files created by `cabal new-build`. See
+  [#4706](https://github.com/commercialhaskell/stack/issues/4706).
+* Use a database cache table to speed up discovery of installed GHCs
+* You can specify multiple `--test-arguments` options. See
+  [#2226](https://github.com/commercialhaskell/stack/issues/2226)
+* Windows terminal width detection is now done. See
+  [#3588](https://github.com/commercialhaskell/stack/issues/3588)
+* On Windows, informs users if the 'programs' path contains a space character
+  and further warns users if that path does not have an alternative short
+  ('8 dot 3') name, referencing the `local-programs-path` configuration option.
+  See [#4726](https://github.com/commercialhaskell/stack/issues/4726)
+* Add `--docker-mount-mode` option to set the Docker volume mount mode
+  for performance tuning on macOS.
+
+Bug fixes:
+
+* Ignore duplicate files for a single module when a Haskell module was
+  generated from a preprocessor file. See
+  [#4076](https://github.com/commercialhaskell/stack/issues/4076).
+* Only track down components in current directory if there are no
+  hs-source-dirs found. This eliminates a number of false-positive
+  warnings, similar to
+  [#4076](https://github.com/commercialhaskell/stack/issues/4076).
+* Handle a change in GHC's hi-dump format around `addDependentFile`,
+  which now includes a hash. See
+  [yesodweb/yesod#1551](https://github.com/yesodweb/yesod/issues/1551)
+* Fix `subdirs` for git repos in `extra-deps` to match whole directory names.
+  Also fixes for `subdirs: .`. See
+  [#4292](https://github.com/commercialhaskell/stack/issues/4292)
+* Fix for git packages to update submodules to the correct state. See
+  [#4314](https://github.com/commercialhaskell/stack/pull/4314)
+* Add `--cabal-files` flag to `stack ide targets` command.
+* Do not download ghc when using `stack clean`.
+* Support loading in GHCi definitions from symlinked C files. Without this
+  patch, Stack will try to find object files in the directory pointed to
+  by symlinks, while GCC will produce the object files in the original
+  directory. See
+  [#4402](https://github.com/commercialhaskell/stack/pull/4402)
+* Fix handling of GitHub and URL templates on Windows. See
+  [#4394](https://github.com/commercialhaskell/stack/issues/4394)
+* Fix `--file-watch` not responding to file modifications when running
+  inside docker on Mac. See
+  [#4506](https://github.com/commercialhaskell/stack/issues/4506)
+* Using `--ghc-options` with `stack script --compile` now works.
+* Ensure the detailed-0.9 type tests work.
+  See [#4453](https://github.com/commercialhaskell/stack/issues/4453).
+* Extra include and lib dirs are now order-dependent. See
+  [#4527](https://github.com/commercialhaskell/stack/issues/4527).
+* Apply GHC options when building a `Setup.hs` file. See
+  [#4526](https://github.com/commercialhaskell/stack/issues/4526).
+* Stack handles ABI changes in FreeBSD 12 by differentiating that version from
+  previous.
+* Help text for the `templates` subcommand now reflects behaviour in Stack 1.9
+  — that it downloads and shows a help file, rather than listing available
+  templates.
+* Fix detection of AArch64 platform (this broke when we upgraded to a newer
+  Cabal version).
+* Docker: fix detecting and pulling missing images with `--docker-auto-pull`.
+  See
+  [#4598](https://github.com/commercialhaskell/stack/issues/4598)
+* Hackage credentials are not world-readable. See
+  [#2159](https://github.com/commercialhaskell/stack/issues/2159).
+* Warnings are dumped from logs even when color is enabled. See
+  [#2997](https://github.com/commercialhaskell/stack/issues/2997)
+* `stack init` will now work for Cabal files with sublibraries. See
+  [#4408](https://github.com/commercialhaskell/stack/issues/4408)
+* When the Cabal spec version is newer than the global Cabal version, build
+  against the snapshot's Cabal library. See
+  [#4488](https://github.com/commercialhaskell/stack/issues/4488)
+* Docker: fix detection of expected subprocess failures.  This fixes
+  downloading a compatible `stack` executable  when the host `stack` is not
+  compatible with the Docker image (on Linux), and does not show an unnecessary
+  extra error when the in-container re-exec'ed `stack` exits with failure.
+* The `stack ghci` command's `--ghc-options` flag now parses multiple options.
+  See [#3315](https://github.com/commercialhaskell/stack/issues/3315).
+
+
+## v1.9.3.1 - 2019-04-18
+
+Hackage-only release with no user facing changes (added compatibility
+with `rio-0.1.9.2`).
+
+
+## v1.9.3 - 2018-12-02
+
+Bug fixes:
+
+* Stack can now be compiled again inside a directory that does not
+  contain a `.git` directory. See
+  [#4364](https://github.com/commercialhaskell/stack/issues/4364#issuecomment-431600841)
+* Handle a change in GHC's hi-dump format around `addDependentFile`,
+  which now includes a hash. See
+  [yesodweb/yesod#1551](https://github.com/yesodweb/yesod/issues/1551)
+* Allow variables to appear in template file names.
+
+
+## v1.9.1.1 - 2018-11-14
+
+Hackage-only release with no user facing changes.
+
+* Stack can now be compiled again inside a directory that does not
+  contain a `.git` directory. See
+  [#4364](https://github.com/commercialhaskell/stack/issues/4364#issuecomment-431600841)
+
+
+## v1.9.1 - 2018-10-17
+
+Release notes:
+
+* Statically-linked Linux executables are back again, thanks to
+  [@nh2](https://github.com/nh2).
+* We will be deleting the Ubuntu, Debian, CentOS, Fedora, and Arch package repos
+  from `download.fpcomplete.com` soon. These have been deprecated for over a
+  year and have not received new releases, but were left in place for
+  compatibility with older scripts.
+
+Major changes:
+
+* Upgrade to Cabal 2.4
+    * Note that, in this process, the behavior of file globbing has
+      been modified to match that of Cabal. In particular, this means
+      that for Cabal spec versions less than 2.4, `*.txt` will
+      match `foo.txt`, but not `foo.2.txt`.
+* `GHCJS` support is being downgraded to 'experimental'. A warning notifying the
+  user of the experimental status of `GHCJS` will be displayed.
+
+Behavior changes:
+
+* `ghc-options` from `stack.yaml` are now appended to `ghc-options` from
+  `config.yaml`, whereas before they would be replaced.
+* `stack build` will now announce when sublibraries of a package are being
+  build, in the same way executables, tests, benchmarks and libraries are
+  announced
+* `stack sdist` will now announce the destination of the generated tarball,
+    regardless of whether or not it passed the sanity checks
+* The `--upgrade-cabal` option to `stack setup` has been
+  deprecated. This feature no longer works with GHC 8.2 and
+  later. Furthermore, the reason for this flag originally being
+  implemented was drastically lessened once Stack started using the
+  snapshot's `Cabal` library for custom setups. See:
+  [#4070](https://github.com/commercialhaskell/stack/issues/4070).
+* With the new namespaced template feature, `stack templates` is no
+  longer able to meaningfully display a list of all templates
+  available. Instead, the command will download and display a
+  [help file](https://github.com/commercialhaskell/stack-templates/blob/master/STACK_HELP.md)
+  with more information on how to discover templates. See:
+  [#4039](https://github.com/commercialhaskell/stack/issues/4039)
+* Tools used during building ('build tools') are now handled in a similar way to
+  `cabal-install`. In particular, for legacy `build-tools` fields, we use a
+  hard-coded list of build tools in place of looking up build tool packages in a
+  tool map. This both brings Stack's behavior closer into line with
+  `cabal-install`, avoids some bugs, and opens up some possible
+  optimizations/laziness. See:
+  [#4125](https://github.com/commercialhaskell/stack/issues/4125).
+* Mustache templating is not applied to large files (over 50kb) to
+  avoid performance degradation. See:
+  [#4133](https://github.com/commercialhaskell/stack/issues/4133).
+* `stack upload` signs the package by default, as documented. `--no-signature`
+  turns the signing off.
+  [#3739](https://github.com/commercialhaskell/stack/issues/3739)
+* In case there is a network connectivity issue while trying to
+  download a template, Stack will check whether that template had
+  been downloaded before. In that case, the cached version will be
+  used. See [#3850](https://github.com/commercialhaskell/stack/issues/3850).
+* In Stack's script interpreter, `-- stack --verbosity=info script` and
+  `-- stack script --verbosity=info` now have the same effect and both override
+  the `--verbosity=error` default in the interpreter. Previously the default
+  meant the former was equivalent to
+  `-- stack --verbosity=info script --verbosity=error` and the latter was
+  equivalent to `-- stack --verbosity=error script --verbosity=info`, with the
+  subcommand's global option having precedence over the Stack command's
+  global option in each case. See
+  [#5326](https://github.com/commercialhaskell/stack/issues/5326).
+
+Other enhancements:
+
+* On Windows before Windows 10, --color=never is the default on terminals that
+  can support ANSI color codes in output only by emulation
+* On Windows, recognise a 'mintty' (false) terminal as a terminal, by default
+* `stack build` issues a warning when `base` is explicitly listed in
+  `extra-deps` of `stack.yaml`
+* `stack build` suggests trying another GHC version should the build
+  plan end up requiring unattainable `base` version.
+* A new sub command `run` has been introduced to build and run a specified
+  executable similar to `cabal run`. If no executable is provided as the first
+  argument, it defaults to the first available executable in the project.
+* `stack build` missing dependency suggestions (on failure to construct a valid
+  build plan because of missing deps) are now printed with their latest Cabal
+  file revision hash. See
+  [#4068](https://github.com/commercialhaskell/stack/pull/4068).
+* Added new `--tar-dir` option to `stack sdist`, that allows to copy
+  the resulting tarball to the specified directory.
+* Introduced the `--interleaved-output` command line option and
+  `build.interleaved-output` config value which causes multiple concurrent
+  builds to dump to stderr at the same time with a `packagename> ` prefix. See
+  [#3225](https://github.com/commercialhaskell/stack/issues/3225).
+* The default retry strategy has changed to exponential backoff.
+  This should help with
+  [#3510](https://github.com/commercialhaskell/stack/issues/3510).
+* `stack new` now allows template names of the form `username/foo` to
+  download from a user other than `commercialstack` on GitHub, and can be
+  prefixed with the service `github:`, `gitlab:`, or `bitbucket:`. See
+  [#4039](https://github.com/commercialhaskell/stack/issues/4039)
+* Switch to `githash` to include some unmerged bugfixes in `gitrev`
+  Suggestion to add `'allow-newer': true` now shows path to user config
+  file where this flag should be put into
+  [#3685](https://github.com/commercialhaskell/stack/issues/3685)
+* `stack ghci` now asks which main target to load before doing the build,
+  rather than after
+* Bump to Hpack 0.29.0
+* With GHC 8.4 and later, Haddock is given the `--quickjump` flag.
+* It is possible to specify the Hackage base URL to upload packages to, instead
+  of the default of `https://hackage.haskell.org/`, by using `hackage-base-url`
+  configuration option.
+* When using Nix, if a specific minor version of GHC is not requested, the
+  latest minor version in the given major branch will be used automatically.
+
+Bug fixes:
+
+* `stack ghci` now does not invalidate `.o` files on repeated runs,
+  meaning any modules compiled with `-fobject-code` will be cached
+  between ghci runs. See
+  [#4038](https://github.com/commercialhaskell/stack/pull/4038).
+* `~/.stack/config.yaml` and `stack.yaml` terminating by newline
+* The previous released caused a regression where some `stderr` from the
+  `ghc-pkg` command showed up in the terminal. This output is now silenced.
+* A regression in recompilation checking introduced in v1.7.1 has been fixed.
+  See [#4001](https://github.com/commercialhaskell/stack/issues/4001)
+* `stack ghci` on a package with internal libraries was erroneously looking
+  for a wrong package corresponding to the internal library and failing to
+  load any module. This has been fixed now and changes to the code in the
+  library and the sublibrary are properly tracked. See
+  [#3926](https://github.com/commercialhaskell/stack/issues/3926).
+* For packages with internal libraries not depended upon, `stack build` used
+  to fail the build process since the internal library was not built but it
+  was tried to be registered. This is now fixed by always building internal
+  libraries. See
+  [#3996](https://github.com/commercialhaskell/stack/issues/3996).
+* `--no-nix` was not respected under NixOS
+* Fix a regression which might use a lot of RAM. See
+  [#4027](https://github.com/commercialhaskell/stack/issues/4027).
+* Order of commandline arguments does not matter anymore.
+  See [#3959](https://github.com/commercialhaskell/stack/issues/3959)
+* When prompting users about saving their Hackage credentials on upload,
+  flush to stdout before waiting for the response so the prompt actually
+  displays. Also fixes a similar issue with ghci target selection prompt.
+* If `cabal` is not on PATH, running `stack solver` now prompts the user
+  to run `stack install cabal-install`
+* `stack build` now succeeds in building packages which contain sublibraries
+  which are dependencies of executables, tests or benchmarks but not of the
+  main library. See
+  [#3787](https://github.com/commercialhaskell/stack/issues/3787).
+* Sublibraries are now properly considered for coverage reports when the test
+  suite depends on the internal library. Before, Stack was erroring when
+  trying to generate the coverage report, see
+  [#4105](https://github.com/commercialhaskell/stack/issues/4105).
+* Sublibraries are now added to the precompiled cache and recovered from there
+  when the snapshot gets updated. Previously, updating the snapshot when there
+  was a package with a sublibrary in the snapshot resulted in broken builds.
+  This is now fixed, see
+  [#4071](https://github.com/commercialhaskell/stack/issues/4071).
+* [#4114](https://github.com/commercialhaskell/stack/issues/4114) Stack pretty
+  prints error messages with proper `error` logging level instead of `warning`
+  now. This also fixes self-executing scripts not piping plan construction
+  errors from runhaskell to terminal (issue
+  [#3942](https://github.com/commercialhaskell/stack/issues/3942)).
+* Fix invalid "While building Setup.hs" when Cabal calls fail. See:
+  [#3934](https://github.com/commercialhaskell/stack/issues/3934)
+* `stack upload` signs the package by default, as documented. `--no-signature`
+  turns the signing off.
+  [#3739](https://github.com/commercialhaskell/stack/issues/3739)
+
+
+## v1.7.1 - 2018-04-27
+
+Release notes:
+
+* AArch64 (64-bit ARM) executables are now available for the first time.
+* Statically-linked Linux executables are no longer available, due to difficulty
+  with GHC 8.2.2 on Alpine Linux.
+* 32-bit Linux GMP4 executables for CentOS 6 are no longer available, since
+  GHC 8.2.2 is no longer being built for that platform.
+
+Major changes:
+
+* Upgrade from Cabal 2.0 to Cabal 2.2
+
+Behavior changes:
+
+* `stack setup` no longer uses different GHC configure options on Linux
+  distributions that use GCC with PIE enabled by default.  GHC detects
+  this itself since ghc-8.0.2, and Stack's attempted workaround for older
+  versions caused more problems than it solved.
+* `stack new` no longer initializes a project if the project template contains
+   a `stack.yaml` file.
+
+Other enhancements:
+
+* A new sub command `ls` has been introduced to Stack to view
+  local and remote snapshots present in the system. Use `stack ls
+  snapshots --help` to get more details about it.
+* `list-dependencies` has been deprecated. The functionality has
+  to accessed through the new `ls dependencies` interface. See
+  [#3669](https://github.com/commercialhaskell/stack/issues/3669)
+  for details.
+* Specify User-Agent HTTP request header on every HTTP request.
+  See [#3628](https://github.com/commercialhaskell/stack/issues/3628) for details.
+* `stack setup` looks for GHC binary distributions and installations by any OS
+  key that is compatible (rather than only checking a single one). This is
+  relevant on Linux where different distributions may have different
+  combinations of libtinfo 5/6, ncurses 5/6, and gmp 4/5, and will allow
+  simplifying the setup-info metadata YAML for future GHC releases.
+* The build progress bar reports names of packages currently building.
+* `stack setup --verbose` causes verbose output of GHC configure process.
+  See [#3716](https://github.com/commercialhaskell/stack/issues/3716)
+* Improve the error message when an `extra-dep` from a path or git reference
+  cannot be found. See
+  [#3808](https://github.com/commercialhaskell/stack/pull/3808)
+* Nix integration is now disabled on windows even if explicitly enabled,
+  since it is not supported. See
+  [#3600](https://github.com/commercialhaskell/stack/issues/3600)
+* `stack build` now supports a new flag `--keep-tmp-files` to retain
+  intermediate files and directories for the purpose of debugging. It is best
+  used with ghc's equivalent flag,
+  i.e. `stack build --keep-tmp-files --ghc-options=-keep-tmp-files`.
+  See [#3857](https://github.com/commercialhaskell/stack/issues/3857)
+* Improved error messages for snapshot parse exceptions
+* `stack unpack` now supports a `--to /target/directory` option to
+  specify where to unpack the package into
+* `stack hoogle` now supports a new flag `--server` that launches local
+  Hoogle server on port 8080. See
+  [#2310](https://github.com/commercialhaskell/stack/issues/2310)
+
+Bug fixes:
+
+* The script interpreter's implicit file arguments are now passed before other
+  arguments. See
+  [#3658](https://github.com/commercialhaskell/stack/issues/3658).
+  In particular, this makes it possible to pass `-- +RTS ... -RTS` to specify
+  RTS arguments used when running the script.
+* Do not ignore the template `year` parameter in config files, and clarify the
+  surrounding documentation. See
+  [#2275](https://github.com/commercialhaskell/stack/issues/2275).
+* Benchmarks used to be run concurrently with other benchmarks
+  and build steps. This is non-ideal because CPU usage of other processes
+  may interfere with benchmarks. It also prevented benchmark output from
+  being displayed by default. This is now fixed. See
+  [#3663](https://github.com/commercialhaskell/stack/issues/3663).
+* `stack ghci` now allows loading multiple packages with the same
+  module name, as long as they have the same filepath. See
+  [#3776](https://github.com/commercialhaskell/stack/pull/3776).
+* `stack ghci` no longer always adds a dependency on `base`. It is
+  now only added when there are no local targets. This allows it to
+  be to load code that uses replacements for `base`. See
+  [#3589](https://github.com/commercialhaskell/stack/issues/3589#issuecomment)
+* `stack ghci` now uses correct paths for autogen files with
+  [#3791](https://github.com/commercialhaskell/stack/issues/3791)
+* When a package contained sublibraries, Stack was always recompiling the
+  package. This has been fixed now, no recompilation is being done because of
+  sublibraries. See
+  [#3899](https://github.com/commercialhaskell/stack/issues/3899).
+* The `get-stack.sh` install script now matches manual instructions
+  when it comes to Debian/Fedora/CentOS install dependencies.
+* Compile Cabal-simple with gmp when using Nix.
+  See [#2944](https://github.com/commercialhaskell/stack/issues/2944)
+* `stack ghci` now replaces the Stack process with ghci. This improves
+  signal handling behavior. In particular, handling of Ctrl-C.  To make
+  this possible, the generated files are now left behind after exit.
+  The paths are based on hashing file contents, and it is stored in the
+  system temporary directory, so this should not result in too much
+  garbage. See
+  [#3821](https://github.com/commercialhaskell/stack/issues/3821).
+
+
+## v1.6.5 - 2018-02-19
+
+Bug fixes:
+
+* Some unnecessary rebuilds when no files were changed are now avoided, by
+  having a separate build cache for each component of a package. See
+  [#3732](https://github.com/commercialhaskell/stack/issues/3732).
+* Correct the behavior of promoting a package from snapshot to local
+  package. This would get triggered when version bounds conflicted in
+  a snapshot, which could be triggered via Hackage revisions for old
+  packages. This also should allow custom snapshots to define
+  conflicting versions of packages without issue. See
+  [Stackage issue #3185](https://github.com/fpco/stackage/issues/3185).
+* When promoting packages from snapshot to local, we were
+  occasionally discarding the actual package location content and
+  instead defaulting to pulling the package from the index. We now
+  correctly retain this information. Note that if you were affected by
+  this bug, you will likely need to delete the binary build cache
+  associated with the relevant custom snapshot. See
+  [#3714](https://github.com/commercialhaskell/stack/issues/3714).
+* `--no-rerun-tests` has been fixed. Previously, after running a test
+  we were forgetting to record the result, which meant that all tests
+  always ran even if they had already passed before. See
+  [#3770](https://github.com/commercialhaskell/stack/pull/3770).
+* Includes a patched version of `hackage-security` which fixes both
+  some issues around asynchronous exception handling, and moves from
+  directory locking to file locking, making the update mechanism
+  resilient against SIGKILL and machine failure. See `hackage-security` issue
+  [#187](https://github.com/haskell/hackage-security/issues/187)
+  and Stack issue
+  [#3073](https://github.com/commercialhaskell/stack/issues/3073).
+
+## v1.6.3.1 - 2018-02-16
+
+Hackage-only release with no user facing changes (updated to build with
+newer version of Hpack dependency).
+
+## v1.6.3 - 2017-12-23
+
+Enhancements:
+
+* In addition to supporting `.tar.gz` and `.zip` files as remote archives,
+  plain `.tar` files are now accepted too. This will additionally help with
+  cases where HTTP servers mistakenly set the transfer encoding to `gzip`. See
+  [#3647](https://github.com/commercialhaskell/stack/issues/3647).
+* Links to docs.haskellstack.org ignore Stack version patchlevel.
+* Downloading Docker-compatible `stack` executable ignores Stack version
+  patchlevel.
+
+Bug fixes:
+
+* For versions of Cabal before 1.24, ensure that the dependencies of
+  non-buildable components are part of the build plan to work around an old
+  Cabal bug. See
+  [#3631](https://github.com/commercialhaskell/stack/issues/3631).
+* Run the Cabal file checking in the `sdist` command more reliably by
+  allowing the Cabal library to flatten the
+  `GenericPackageDescription` itself.
+
+## v1.6.1.1 - 2017-12-20
+
+Hackage-only release with no user facing changes (updated to build with
+newer dependency versions).
+
+## v1.6.1 - 2017-12-07
+
+Major changes:
+
+* Complete overhaul of how snapshots are defined, the `packages` and
+  `extra-deps` keys, and a number of related items. For full
+  details, please see the
+  [writeup](https://www.fpcomplete.com/blog/2017/07/stacks-new-extensible-snapshots)
+  on these changes.
+  [PR #3249](https://github.com/commercialhaskell/stack/pull/3249),
+  see the PR description for a number of related issues.
+* Upgraded to version 2.0 of the Cabal library.
+
+Behavior changes:
+
+* The `--install-ghc` flag is now on by default. For example, if you
+  run `stack build` in a directory requiring a GHC that you do not
+  currently have, Stack will automatically download and install that
+  GHC. You can explicitly set `install-ghc: false` or pass the flag
+  `--no-install-ghc` to regain the previous behavior.
+* `stack ghci` no longer loads modules grouped by package. This is
+  always an improvement for plain ghci - it makes loading faster and
+  less noisy. For intero, this has the side-effect that it will no
+  longer load multiple packages that depend on TH loading relative
+  paths.  TH relative paths will still work when loading a single
+  package into intero. See
+  [#3309](https://github.com/commercialhaskell/stack/issues/3309)
+* Setting GHC options for a package via `ghc-options:` in your
+  `stack.yaml` will promote it to a local package, providing for more
+  consistency with flags and better reproducibility. See:
+  [#849](https://github.com/commercialhaskell/stack/issues/849)
+* The `package-indices` setting with Hackage no longer works with the
+  `00-index.tar.gz` tarball, but must use the `01-index.tar.gz` file
+  to allow revised packages to be found.
+* Options passed via `--ghci-options` are now passed to the end of the
+  invocation of ghci, instead of the middle.  This allows using `+RTS`
+  without an accompanying `-RTS`.
+* When auto-detecting `--ghc-build`, `tinfo6` is now preferred over
+  `standard` if both versions of libtinfo are installed
+* Addition of `stack build --copy-compiler-tool`, to allow tools like
+  intero to be installed globally for a particular compiler.
+  [#2643](https://github.com/commercialhaskell/stack/issues/2643)
+* Stack will ask before saving hackage credentials to file. This new
+  prompt can be avoided by using the `save-hackage-creds` setting. Please
+  see [#2159](https://github.com/commercialhaskell/stack/issues/2159).
+* The `GHCRTS` environment variable will no longer be passed through to
+  every program Stack runs. Instead, it will only be passed through
+  commands like `exec`, `runghc`, `script`, `ghci`, etc.
+  See [#3444](https://github.com/commercialhaskell/stack/issues/3444).
+* `ghc-options:` for specific packages will now come after the options
+  specified for all packages / particular sets of packages. See
+  [#3573](https://github.com/commercialhaskell/stack/issues/3573).
+* The `pvp-bounds` feature is no longer fully functional, due to some
+  issues with the Cabal library's printer. See
+  [#3550](https://github.com/commercialhaskell/stack/issues/3550).
+
+Other enhancements:
+
+* The `with-hpack` configuration option specifies an Hpack executable to use
+  instead of the Hpack bundled with Stack. Please
+  see [#3179](https://github.com/commercialhaskell/stack/issues/3179).
+* It is now possible to skip tests and benchmarks using `--skip`
+  flag
+* `GitSHA1` is now `StaticSHA256` and is implemented using the
+  `StaticSize 64 ByteString` for improved performance. See
+  [#3006](https://github.com/commercialhaskell/stack/issues/3006)
+* Dependencies via HTTP(S) archives have been generalized to allow
+  local file path archives, as well as to support setting a
+  cryptographic hash (SHA256) of the contents for better
+  reproducibility.
+* Allow specifying `--git-branch` when upgrading
+* When running `stack upgrade` from a file which is different from the
+  default executable path (e.g., on POSIX systems,
+  `~/.local/bin/stack`), it will now additionally copy the new
+  executable over the currently running `stack` executable. If
+  permission is denied (such as in `/usr/local/bin/stack`), the user
+  will be prompted to try again using `sudo`. This is intended to
+  assist with the user experience when the `PATH` environment variable
+  has not been properly configured, see
+  [#3232](https://github.com/commercialhaskell/stack/issues/3232).
+* `stack setup` for ghcjs will now install `alex` and `happy` if
+  they are not present.  See
+  [#3109](https://github.com/commercialhaskell/stack/issues/3232).
+* Added `stack ghci --only-main` flag, to skip loading / importing
+  all but main modules. See the ghci documentation page
+  for further info.
+* Allow GHC's colored output to show through. GHC colors output
+  starting with version 8.2.1, for older GHC this does nothing.
+  Sometimes GHC's heuristics would work fine even before this change,
+  for example in `stack ghci`, but this override's GHC's heuristics
+  when they're broken by our collecting and processing GHC's output.
+* Extended the `ghc-options` key to support `$locals`, `$targets`,
+  and `$everything`. See:
+  [#3329](https://github.com/commercialhaskell/stack/issues/3329)
+* Better error message for case that `stack ghci` file targets are
+  combined with invalid package targets. See:
+  [#3342](https://github.com/commercialhaskell/stack/issues/3342)
+* For profiling now uses `-fprof-auto -fprof-cafs` instead of
+  the deprecated `-auto-all -caf-all`. See:
+  [#3360](https://github.com/commercialhaskell/stack/issues/3360)
+* Better descriptions are now available for `stack upgrade --help`. See:
+  [#3070](https://github.com/commercialhaskell/stack/issues/3070)
+* When using Nix, nix-shell now depends always on gcc to prevent build errors
+  when using the FFI. As ghc depends on gcc anyway, this does not increase the
+  dependency footprint.
+* `--cwd DIR` can now be passed to `stack exec` in order to execute the
+  program in a different directory. See:
+  [#3264](https://github.com/commercialhaskell/stack/issues/3264)
+* Plan construction will detect if you add an executable-only package
+  as a library dependency, resulting in much clearer error
+  messages. See:
+  [#2195](https://github.com/commercialhaskell/stack/issues/2195).
+* Addition of `--ghc-options` to `stack script` to pass options directly
+  to GHC. See:
+  [#3454](https://github.com/commercialhaskell/stack/issues/3454)
+* Add Hpack `package.yaml` to build Stack itself
+* Add `ignore-revision-mismatch` setting. See:
+  [#3520](https://github.com/commercialhaskell/stack/issues/3520).
+* Log when each individual test suite finishes. See:
+  [#3552](https://github.com/commercialhaskell/stack/issues/3552).
+* Avoid spurious rebuilds when using `--file-watch` by not watching files for
+  executable, test and benchmark components that are not a target. See:
+  [#3483](https://github.com/commercialhaskell/stack/issues/3483).
+* Stack will now try to detect the width of the running terminal
+  (only on POSIX for the moment) and use that to better display
+  output messages. Work is ongoing, so some messages will not
+  be optimal yet. The terminal width can be overridden with the
+  new `--terminal-width` command-line option (this works even on
+  non-POSIX).
+* Passing non local packages as targets to `stack ghci` will now
+  cause them to be used as `-package` args along with package
+  hiding.
+* Detect when user changed Cabal file instead of `package.yaml`. This
+  was implemented upstream in Hpack. See
+  [#3383](https://github.com/commercialhaskell/stack/issues/3383).
+* Automatically run `autoreconf -i` as necessary when a `configure`
+  script is missing. See
+  [#3534](https://github.com/commercialhaskell/stack/issues/3534)
+* GHC binary distributions can now be identified by their SHA256 checksum in
+  addition to their SHA1 checksum, allowing for more security in download.
+* For filesystem setup-info paths, it is no longer assumed that the
+  directory is writable, instead a temp dir is used.  See
+  [#3188](https://github.com/commercialhaskell/stack/issues/3188).
+
+Bug fixes:
+
+* `stack hoogle` correctly generates Hoogle databases. See:
+  [#3362](https://github.com/commercialhaskell/stack/issues/3362)
+* `stack --docker-help` is now clearer about --docker implying
+   system-ghc: true, rather than both --docker and --no-docker.
+* `stack haddock` now includes package names for all modules in the
+   Haddock index page. See:
+  [#2886](https://github.com/commercialhaskell/stack/issues/2886)
+* Fixed an issue where Stack would not detect missing Docker images
+  properly with newer Docker versions.
+  [#3171](https://github.com/commercialhaskell/stack/pull/3171)
+* Previously, Cabal files with just test-suite could cause build to fail
+  ([#2862](https://github.com/commercialhaskell/stack/issues/2862))
+* If an invalid snapshot file has been detected (usually due to
+  mismatched hashes), Stack will delete the downloaded file and
+  recommend either retrying or filing an issue upstream. See
+  [#3319](https://github.com/commercialhaskell/stack/issues/3319).
+* Modified the flag parser within Stack to match the behavior of
+  Cabal's flag parser, which allows multiple sequential dashes. See
+  [#3345](https://github.com/commercialhaskell/stack/issues/3345)
+* Now clears the hackage index cache if it is older than the
+  downloaded index.  Fixes potential issue if Stack was interrupted when
+  updating index.
+  See [#3033](https://github.com/commercialhaskell/stack/issues/3033)
+* The Stack install script now respects the `-d` option.
+  See [#3366](https://github.com/commercialhaskell/stack/pull/3366).
+* `stack script` can now handle relative paths to source files.
+  See [#3372](https://github.com/commercialhaskell/stack/issues/3372).
+* Fixes explanation of why a target is needed by the build plan, when the
+  target is an extra-dep from the commandline.
+  See [#3378](https://github.com/commercialhaskell/stack/issues/3378).
+* Previously, if you delete a yaml file from ~/.stack/build-plan, it would
+  trust the etag and not re-download.  Fixed in this version.
+* Invoking `stack --docker` in parallel now correctly locks the sqlite database.
+  See [#3400](https://github.com/commercialhaskell/stack/issues/3400).
+* docs.haskellstack.org RTD documentation search is replaced by the mkdocs
+  search. Please see
+  [#3376](https://github.com/commercialhaskell/stack/issues/3376).
+* `stack clean` now works with nix.  See
+  [#3468](https://github.com/commercialhaskell/stack/issues/3376).
+* `stack build --only-dependencies` no longer builds local project packages
+  that are depended on. See
+  [#3476](https://github.com/commercialhaskell/stack/issues/3476).
+* Properly handle relative paths stored in the precompiled cache files. See
+  [#3431](https://github.com/commercialhaskell/stack/issues/3431).
+* In some cases, Cabal does not realize that it needs to reconfigure, and must
+  be told to do so automatically. This would manifest as a "shadowed
+  dependency" error message. We now force a reconfigure whenever a dependency is
+  built, even if the package ID remained the same. See
+  [#2781](https://github.com/commercialhaskell/stack/issues/2781).
+* When `--pvp-bounds` is enabled for sdist or upload, internal
+  dependencies could cause errors when uploaded to hackage.  This is
+  fixed, see [#3290](https://github.com/commercialhaskell/stack/issues/3290)
+* Fixes a bug where nonexistent hackage versions would cause Stack to
+  suggest the same package name, without giving version info. See
+  [#3562](https://github.com/commercialhaskell/stack/issues/3562)
+* Fixes a bug that has existed since 1.5.0, where
+  `stack setup --upgrade-cabal` would say that Cabal is already the latest
+  version, when it was not.
+* Ensure that an `extra-dep` from a local directory is not treated as
+  a `$locals` for GHC options purposes. See
+  [#3574](https://github.com/commercialhaskell/stack/issues/3574).
+* Building all executables only happens once instead of every
+  time. See
+  [#3229](https://github.com/commercialhaskell/stack/issues/3229) for
+  more info.
+
+## 1.5.1 - 2017-08-05
+
+Bug fixes:
+
+* Stack eagerly tries to parse all Cabal files related to a
+  snapshot. Starting with Stackage Nightly 2017-07-31, snapshots are
+  using GHC 8.2.1, and the `ghc.cabal` file implicitly referenced uses
+  the (not yet supported) Cabal 2.0 file format. Future releases of
+  Stack will both be less eager about Cabal file parsing and support
+  Cabal 2.0. This patch simply bypasses the error for invalid parsing.
+
+## 1.5.0 - 2017-07-25
+
+Behavior changes:
+
+* `stack profile` and `stack trace` now add their extra RTS arguments for
+  benchmarks and tests to the beginning of the args, instead of the end.
+  See [#2399](https://github.com/commercialhaskell/stack/issues/2399)
+* Support for Git-based indices has been removed.
+
+Other enhancements:
+
+* `stack setup` allow to control options passed to ghcjs-boot with
+  `--ghcjs-boot-options` (one word at a time) and `--[no-]ghcjs-boot-clean`
+* `stack setup` now accepts a `--install-cabal VERSION` option which
+  will install a specific version of the Cabal library globally.
+* Updates to store-0.4.1, which has improved performance and better error
+  reporting for version tags.  A side-effect of this is that all of
+  stack's binary caches will be invalidated.
+* `stack solver` will now warn about unexpected `cabal-install` versions.
+  See [#3044](https://github.com/commercialhaskell/stack/issues/3044)
+* Upstream packages unpacked to a temp dir are now deleted as soon as
+  possible to avoid running out of space in `/tmp`.
+  See [#3018](https://github.com/commercialhaskell/stack/issues/3018)
+* Add short synonyms for `test-arguments` and `benchmark-arguments` options.
+* Adds `STACK_WORK` environment variable, to specify work dir.
+  See [#3063](https://github.com/commercialhaskell/stack/issues/3063)
+* Can now use relative paths for `extra-include-dirs` and `extra-lib-dirs`.
+  See [#2830](https://github.com/commercialhaskell/stack/issues/2830)
+* Improved bash completion for many options, including `--ghc-options`,
+  `--flag`, targets, and project executables for `exec`.
+* `--haddock-arguments` is actually used now when `haddock` is invoked
+  during documentation generation.
+* `--[no-]haddock-hyperlink-source` flag added which allows toggling
+  of sources being included in Haddock output.
+  See [#3099](https://github.com/commercialhaskell/stack/issues/3099)
+* `stack ghci` will now skip building all local targets, even if they have
+  downstream deps, as long as it is registered in the DB.
+* The `pvp-bounds` feature now supports adding `-revision` to the end of each
+  value, e.g. `pvp-bounds: both-revision`. This means that, when uploading to
+  Hackage, Stack will first upload your tarball with an unmodified Cabal file,
+  and then upload a Cabal file revision with the PVP bounds added. This can be
+  useful - especially combined with the
+  [Stackage no-revisions feature](http://www.snoyman.com/blog/2017/04/stackages-no-revisions-field) - as
+  a method to ensure PVP compliance without having to proactively fix bounds
+  issues for Stackage maintenance.
+* Expose a `save-hackage-creds` configuration option
+* On GHC <= 7.8, filters out spurious linker warnings on windows
+  See [#3127](https://github.com/commercialhaskell/stack/pull/3127)
+* Better error messages when creating or building packages which alias
+  wired-in packages. See
+  [#3172](https://github.com/commercialhaskell/stack/issues/3172).
+* MinGW bin folder now is searched for dynamic libraries. See
+  [#3126](https://github.com/commercialhaskell/stack/issues/3126)
+* When using Nix, nix-shell now depends always on git to prevent runtime errors
+  while fetching metadata
+* Experimental: The `stack unpack` command now accepts a form where an explicit
+  Hackage revision hash is specified, e.g.
+  `stack unpack foo-1.2.3@gitsha1:deadbeef`. Note that Stack will likely move
+  towards a different hash format in the future.
+* Binary "stack upgrade" will now warn if the installed executable is not
+  on the PATH or shadowed by another entry.
+* Allow running tests on tarball created by sdist and upload
+  [#717](https://github.com/commercialhaskell/stack/issues/717).
+
+Bug fixes:
+
+* Fixes case where `stack build --profile` might not cause executables /
+  tests / benchmarks to be rebuilt.
+  See [#2984](https://github.com/commercialhaskell/stack/issues/2984)
+* `stack ghci file.hs` now loads the file even if it is not part of
+  your project.
+* `stack clean --full` now works when docker is enabled.
+  See [#2010](https://github.com/commercialhaskell/stack/issues/2010)
+* Fixes an issue where cyclic deps can cause benchmarks or tests to be run
+  before they are built.
+  See [#2153](https://github.com/commercialhaskell/stack/issues/2153)
+* Fixes `stack build --file-watch` in cases where a directory is removed
+  See [#1838](https://github.com/commercialhaskell/stack/issues/1838)
+* Fixes `stack dot` and `stack list-dependencies` to use info from the
+  package database for wired-in-packages (ghc, base, etc).
+  See [#3084](https://github.com/commercialhaskell/stack/issues/3084)
+* Fixes `stack --docker build` when user is part of libvirt/libvirtd
+  groups on Ubuntu Yakkety (16.10).
+  See [#3092](https://github.com/commercialhaskell/stack/issues/3092)
+* Switching a package between extra-dep and local package now forces
+  rebuild (previously it would not if versions were the same).
+  See [#2147](https://github.com/commercialhaskell/stack/issues/2147)
+* `stack upload` no longer reveals your password when you type it on
+  MinTTY-based Windows shells, such as Cygwin and MSYS2.
+  See [#3142](https://github.com/commercialhaskell/stack/issues/3142)
+* `stack script`'s import parser will now properly parse files that
+  have Windows-style line endings (CRLF)
+
+
+## 1.4.0 - 2017-03-15
+
+Release notes:
+
+* Docker images:
+  [fpco/stack-full](https://hub.docker.com/r/fpco/stack-full/) and
+  [fpco/stack-run](https://hub.docker.com/r/fpco/stack-run/)
+  are no longer being built for LTS 8.0 and above.
+  [fpco/stack-build](https://hub.docker.com/r/fpco/stack-build/)
+  images continue to be built with a
+  [simplified process](https://github.com/commercialhaskell/stack/tree/master/etc/dockerfiles/stack-build).
+  [#624](https://github.com/commercialhaskell/stack/issues/624)
+
+Major changes:
+
+* A new command, `script`, has been added, intended to make the script
+  interpreter workflow more reliable, easier to use, and more
+  efficient. This command forces the user to provide a `--resolver`
+  value, ignores all config files for more reproducible results, and
+  optimizes the existing package check to make the common case of all
+  packages already being present much faster. This mode does require
+  that all packages be present in a snapshot, however.
+  [#2805](https://github.com/commercialhaskell/stack/issues/2805)
+
+Behavior changes:
+
+* The default package metadata backend has been changed from Git to
+  the 01-index.tar.gz file, from the hackage-security project. This is
+  intended to address some download speed issues from GitHub for
+  people in certain geographic regions. There is now full support for
+  checking out specific Cabal file revisions from downloaded tarballs
+  as well. If you manually specify a package index with only a Git
+  URL, Git will still be used. See
+  [#2780](https://github.com/commercialhaskell/stack/issues/2780)
+* When you provide the `--resolver` argument to the `stack unpack`
+  command, any packages passed in by name only will be looked up in
+  the given snapshot instead of taking the latest version. For
+  example, `stack --resolver lts-7.14 unpack mtl` will get version
+  2.2.1 of `mtl`, regardless of the latest version available in the
+  package indices. This will also force the same Cabal file revision
+  to be used as is specified in the snapshot.
+
+    Unpacking via a package identifier (e.g. `stack --resolver lts-7.14
+    unpack mtl-2.2.1`) will ignore any settings in the snapshot and take
+    the most recent revision.
+
+    For backwards compatibility with tools relying on the presence of a
+    `00-index.tar`, Stack will copy the `01-index.tar` file to
+    `00-index.tar`. Note, however, that these files are different; most
+    importantly, 00-index contains only the newest revisions of Cabal
+    files, while 01-index contains all versions. You may still need to
+    update your tooling.
+* Passing `--(no-)nix-*` options now no longer implies `--nix`, except for
+  `--nix-pure`, so that the user preference whether or not to use Nix is
+  honored even in the presence of options that change the Nix behavior.
+
+Other enhancements:
+
+* Internal cleanup: configuration types are now based much more on lenses
+* `stack build` and related commands now allow the user to disable debug symbol
+  stripping with new `--no-strip`, `--no-library-stripping`, and
+  `--no-executable-shipping` flags, closing
+  [#877](https://github.com/commercialhaskell/stack/issues/877). Also turned
+  error message for missing targets more readable
+  ([#2384](https://github.com/commercialhaskell/stack/issues/2384))
+* `stack haddock` now shows index.html paths when documentation is already up to
+  date. Resolved [#781](https://github.com/commercialhaskell/stack/issues/781)
+* Respects the `custom-setup` stanza introduced in Cabal 1.24. This supercedes
+  any `explicit-setup-deps` settings in your `stack.yaml` and trusts the
+  package's Cabal file to explicitly state all its dependencies.
+* If system package installation fails, `get-stack.sh` will fail as well. Also
+  shows warning suggesting to run `apt-get update` or similar, depending on the
+  OS.
+  ([#2898](https://github.com/commercialhaskell/stack/issues/2898))
+* When `stack ghci` is run with a config with no packages (e.g. global project),
+  it will now look for source files in the current work dir.
+  ([#2878](https://github.com/commercialhaskell/stack/issues/2878))
+* Bump to Hpack 0.17.0 to allow `custom-setup` and `!include "..."` in
+  `package.yaml`.
+* The script interpreter will now output error logging.  In particular,
+  this means it will output info about plan construction errors.
+  ([#2879](https://github.com/commercialhaskell/stack/issues/2879))
+* `stack ghci` now takes `--flag` and `--ghc-options` again (inadvertently
+  removed in 1.3.0).
+  ([#2986](https://github.com/commercialhaskell/stack/issues/2986))
+* `stack exec` now takes `--rts-options` which passes the given arguments inside
+  of `+RTS ... args .. -RTS` to the executable. This works around Stack itself
+  consuming the RTS flags on Windows.
+  ([#2640](https://github.com/commercialhaskell/stack/issues/2640))
+* Upgraded `http-client-tls` version, which now offers support for the
+  `socks5://` and `socks5h://` values in the `http_proxy` and `https_proxy`
+  environment variables.
+
+Bug fixes:
+
+* Bump to Hpack 0.16.0 to avoid character encoding issues when reading and
+  writing on non-UTF8 systems.
+* `stack ghci` will no longer ignore hsSourceDirs that contain `..`.
+  ([#2895](https://github.com/commercialhaskell/stack/issues/2895))
+* `stack list-dependencies --license` now works for wired-in-packages,
+  like base. ([#2871](https://github.com/commercialhaskell/stack/issues/2871))
+* `stack setup` now correctly indicates when it uses system ghc
+  ([#2963](https://github.com/commercialhaskell/stack/issues/2963))
+* Fix to `stack config set`, in 1.3.2 it always applied to
+  the global project.
+  ([#2709](https://github.com/commercialhaskell/stack/issues/2709))
+* Previously, Cabal files without exe or lib would fail on the "copy" step.
+  ([#2862](https://github.com/commercialhaskell/stack/issues/2862))
+* `stack upgrade --git` now works properly.  Workaround for affected
+  versions (>= 1.3.0) is to instead run `stack upgrade --git --source-only`.
+  ([#2977](https://github.com/commercialhaskell/stack/issues/2977))
+* Added support for GHC 8's slightly different warning format for
+  dumping warnings from logs.
+* Work around a bug in Cabal/GHC in which package IDs are not unique
+  for different source code, leading to Stack not always rebuilding
+  packages depending on local packages which have
+  changed. ([#2904](https://github.com/commercialhaskell/stack/issues/2904))
+
+## 1.3.2 - 2016-12-27
+
+Bug fixes:
+
+* `stack config set` can now be used without a compiler installed
+  [#2852](https://github.com/commercialhaskell/stack/issues/2852).
+* `get-stack.sh` now installs correct executable on ARM for generic Linux and
+  raspbian, closing
+  [#2856](https://github.com/commercialhaskell/stack/issues/2856).
+* Correct the testing of whether a package database exists by checking
+  for the `package.cache` file itself instead of the containing
+  directory.
+* Revert a change in the previous release which made it impossible to
+  set local extra-dep packages as targets. This was overkill; we
+  really only wanted to disable their test suites, which was already
+  handled by a later
+  patch. [#2849](https://github.com/commercialhaskell/stack/issues/2849)
+* `stack new` always treats templates as being UTF-8 encoding,
+  ignoring locale settings on a local machine. See
+  [Yesod mailing list discussion](https://groups.google.com/d/msg/yesodweb/ZyWLsJOtY0c/aejf9E7rCAAJ)
+
+## 1.3.0 - 2016-12-12
+
+Release notes:
+
+* For the _next_ Stack release after this one, we are planning changes to our
+  Linux releases, including dropping our Ubuntu, Debian, CentOS, and Fedora
+  package repositories and switching to statically-linked executables. See
+  [#2534](https://github.com/commercialhaskell/stack/issues/2534).
+  Note that upgrading without a package manager has gotten easier with new
+  binary upgrade support in `stack upgrade` (see the Major Changes section below
+  for more information). In addition, the get.haskellstack.org script no longer
+  installs from Ubuntu, Debian, CentOS, or Fedora package repositories. Instead
+  it places a generic executable in /usr/local/bin.
+
+Major changes:
+
+* Stack will now always use its own GHC installation, even when a suitable GHC
+  installation is available on the PATH. To get the old behaviour, use
+  the `--system-ghc` flag or run `stack config set system-ghc --global true`.
+  Docker- and Nix-enabled projects continue to use the GHC installations
+  in their environment by default.
+
+    NB: Scripts that previously used Stack in combination with a system GHC
+    installation should now include a `stack setup` line or use the
+    `--install-ghc` flag.
+    [#2221](https://github.com/commercialhaskell/stack/issues/2221)
+
+* `stack ghci` now defaults to skipping the build of target packages, because
+  support has been added for invoking "initial build steps", which create
+  autogen files and run preprocessors. The `--no-build` flag is now deprecated
+  because it should no longer be necessary. See
+  [#1364](https://github.com/commercialhaskell/stack/issues/1364)
+
+* Stack is now capable of doing binary upgrades instead of always recompiling a
+  new version from source. Running `stack upgrade` will now default to
+  downloading a Stack executable from the most recent release, if one is
+  available. See `stack upgrade --help` for more options.
+  [#1238](https://github.com/commercialhaskell/stack/issues/1238)
+
+Behavior changes:
+
+* Passing `--resolver X` with a Stack command which forces creation of a global
+  project config, will pass resolver X into the initial config.
+  See [#2579](https://github.com/commercialhaskell/stack/issues/2229).
+
+* Switch the "Run from outside project" messages to debug-level, to
+  avoid spamming users in the normal case of non-project usage
+
+* If a remote package is specified (such as a Git repo) without an explicit
+  `extra-dep` setting, a warning is given to the user to provide one
+  explicitly.
+
+Other enhancements:
+
+* `stack haddock` now supports `--haddock-internal`. See
+  [#2229](https://github.com/commercialhaskell/stack/issues/2229)
+* Add support for `system-ghc` and `install-ghc` subcommands to
+  `stack config set` command.
+* Add `ghc-build` option to override autodetected GHC build to use (e.g. gmp4,
+  tinfo6, nopie) on Linux.
+* `stack setup` detects systems where gcc enables PIE by default (such as Ubuntu
+  16.10 and Hardened Gentoo) and adjusts the GHC `configure` options
+  accordingly. [#2542](https://github.com/commercialhaskell/stack/issues/2542)
+* Upload to Hackage with HTTP digest instead of HTTP basic.
+* Make `stack list-dependencies` understand all of the `stack dot` options too.
+* Add the ability for `stack list-dependencies` to list dependency licenses by
+  passing the `--license` flag.
+* Dump logs that contain warnings for any local non-dependency packages
+  [#2545](https://github.com/commercialhaskell/stack/issues/2545)
+* Add the `dump-logs` config option and `--dump-logs` command line
+  option to get full build output on the
+  console. [#426](https://github.com/commercialhaskell/stack/issues/426)
+* Add the `--open` option to "stack hpc report" command, causing the report to
+  be opened in the browser.
+* The `stack config set` command now accepts a `--global` flag for suitable
+  subcommands which causes it to modify the global user configuration
+  (`~/.stack/config.yaml`) instead of the project configuration.
+  [#2675](https://github.com/commercialhaskell/stack/pull/2675)
+* Information on the latest available snapshots is now downloaded from S3
+  instead of stackage.org, increasing reliability in case of stackage.org
+  outages. [#2653](https://github.com/commercialhaskell/stack/pull/2653)
+* `stack dot` and `stack list-dependencies` now take targets and flags.
+  [#1919](https://github.com/commercialhaskell/stack/issues/1919)
+* Deprecate `stack setup --stack-setup-yaml` for `--setup-info-yaml` based
+  on discussion in
+  [#2647](https://github.com/commercialhaskell/stack/issues/2647).
+* The `--main-is` flag for GHCI now implies the TARGET, fixing
+  [#1845](https://github.com/commercialhaskell/stack/issues/1845).
+* `stack ghci` no longer takes all build options, as many were not useful
+  [#2199](https://github.com/commercialhaskell/stack/issues/2199)
+* `--no-time-in-log` option, to make verbose logs more diffable
+  [#2727](https://github.com/commercialhaskell/stack/issues/2727)
+* `--color` option added to override auto-detection of ANSI support
+  [#2725](https://github.com/commercialhaskell/stack/issues/2725)
+* Missing extra-deps are now warned about, adding a degree of typo detection
+  [#1521](https://github.com/commercialhaskell/stack/issues/1521)
+* No longer warns about missing build-tools if they are on the PATH.
+  [#2235](https://github.com/commercialhaskell/stack/issues/2235)
+* Replace enclosed-exceptions with safe-exceptions.
+  [#2768](https://github.com/commercialhaskell/stack/issues/2768)
+* The install location for GHC and other programs can now be configured with the
+  `local-programs-path` option in `config.yaml`.
+  [#1644](https://github.com/commercialhaskell/stack/issues/1644)
+* Added option to add nix dependencies as nix GC roots
+* Proper pid 1 (init) process for `stack exec` with Docker
+* Dump build logs if they contain warnings.
+  [#2545](https://github.com/commercialhaskell/stack/issues/2545)
+* Docker: redirect stdout of `docker pull` to stderr so that
+  it will not interfere with output of other commands.
+* Nix & docker can be activated at the same time, in order to run Stack in a
+  nix-shell in a container, preferably from an image already containing the nix
+  dependencies in its /nix/store
+* Stack/nix: Dependencies can be added as nix GC roots, so they are not removed
+  when running `nix-collect-garbage`
+
+Bug fixes:
+
+* Fixed a gnarly bug where programs and package tarballs sometimes have
+  corrupted downloads. See
+  [#2657](https://github.com/commercialhaskell/stack/issues/2568).
+* Add proper support for non-ASCII characters in file paths for the `sdist`
+  command. See [#2549](https://github.com/commercialhaskell/stack/issues/2549)
+* Never treat `extra-dep` local packages as targets. This ensures
+  things like test suites are not run for these packages, and that
+  build output is not hidden due to their presence.
+* Fix a resource leak in `sinkProcessStderrStdout` which could affect
+  much of the codebase, in particular copying precompiled
+  packages. [#1979](https://github.com/commercialhaskell/stack/issues/1979)
+* Docker: ensure that interrupted extraction process does not cause corrupt file
+  when downloading a Docker-compatible Stack executable
+  [#2568](https://github.com/commercialhaskell/stack/issues/2568)
+* Fixed running `stack hpc report` on package targets.
+  [#2664](https://github.com/commercialhaskell/stack/issues/2664)
+* Fix a long-standing performance regression where Stack would parse the
+  `.dump-hi` files of the library components of local packages twice.
+  [#2658](https://github.com/commercialhaskell/stack/pull/2658)
+* Fixed a regression in "stack ghci --no-load", where it would prompt for a main
+  module to load. [#2603](https://github.com/commercialhaskell/stack/pull/2603)
+* Build Setup.hs files with the threaded RTS, mirroring the behavior of
+  `cabal-install` and enabling more complex build systems in those files.
+* Fixed a bug in passing along `--ghc-options` to ghcjs.  They were being
+  provided as `--ghc-options` to Cabal, when it needs to be `--ghcjs-options`.
+  [#2714](https://github.com/commercialhaskell/stack/issues/2714)
+* Launch Docker from the project root regardless of the working
+  directory Stack is invoked from. This means paths relative to the project root
+  (e.g. environment files) can be specified in `stack.yaml`'s docker `run-args`.
+* `stack setup --reinstall` now behaves as expected.
+  [#2554](https://github.com/commercialhaskell/stack/issues/2554)
+
+## 1.2.0 - 2016-09-16
+
+Release notes:
+
+* On many Un*x systems, Stack can now be installed with a simple
+  one-liner:
+
+        wget -qO- https://get.haskellstack.org/ | sh
+
+* The fix for
+  [#2175](https://github.com/commercialhaskell/stack/issues/2175)
+  entails that Stack must perform a full clone of a large Git repo of
+  Hackage meta-information. The total download size is about 200 MB.
+  Please be aware of this when upgrading your Stack installation.
+
+* If you use Mac OS X, you may want to delay upgrading to macOS Sierra as there
+  are reports of GHC panics when building some packages (including Stack
+  itself). See [#2577](https://github.com/commercialhaskell/stack/issues/2577)
+
+* This version of Stack does not build on ARM or PowerPC systems (see
+  [store#37](https://github.com/fpco/store/issues/37)).  Please stay with
+  version 1.1.2 for now on those architectures.  This will be rectified soon!
+
+* We are now releasing a statically-linked Stack executable for
+  [64-bit Linux](https://get.haskellstack.org/stable/linux-x86_64-static.tar.gz).
+  Please try it and let us know if you run into any trouble on your platform.
+  The executable is linked against a version of the GNU Multiple Precision
+  Arithmetic Library (GMP), which is licensed under the GNU Lesser General
+  Public License, Version 3, 29 June 2007 (LGPL).
+
+* We are planning some changes to our Linux releases, including dropping our
+  Ubuntu, Debian, CentOS, and Fedora package repositories and switching to
+  statically-linked executables. We would value your feedback in
+  [#2534](https://github.com/commercialhaskell/stack/issues/2534).
+
+Major changes:
+
+* Add `stack hoogle` command.
+  [#55](https://github.com/commercialhaskell/stack/issues/55)
+* Support for absolute file path in `url` key of `setup-info` or `--ghc-bindist`
+* Add support for rendering GHCi scripts targeting different GHCi like
+  applications
+  [#2457](https://github.com/commercialhaskell/stack/pull/2457)
+
+Behavior changes:
+
+* Remove `stack ide start` and `stack ide load-targets` commands.
+  [#2178](https://github.com/commercialhaskell/stack/issues/2178)
+* Support .buildinfo files in `stack ghci`.
+  [#2242](https://github.com/commercialhaskell/stack/pull/2242)
+* Support -ferror-spans syntax in GHC error messages.
+* Avoid unpacking ghc to `/tmp`
+  [#996](https://github.com/commercialhaskell/stack/issues/996)
+* The Linux `gmp4` GHC binary distribution is no longer considered a
+  full-fledged GHC variant and can no longer be specified using the
+  `ghc-variant` option, and instead is treated more like a slightly different
+  platform.
+
+Other enhancements:
+
+* Use the `store` package for binary serialization of most caches.
+* Only require minor version match for Docker Stack exe.
+  This way, we can make patch releases for version bounds and similar
+  build issues without needing to upload new binaries for Docker.
+* Stack/Nix: Passes the right ghc derivation as an argument to the `shell.nix`
+  when a custom `shell.nix` is used. See
+  [#2243](https://github.com/commercialhaskell/stack/issues/2243)
+* Stack/Nix: Sets `LD_LIBRARY_PATH` so packages using C libs for Template
+  Haskell can work (See _e.g._
+  [this HaskellR issue](https://github.com/tweag/HaskellR/issues/253))
+* Parse CLI arguments and configuration files into less permissive types,
+  improving error messages for bad inputs.
+  [#2267](https://github.com/commercialhaskell/stack/issues/2267)
+* Add the ability to explicitly specify a gcc executable.
+  [#593](https://github.com/commercialhaskell/stack/issues/593)
+* Nix: No longer uses LTS mirroring in nixpkgs. Gives to nix-shell a derivation
+  like `haskell.compiler.ghc801`
+  See [#2259](https://github.com/commercialhaskell/stack/issues/2259)
+* Perform some subprocesses during setup concurrently, slightly speeding up most
+  commands. [#2346](https://github.com/commercialhaskell/stack/pull/2346)
+* `stack setup` no longer unpacks to the system temp dir on posix systems.
+  [#996](https://github.com/commercialhaskell/stack/issues/996)
+* `stack setup` detects libtinfo6 and ncurses6 and can download alternate GHC
+  binary distributions
+  [#257](https://github.com/commercialhaskell/stack/issues/257)
+  [#2302](https://github.com/commercialhaskell/stack/issues/2302).
+* `stack setup` detects Linux ARMv7 downloads appropriate GHC binary
+  distribution
+  [#2103](https://github.com/commercialhaskell/stack/issues/2103)
+* Custom `stack` binaries list dependency versions in output for `--version`.
+  See [#2222](https://github.com/commercialhaskell/stack/issues/2222)
+  and [#2450](https://github.com/commercialhaskell/stack/issues/2450).
+* Use a pretty printer to output dependency resolution errors.
+  [#1912](https://github.com/commercialhaskell/stack/issues/1912)
+* Remove the `--os` flag
+  [#2227](https://github.com/commercialhaskell/stack/issues/2227)
+* Add 'netbase' and 'ca-certificates' as dependency for .deb packages.
+  [#2293](https://github.com/commercialhaskell/stack/issues/2293).
+* Add `stack ide targets` command.
+* Enhance debug logging with subprocess timings.
+* Pretty-print YAML parse errors
+  [#2374](https://github.com/commercialhaskell/stack/issues/2374)
+* Clarify confusing `stack setup` output
+  [#2314](https://github.com/commercialhaskell/stack/issues/2314)
+* Delete `Stack.Types` multimodule to improve build times
+  [#2405](https://github.com/commercialhaskell/stack/issues/2405)
+* Remove spurious newlines in build logs
+  [#2418](https://github.com/commercialhaskell/stack/issues/2418)
+* Interpreter: Provide a way to hide implicit packages
+  [#1208](https://github.com/commercialhaskell/stack/issues/1208)
+* Check executability in exec lookup
+  [#2489](https://github.com/commercialhaskell/stack/issues/2489)
+
+Bug fixes:
+
+* Fix Cabal warning about use of a deprecated Cabal flag
+  [#2350](https://github.com/commercialhaskell/stack/issues/2350)
+* Support most executable extensions on Windows
+  [#2225](https://github.com/commercialhaskell/stack/issues/2225)
+* Detect resolver change in `stack solver`
+  [#2252](https://github.com/commercialhaskell/stack/issues/2252)
+* Fix a bug in docker image creation where the wrong base image was
+  selected
+  [#2376](https://github.com/commercialhaskell/stack/issues/2376)
+* Ignore special entries when unpacking tarballs
+  [#2361](https://github.com/commercialhaskell/stack/issues/2361)
+* Fixes src directory pollution of `style.css` and `highlight.js` with GHC 8's
+  haddock [#2429](https://github.com/commercialhaskell/stack/issues/2429)
+* Handle filepaths with spaces in `stack ghci`
+  [#2266](https://github.com/commercialhaskell/stack/issues/2266)
+* Apply ghc-options to snapshot packages
+  [#2289](https://github.com/commercialhaskell/stack/issues/2289)
+* `stack sdist`: Fix timestamp in tarball
+  [#2394](https://github.com/commercialhaskell/stack/pull/2394)
+* Allow global Stack arguments with a script
+  [#2316](https://github.com/commercialhaskell/stack/issues/2316)
+* Inconsistency between ToJSON and FromJSON instances of PackageLocation
+  [#2412](https://github.com/commercialhaskell/stack/pull/2412)
+* Perform Unicode normalization on filepaths
+  [#1810](https://github.com/commercialhaskell/stack/issues/1810)
+* Solver: always keep ghc wired-in as hard constraints
+  [#2453](https://github.com/commercialhaskell/stack/issues/2453)
+* Support OpenBSD's tar where possible, require GNU tar for xz support
+  [#2283](https://github.com/commercialhaskell/stack/issues/2283)
+* Fix using --coverage with Cabal-1.24
+  [#2424](https://github.com/commercialhaskell/stack/issues/2424)
+* When marking exe installed, remove old version
+  [#2373](https://github.com/commercialhaskell/stack/issues/2373)
+* Stop truncating `all-cabal-hashes` git repo
+  [#2175](https://github.com/commercialhaskell/stack/issues/2175)
+* Handle non-ASCII filenames on Windows
+  [#2491](https://github.com/commercialhaskell/stack/issues/2491)
+* Avoid using multiple versions of a package in script interpreter
+  by passing package-id to ghc/runghc
+  [#1957](https://github.com/commercialhaskell/stack/issues/1957)
+* Only pre-load compiler version when using nix integration
+  [#2459](https://github.com/commercialhaskell/stack/issues/2459)
+* Solver: parse Cabal errors also on Windows
+  [#2502](https://github.com/commercialhaskell/stack/issues/2502)
+* Allow exec and ghci commands in interpreter mode.
+  Scripts can now automatically open in the repl by using `exec ghci`
+  instead of `runghc` in the shebang command.
+  [#2510](https://github.com/commercialhaskell/stack/issues/2510)
+* Now consider a package to be dirty when an extra-source-file is changed.
+  See [#2040](https://github.com/commercialhaskell/stack/issues/2040)
+
+## 1.1.2 - 2016-05-20
+
+Release notes:
+
+* Official FreeBSD binaries are
+  [now available](http://docs.haskellstack.org/en/stable/install_and_upgrade/#freebsd)
+  [#1253](https://github.com/commercialhaskell/stack/issues/1253).
+
+Major changes:
+
+* Extensible custom snapshots implemented. These allow you to define snapshots
+which extend other snapshots. See
+[#863](https://github.com/commercialhaskell/stack/issues/863). Local file custom
+snapshots can now be safely updated without changing their name.  Remote custom
+snapshots should still be treated as immutable.
+
+Behavior changes:
+
+* `stack path --compiler` was added in the last release, to yield a path to the
+  compiler. Unfortunately, `--compiler` is a global option that is useful to use
+  with `stack path`. The same functionality is now provided by `stack path
+  --compiler-exe`. See
+  [#2123](https://github.com/commercialhaskell/stack/issues/2123)
+* For packages specified in terms of a git or hg repo, the hash used in the
+  location has changed.  This means that existing downloads from older Stack
+  versions will not be used.  This is a side-effect of the fix to
+  [#2133](https://github.com/commercialhaskell/stack/issues/2133)
+* `stack upgrade` no longer pays attention to local `stack.yaml` files, just the
+  global config and CLI options.
+  [#1392](https://github.com/commercialhaskell/stack/issues/1392)
+* `stack ghci` now uses `:add` instead of `:load`, making it potentially work
+  better with user scripts. See
+  [#1888](https://github.com/commercialhaskell/stack/issues/1888)
+
+Other enhancements:
+
+* Grab Cabal files via Git SHA to avoid regressions from Hackage revisions
+  [#2070](https://github.com/commercialhaskell/stack/pull/2070)
+* Custom snapshots now support `ghc-options`.
+* Package git repos are now re-used rather than re-cloned. See
+  [#1620](https://github.com/commercialhaskell/stack/issues/1620)
+* `DESTDIR` is filtered from environment when installing GHC. See
+  [#1460](https://github.com/commercialhaskell/stack/issues/1460)
+* `stack haddock` now supports `--haddock-arguments`. See
+  [#2144](https://github.com/commercialhaskell/stack/issues/2144)
+* Signing: warn if GPG_TTY is not set as per `man gpg-agent`
+
+Bug fixes:
+
+* Now ignore project config when doing `stack init` or `stack new`. See
+  [#2110](https://github.com/commercialhaskell/stack/issues/2110)
+* Packages specified by git repo can now have submodules. See
+  [#2133](https://github.com/commercialhaskell/stack/issues/2133)
+* Fix of hackage index fetch retry. See re-opening of
+  [#1418](https://github.com/commercialhaskell/stack/issues/1418#issuecomment-217633843)
+* HPack now picks up changes to filesystem other than package.yaml.  See
+  [#2051](https://github.com/commercialhaskell/stack/issues/2051)
+* "stack solver" no longer suggests --omit-packages. See
+  [#2031](https://github.com/commercialhaskell/stack/issues/2031)
+* Fixed an issue with building Cabal's Setup.hs. See
+  [#1356](https://github.com/commercialhaskell/stack/issues/1356)
+* Package dirtiness now pays attention to deleted files. See
+  [#1841](https://github.com/commercialhaskell/stack/issues/1841)
+* `stack ghci` now uses `extra-lib-dirs` and `extra-include-dirs`. See
+  [#1656](https://github.com/commercialhaskell/stack/issues/1656)
+* Relative paths outside of source dir added via `qAddDependentFile` are now
+  checked for dirtiness. See
+  [#1982](https://github.com/commercialhaskell/stack/issues/1982)
+* Signing: always use `--with-fingerprints`
+
+## 1.1.0 - 2016-05-04
+
+Release notes:
+
+* Added Ubuntu 16.04 LTS (xenial) Apt repo.
+* No longer uploading new versions to Fedora 21 repo.
+
+Behavior changes:
+
+* Snapshot packages are no longer built with executable profiling. See
+  [#1179](https://github.com/commercialhaskell/stack/issues/1179).
+* `stack init` now ignores symlinks when searching for Cabal files. It also now
+  ignores any directory that begins with `.` (as well as `dist` dirs) - before
+  it would only ignore `.git`, `.stack-work`, and `dist`.
+* The Stack executable is no longer built with `-rtsopts`.  Before, when
+  `-rtsopts` was enabled, Stack would process `+RTS` options even when intended
+  for some other program, such as when used with `stack exec -- prog +RTS`.
+  See [#2022](https://github.com/commercialhaskell/stack/issues/2022).
+* The `stack path --ghc-paths` option is deprecated and renamed to `--programs`.
+  `--compiler` is added, which points directly at the compiler used in
+  the current project.  `--compiler-bin` points to the compiler's bin dir.
+* For consistency with the `$STACK_ROOT` environment variable, the
+  `stack path --global-stack-root` flag and the `global-stack-root` field
+  in the output of `stack path` are being deprecated and replaced with the
+  `stack-root` flag and output field.
+  Additionally, the Stack root can now be specified via the
+  `--stack-root` command-line flag. See
+  [#1148](https://github.com/commercialhaskell/stack/issues/1148).
+* `stack sig` GPG-related sub-commands were removed (folded into `upload` and
+  `sdist`)
+* GPG signing of packages while uploading to Hackage is now the default. Use
+  `upload --no-signature` if you would rather not contribute your package
+  signature. If you do not yet have a GPG keyset, read this
+  [blog post on GPG keys](https://fpcomplete.com/blog/2016/05/stack-security-gnupg-keys).
+  We can add a `stack.yaml` config setting to disable signing if some people
+  desire it. We hope that people will sign. Later we will be adding GPG
+  signature verification options.
+* `stack build pkg-1.2.3` will now build even if the snapshot has a different
+  package version - it is treated as an extra-dep. `stack build local-pkg-1.2.3`
+  is an error even if the version number matches the local package
+  [#2028](https://github.com/commercialhaskell/stack/issues/2028).
+* A `nix` key in a Stack YAML configuration file no longer implies enabling a
+  Nix build. This allows the user to globally configure whether Nix is used
+  (unless the project overrides the default explicitly). See
+  [#1924](https://github.com/commercialhaskell/stack/issues/1924).
+* Remove deprecated `valid-wanted` key.
+* Docker: mount home directory in container
+  [#1949](https://github.com/commercialhaskell/stack/issues/1949).
+* Deprecate `stack path --local-bin-path`; instead use `--local-bin`.
+* `stack image`: allow absolute source paths for `add`.
+
+Other enhancements:
+
+* `stack haddock --open [PACKAGE]` opens the local haddocks in the browser.
+* Fix too much rebuilding when enabling/disabling profiling flags.
+* `stack build pkg-1.0` will now build `pkg-1.0` even if the snapshot specifies
+  a different version (it introduces a temporary extra-dep)
+* Experimental: Support for `--split-objs` added
+  [#1284](https://github.com/commercialhaskell/stack/issues/1284).
+* `git` packages with submodules are supported by passing the `--recursive`
+  flag to `git clone`.
+* When using [Hpack](https://github.com/sol/hpack), only regenerate Cabal files
+  when Hpack files change.
+* Hpack files can now be used in templates
+* `stack ghci` now runs ghci as a separate process
+  [#1306](https://github.com/commercialhaskell/stack/issues/1306)
+* Retry when downloading snapshots and package indices
+* Many build options are configurable now in `stack.yaml`:
+
+  ~~~yaml
+  build:
+    library-profiling: true
+    executable-profiling: true
+    haddock: true
+    haddock-deps: true
+    copy-bins: true
+    prefetch: true
+    force-dirty: true
+    keep-going: true
+    test: true
+    test-arguments:
+      rerun-tests: true
+      additional-args: ['-fprof']
+      coverage: true
+      no-run-tests: true
+    bench: true
+    benchmark-opts:
+      benchmark-arguments: -O2
+      no-run-benchmarks: true
+    reconfigure: true
+    cabal-verbose: true
+  ~~~
+
+* A number of URLs are now configurable, useful for firewalls. See
+  [#1794](https://github.com/commercialhaskell/stack/issues/1884).
+* Suggest causes when executables are missing.
+* Allow `--omit-packages` even without `--solver`.
+* Improve the generated `stack.yaml`.
+* Improve ghci results after :load Main module collision with main file path.
+* Only load the hackage index if necessary
+  [#1883](https://github.com/commercialhaskell/stack/issues/1883),
+  [#1892](https://github.com/commercialhaskell/stack/issues/1892).
+* init: allow local packages to be deps of deps
+  [#1965](https://github.com/commercialhaskell/stack/issues/1965).
+* Always use full fingerprints from GPG
+  [#1952](https://github.com/commercialhaskell/stack/issues/1952).
+* Default to using `gpg2` and fall back to `gpg`
+  [#1976](https://github.com/commercialhaskell/stack/issues/1976).
+* Add a flag for --verbosity silent.
+* Add `haddock --open` flag
+  [#1396](https://github.com/commercialhaskell/stack/issues/1396).
+
+Bug fixes:
+
+* Package tarballs would fail to unpack.
+  [#1884](https://github.com/commercialhaskell/stack/issues/1884).
+* Fixed errant warnings about missing modules, after deleted and removed from
+  Cabal file [#921](https://github.com/commercialhaskell/stack/issues/921)
+  [#1805](https://github.com/commercialhaskell/stack/issues/1805).
+* Now considers a package to dirty when the Hpack file is changed
+  [#1819](https://github.com/commercialhaskell/stack/issues/1819).
+* Nix: cancelling a Stack build now exits properly rather than dropping into a
+  nix-shell [#1778](https://github.com/commercialhaskell/stack/issues/1778).
+* `allow-newer: true` now causes `--exact-configuration` to be passed to Cabal.
+  See [#1579](https://github.com/commercialhaskell/stack/issues/1579).
+* `stack solver` no longer fails with `InvalidRelFile` for relative package
+  paths including `..`. See
+  [#1954](https://github.com/commercialhaskell/stack/issues/1954).
+* Ignore emacs lock files when finding Cabal files
+  [#1897](https://github.com/commercialhaskell/stack/issues/1897).
+* Use lenient UTF-8 decode for build output
+  [#1945](https://github.com/commercialhaskell/stack/issues/1945).
+* Clear index cache whenever index updated
+  [#1962](https://github.com/commercialhaskell/stack/issues/1962).
+* Fix: Building a container image drops a .stack-work dir in the current working
+  (sub)directory
+  [#1975](https://github.com/commercialhaskell/stack/issues/1975).
+* Fix: Rebuilding when disabling profiling
+  [#2023](https://github.com/commercialhaskell/stack/issues/2023).
+
+## 1.0.4.3 - 2016-04-07
+
+Bug fixes:
+
+* Do not delete contents of ~/.ssh when using `stack clean --full` with Docker
+  enabled [#2000](https://github.com/commercialhaskell/stack/issues/2000)
+
+## 1.0.4.2 - 2016-03-09
+
+Build with `path-io-1.0.0`. There are no changes in behaviour from 1.0.4, so no
+binaries are released for this version.
+
+## 1.0.4.1 - 2016-02-21
+
+Fixes build with `aeson-0.11.0.0`. There are no changes in behaviour from 1.0.4,
+so no binaries are released for this version.
+
+## 1.0.4 - 2016-02-20
+
+Major changes:
+
+* Some notable changes in `stack init`:
+    * Overall it should now be able to initialize almost all existing Cabal
+      packages out of the box as long as the package itself is consistently
+      defined.
+    * Choose the best possible snapshot and add extra-deps on top
+      of a snapshot other than a compiler snapshot -
+      [#1583](https://github.com/commercialhaskell/stack/pull/1583)
+    * Automatically omit a package (`--omit-packages`) when it is compiler
+      incompatible or when there are packages with conflicting dependency
+      requirements. See
+      [#1674](https://github.com/commercialhaskell/stack/pull/1674).
+    * Some more changes for a better user experience. Please refer to
+      the doc guide for details.
+* Add support for Hpack, alternative package description format
+  [#1679](https://github.com/commercialhaskell/stack/issues/1679)
+
+Other enhancements:
+
+* Docker: pass ~/.ssh and SSH auth socket into container, so that git repos
+  work [#1358](https://github.com/commercialhaskell/stack/issues/1358).
+* Docker: strip suffix from docker --version.
+  [#1653](https://github.com/commercialhaskell/stack/issues/1653)
+* Docker: pass USER and PWD environment variables into container.
+* On each run, Stack will test the Stack root directory (~/.stack), and the
+  project and package work directories (.stack-work) for whether they are
+  owned by the current user and abort if they are not. This precaution can
+  be disabled with the `--allow-different-user` flag or `allow-different-user`
+  option in the global config (~/.stack/config.yaml).
+  [#471](https://github.com/commercialhaskell/stack/issues/471)
+* Added `stack clean --full` option for full working dir cleanup.
+* YAML config: support Zip archives.
+* Redownload build plan if parsing fails
+  [#1702](https://github.com/commercialhaskell/stack/issues/1702).
+* Give mustache templates access to a 'year' tag
+  [#1716](https://github.com/commercialhaskell/stack/pull/1716).
+* Have "stack ghci" warn about module name aliasing.
+* Add "stack ghci --load-local-deps".
+* Build Setup.hs with -rtsopts
+  [#1687](https://github.com/commercialhaskell/stack/issues/1687).
+* `stack init` accepts a list of directories.
+* Add flag infos to DependencyPlanFailures (for better error output in case of
+  flags) [#713](https://github.com/commercialhaskell/stack/issues/713)
+* `stack new --bare` complains for overwrites, and add `--force` option
+  [#1597](https://github.com/commercialhaskell/stack/issues/1597).
+
+Bug fixes:
+
+* Previously, `stack ghci` would fail with `cannot satisfy -package-id` when the
+  implicit build step changes the package key of some dependency.
+* Fix: Building with ghcjs: "ghc-pkg: Prelude.chr: bad argument: 2980338"
+  [#1665](https://github.com/commercialhaskell/stack/issues/1665).
+* Fix running test / bench with `--profile` / `--trace`.
+* Fix: build progress counter is no longer visible
+  [#1685](https://github.com/commercialhaskell/stack/issues/1685).
+* Use "-RTS" w/ profiling to allow extra args
+  [#1772](https://github.com/commercialhaskell/stack/issues/1772).
+* Fix withUnpackedTarball7z to find name of srcDir after unpacking
+  (fixes `stack setup` fails for ghcjs project on windows)
+  [#1774](https://github.com/commercialhaskell/stack/issues/1774).
+* Add space before auto-generated bench opts (makes profiling options work
+  uniformly for applications and benchmark suites)
+  [#1771](https://github.com/commercialhaskell/stack/issues/1771).
+* Do not try to find plugin if it resembles flag.
+* Setup.hs changes cause package dirtiness
+  [#1711](https://github.com/commercialhaskell/stack/issues/1711).
+* Send "stack templates" output to stdout
+  [#1792](https://github.com/commercialhaskell/stack/issues/1792).
+
+## 1.0.2 - 2016-01-18
+
+Release notes:
+
+- Arch Linux: Stack has been adopted into the
+  [official community repository](https://www.archlinux.org/packages/community/x86_64/stack/),
+  so we will no longer be updating the AUR with new versions. See the
+  [install/upgrade guide](http://docs.haskellstack.org/en/stable/install_and_upgrade/#arch-linux)
+  for current download instructions.
+
+Major changes:
+
+- `stack init` and `solver` overhaul
+  [#1583](https://github.com/commercialhaskell/stack/pull/1583)
+
+Other enhancements:
+
+- Disable locale/codepage hacks when GHC >=7.10.3
+  [#1552](https://github.com/commercialhaskell/stack/issues/1552)
+- Specify multiple images to build for `stack image container`
+  [docs](http://docs.haskellstack.org/en/stable/yaml_configuration/#image)
+- Specify which executables to include in images for `stack image container`
+  [docs](http://docs.haskellstack.org/en/stable/yaml_configuration/#image)
+- Docker: pass supplementary groups and umask into container
+- If git fetch fails wipe the directory and try again from scratch
+  [#1418](https://github.com/commercialhaskell/stack/issues/1418)
+- Warn if newly installed executables will not be available on the PATH
+  [#1362](https://github.com/commercialhaskell/stack/issues/1362)
+- `stack.yaml`: for `stack image container`, specify multiple images to
+  generate, and which executables should be added to those images
+- GHCI: add interactive Main selection
+  [#1068](https://github.com/commercialhaskell/stack/issues/1068)
+- Care less about the particular name of a GHCJS sdist folder
+  [#1622](https://github.com/commercialhaskell/stack/issues/1622)
+- Unified Enable/disable help messaging
+  [#1613](https://github.com/commercialhaskell/stack/issues/1613)
+
+Bug fixes:
+
+- Do not share precompiled packages between GHC/platform variants and Docker
+  [#1551](https://github.com/commercialhaskell/stack/issues/1551)
+- Properly redownload corrupted downloads with the correct file size.
+  [Mailing list discussion](https://groups.google.com/d/msg/haskell-stack/iVGDG5OHYxs/FjUrR5JsDQAJ)
+- Gracefully handle invalid paths in error/warning messages
+  [#1561](https://github.com/commercialhaskell/stack/issues/1561)
+- Nix: select the correct GHC version corresponding to the snapshot
+  even when an abstract resolver is passed via `--resolver` on the
+  command-line.
+  [#1641](https://github.com/commercialhaskell/stack/issues/1641)
+- Fix: Stack does not allow using an external package from ghci
+  [#1557](https://github.com/commercialhaskell/stack/issues/1557)
+- Disable ambiguous global '--resolver' option for 'stack init'
+  [#1531](https://github.com/commercialhaskell/stack/issues/1531)
+- Obey `--no-nix` flag
+- Fix: GHCJS Execute.hs: Non-exhaustive patterns in lambda
+  [#1591](https://github.com/commercialhaskell/stack/issues/1591)
+- Send file-watch and sticky logger messages to stderr
+  [#1302](https://github.com/commercialhaskell/stack/issues/1302)
+  [#1635](https://github.com/commercialhaskell/stack/issues/1635)
+- Use globaldb path for querying Cabal version
+  [#1647](https://github.com/commercialhaskell/stack/issues/1647)
+
+## 1.0.0 - 2015-12-24
+
+Release notes:
+
+*  We are calling this version 1.0.0 in preparation for Stackage
+   LTS 4.  Note, however, that this does not mean the code's API
+   will be stable as this is primarily an end-user tool.
+
+Enhancements:
+
+* Added flag `--profile` flag: passed with `stack build`, it will
+  enable profiling, and for `--bench` and `--test` it will generate a
+  profiling report by passing `+RTS -p` to the executable(s). Great
+  for using like `stack build --bench --profile` (remember that
+  enabling profile will slow down your benchmarks by >4x). Run `stack
+  build --bench` again to disable the profiling and get proper speeds
+* Added flag `--trace` flag: just like `--profile`, it enables
+  profiling, but instead of generating a report for `--bench` and
+  `--test`, prints out a stack trace on exception. Great for using
+  like `stack build --test --trace`
+* Nix: all options can be overridden on command line
+  [#1483](https://github.com/commercialhaskell/stack/issues/1483)
+* Nix: build environments (shells) are now pure by default.
+* Make verbosity silent by default in script interpreter mode
+  [#1472](https://github.com/commercialhaskell/stack/issues/1472)
+* Show a message when resetting git commit fails
+  [#1453](https://github.com/commercialhaskell/stack/issues/1453)
+* Improve Unicode handling in project/package names
+  [#1337](https://github.com/commercialhaskell/stack/issues/1337)
+* Fix ambiguity between a Stack command and a filename to execute (prefer
+  `stack` subcommands)
+  [#1471](https://github.com/commercialhaskell/stack/issues/1471)
+* Support multi line interpreter directive comments
+  [#1394](https://github.com/commercialhaskell/stack/issues/1394)
+* Handle space separated pids in ghc-pkg dump (for GHC HEAD)
+  [#1509](https://github.com/commercialhaskell/stack/issues/1509)
+* Add ghci --no-package-hiding option
+  [#1517](https://github.com/commercialhaskell/stack/issues/1517)
+* `stack new` can download templates from URL
+  [#1466](https://github.com/commercialhaskell/stack/issues/1466)
+
+Bug fixes:
+
+* Nix: `stack exec` options are passed properly to the Stack sub process
+  [#1538](https://github.com/commercialhaskell/stack/issues/1538)
+* Nix: specifying a shell-file works in any current working directory
+  [#1547](https://github.com/commercialhaskell/stack/issues/1547)
+* Nix: use `--resolver` argument
+* Docker: fix missing image message and '--docker-auto-pull'
+* No HTML escaping for "stack new" template params
+  [#1475](https://github.com/commercialhaskell/stack/issues/1475)
+* Set permissions for generated .ghci script
+  [#1480](https://github.com/commercialhaskell/stack/issues/1480)
+* Restrict commands allowed in interpreter mode
+  [#1504](https://github.com/commercialhaskell/stack/issues/1504)
+* `stack ghci` does not see preprocessed files for executables
+  [#1347](https://github.com/commercialhaskell/stack/issues/1347)
+* All test suites run even when only one is requested
+  [#1550](https://github.com/commercialhaskell/stack/pull/1550)
+* Edge cases in broken templates give odd errors
+  [#1535](https://github.com/commercialhaskell/stack/issues/1535)
+* Fix test coverage bug on windows
+
+## 0.1.10.1 - 2015-12-13
+
+Bug fixes:
+
+* `stack image container` did not actually build an image
+  [#1473](https://github.com/commercialhaskell/stack/issues/1473)
+
+## 0.1.10.0 - 2015-12-04
+
+Release notes:
+
+* The Stack home page is now at [haskellstack.org](http://haskellstack.org),
+  which shows the documentation rendered by readthedocs.org. Note: this
+  has necessitated some changes to the links in the documentation's markdown
+  source code, so please check the links on the website before submitting a PR
+  to fix them.
+* The locations of the
+  [Ubuntu](http://docs.haskellstack.org/en/stable/install_and_upgrade/#ubuntu)
+  and
+  [Debian](http://docs.haskellstack.org/en/stable/install_and_upgrade/#debian)
+  package repositories have changed to have correct URL semantics according to
+  Debian's guidelines
+  [#1378](https://github.com/commercialhaskell/stack/issues/1378). The old
+  locations will continue to work for some months, but we suggest that you
+  adjust your `/etc/apt/sources.list.d/fpco.list` to the new location to avoid
+  future disruption.
+* [openSUSE and SUSE Linux Enterprise](http://docs.haskellstack.org/en/stable/install_and_upgrade/#suse)
+  packages are now available, thanks to [@mimi1vx](https://github.com/mimi1vx).
+  Note: there will be some lag before these pick up new versions, as they are
+  based on Stackage LTS.
+
+Major changes:
+
+* Support for building inside a Nix-shell providing system dependencies
+  [#1285](https://github.com/commercialhaskell/stack/pull/1285)
+* Add optional GPG signing on `stack upload --sign` or with
+  `stack sig sign ...`
+
+Other enhancements:
+
+* Print latest applicable version of packages on conflicts
+  [#508](https://github.com/commercialhaskell/stack/issues/508)
+* Support for packages located in Mercurial repositories
+  [#1397](https://github.com/commercialhaskell/stack/issues/1397)
+* Only run benchmarks specified as build targets
+  [#1412](https://github.com/commercialhaskell/stack/issues/1412)
+* Support git-style executable fall-through (`stack something` executes
+  `stack-something` if present)
+  [#1433](https://github.com/commercialhaskell/stack/issues/1433)
+* GHCi now loads intermediate dependencies
+  [#584](https://github.com/commercialhaskell/stack/issues/584)
+* `--work-dir` option for overriding `.stack-work`
+  [#1178](https://github.com/commercialhaskell/stack/issues/1178)
+* Support `detailed-0.9` tests
+  [#1429](https://github.com/commercialhaskell/stack/issues/1429)
+* Docker: improved POSIX signal proxying to containers
+  [#547](https://github.com/commercialhaskell/stack/issues/547)
+
+Bug fixes:
+
+* Show absolute paths in error messages in multi-package builds
+  [#1348](https://github.com/commercialhaskell/stack/issues/1348)
+* Docker-built binaries and libraries in different path
+  [#911](https://github.com/commercialhaskell/stack/issues/911)
+  [#1367](https://github.com/commercialhaskell/stack/issues/1367)
+* Docker: `--resolver` argument did not effect selected image tag
+* GHCi: Spaces in filepaths caused module loading issues
+  [#1401](https://github.com/commercialhaskell/stack/issues/1401)
+* GHCi: cpp-options in Cabal files were not used
+  [#1419](https://github.com/commercialhaskell/stack/issues/1419)
+* Benchmarks could not be run independently of each other
+  [#1412](https://github.com/commercialhaskell/stack/issues/1412)
+* Send output of building setup to stderr
+  [#1410](https://github.com/commercialhaskell/stack/issues/1410)
+
+## 0.1.8.0 - 2015-11-20
+
+Major changes:
+
+* GHCJS can now be used with stackage snapshots via the new `compiler` key.
+* Windows installers are now available:
+  [download them here](http://docs.haskellstack.org/en/stable/install_and_upgrade/#windows)
+  [#613](https://github.com/commercialhaskell/stack/issues/613)
+* Docker integration works with non-FPComplete generated images
+  [#531](https://github.com/commercialhaskell/stack/issues/531)
+
+Other enhancements:
+
+* Added an `allow-newer` config option
+  [#922](https://github.com/commercialhaskell/stack/issues/922)
+  [#770](https://github.com/commercialhaskell/stack/issues/770)
+* When a Hackage revision invalidates a build plan in a snapshot, trust the
+  snapshot [#770](https://github.com/commercialhaskell/stack/issues/770)
+* Added a `stack config set resolver RESOLVER` command. Part of work on
+  [#115](https://github.com/commercialhaskell/stack/issues/115)
+* `stack setup` can now install GHCJS on windows. See
+  [#1145](https://github.com/commercialhaskell/stack/issues/1145) and
+  [#749](https://github.com/commercialhaskell/stack/issues/749)
+* `stack hpc report` command added, which generates reports for HPC tix files
+* `stack ghci` now accepts all the flags accepted by `stack build`. See
+  [#1186](https://github.com/commercialhaskell/stack/issues/1186)
+* `stack ghci` builds the project before launching GHCi. If the build fails,
+  try to launch GHCi anyway. Use `stack ghci --no-build` option to disable
+  [#1065](https://github.com/commercialhaskell/stack/issues/1065)
+* `stack ghci` now detects and warns about various circumstances where it is
+  liable to fail. See
+  [#1270](https://github.com/commercialhaskell/stack/issues/1270)
+* Added `require-docker-version` configuration option
+* Packages will now usually be built along with their tests and benchmarks. See
+  [#1166](https://github.com/commercialhaskell/stack/issues/1166)
+* Relative `local-bin-path` paths will be relative to the project's root
+  directory, not the current working directory.
+  [#1340](https://github.com/commercialhaskell/stack/issues/1340)
+* `stack clean` now takes an optional `[PACKAGE]` argument for use in
+  multi-package projects. See
+  [#583](https://github.com/commercialhaskell/stack/issues/583)
+* Ignore cabal_macros.h as a dependency
+  [#1195](https://github.com/commercialhaskell/stack/issues/1195)
+* Pad timestamps and show local time in --verbose output
+  [#1226](https://github.com/commercialhaskell/stack/issues/1226)
+* GHCi: Import all modules after loading them
+  [#995](https://github.com/commercialhaskell/stack/issues/995)
+* Add subcommand aliases: `repl` for `ghci`, and `runhaskell` for `runghc`
+  [#1241](https://github.com/commercialhaskell/stack/issues/1241)
+* Add typo recommendations for unknown package identifiers
+  [#158](https://github.com/commercialhaskell/stack/issues/158)
+* Add `stack path --local-hpc-root` option
+* Overhaul dependencies' haddocks copying
+  [#1231](https://github.com/commercialhaskell/stack/issues/1231)
+* Support for extra-package-dbs in 'stack ghci'
+  [#1229](https://github.com/commercialhaskell/stack/pull/1229)
+* `stack new` disallows package names with "words" consisting solely of numbers
+  [#1336](https://github.com/commercialhaskell/stack/issues/1336)
+* `stack build --fast` turns off optimizations
+* Show progress while downloading package index
+  [#1223](https://github.com/commercialhaskell/stack/issues/1223).
+
+Bug fixes:
+
+* Fix: Haddocks not copied for dependencies
+  [#1105](https://github.com/commercialhaskell/stack/issues/1105)
+* Fix: Global options did not work consistently after subcommand
+  [#519](https://github.com/commercialhaskell/stack/issues/519)
+* Fix: 'stack ghci' does not notice that a module got deleted
+  [#1180](https://github.com/commercialhaskell/stack/issues/1180)
+* Rebuild when Cabal file is changed
+* Fix: Paths in GHC warnings not canonicalized, nor those for packages in
+  subdirectories or outside the project root
+  [#1259](https://github.com/commercialhaskell/stack/issues/1259)
+* Fix: unlisted files in tests and benchmarks trigger extraneous second build
+  [#838](https://github.com/commercialhaskell/stack/issues/838)
+
+## 0.1.6.0 - 2015-10-15
+
+Major changes:
+
+* `stack setup` now supports building and booting GHCJS from source tarball.
+* On Windows, build directories no longer display "pretty" information
+  (like x86_64-windows/Cabal-1.22.4.0), but rather a hash of that
+  content. The reason is to avoid the 260 character path limitation on
+  Windows. See
+  [#1027](https://github.com/commercialhaskell/stack/pull/1027)
+* Rename config files and clarify their purposes
+  [#969](https://github.com/commercialhaskell/stack/issues/969)
+    * `~/.stack/stack.yaml` --> `~/.stack/config.yaml`
+    * `~/.stack/global` --> `~/.stack/global-project`
+    * `/etc/stack/config` --> `/etc/stack/config.yaml`
+    * Old locations still supported, with deprecation warnings
+* New command "stack eval CODE", which evaluates to "stack exec ghc -- -e CODE".
+
+Other enhancements:
+
+* No longer install `git` on Windows
+  [#1046](https://github.com/commercialhaskell/stack/issues/1046). You
+  can still get this behavior by running the following yourself:
+  `stack exec -- pacman -Sy --noconfirm git`.
+* Typing enter during --file-watch triggers a rebuild
+  [#1023](https://github.com/commercialhaskell/stack/pull/1023)
+* Use Haddock's `--hyperlinked-source` (crosslinked source), if available
+  [#1070](https://github.com/commercialhaskell/stack/pull/1070)
+* Use Stack-installed GHCs for `stack init --solver`
+  [#1072](https://github.com/commercialhaskell/stack/issues/1072)
+* Experimental: Add `stack query` command
+  [#1087](https://github.com/commercialhaskell/stack/issues/1087)
+* By default, Stack no longer rebuilds a package due to GHC options changes.
+  This behavior can be tweaked with the `rebuild-ghc-options` setting.
+  [#1089](https://github.com/commercialhaskell/stack/issues/1089)
+* By default, ghc-options are applied to all local packages, not just targets.
+  This behavior can be tweaked with the `apply-ghc-options` setting.
+  [#1089](https://github.com/commercialhaskell/stack/issues/1089)
+* Docker: download or override location of Stack executable to re-run in
+  container [#974](https://github.com/commercialhaskell/stack/issues/974)
+* Docker: when Docker Engine is remote, do not run containerized processes as
+  host's UID/GID [#194](https://github.com/commercialhaskell/stack/issues/194)
+* Docker: `set-user` option to enable/disable running containerized processes as
+  host's UID/GID [#194](https://github.com/commercialhaskell/stack/issues/194)
+* Custom Setup.hs files are now precompiled instead of interpreted. This should
+  be a major performance win for certain edge cases (biggest example:
+  [building Cabal itself](https://github.com/commercialhaskell/stack/issues/1041))
+  while being either neutral or a minor slowdown for more common cases.
+* `stack test --coverage` now also generates a unified coverage report for
+  multiple test-suites / packages.  In the unified report, test-suites can
+  contribute to the coverage of other packages.
+
+Bug fixes:
+
+* Ignore stack-built executables named `ghc`
+  [#1052](https://github.com/commercialhaskell/stack/issues/1052)
+* Fix quoting of output failed command line arguments
+* Mark executable-only packages as installed when copied from cache
+  [#1043](https://github.com/commercialhaskell/stack/pull/1043)
+* Canonicalize temporary directory paths
+  [#1047](https://github.com/commercialhaskell/stack/pull/1047)
+* Put code page fix inside the build function itself
+  [#1066](https://github.com/commercialhaskell/stack/issues/1066)
+* Add `explicit-setup-deps` option
+  [#1110](https://github.com/commercialhaskell/stack/issues/1110), and change
+  the default to the old behavior of using any package in the global and
+  snapshot database
+  [#1025](https://github.com/commercialhaskell/stack/issues/1025)
+* Precompiled cache checks full package IDs on Cabal < 1.22
+  [#1103](https://github.com/commercialhaskell/stack/issues/1103)
+* Pass -package-id to ghci
+  [#867](https://github.com/commercialhaskell/stack/issues/867)
+* Ignore global packages when copying precompiled packages
+  [#1146](https://github.com/commercialhaskell/stack/issues/1146)
+
+## 0.1.5.0 - 2015-09-24
+
+Major changes:
+
+* On Windows, we now use a full MSYS2 installation in place of the previous
+  PortableGit. This gives you access to the pacman package manager for more
+  easily installing libraries.
+* Support for custom GHC binary distributions
+  [#530](https://github.com/commercialhaskell/stack/issues/530)
+    * `ghc-variant` option in `stack.yaml` to specify the variant (also
+      `--ghc-variant` command-line option)
+    * `setup-info` in `stack.yaml`, to specify where to download custom binary
+      distributions (also `--ghc-bindist` command-line option)
+    * Note: On systems with libgmp4 (aka `libgmp.so.3`), such as CentOS 6, you
+      may need to re-run `stack setup` due to the centos6 GHC binary
+      distribution being treated like a variant
+* A new `--pvp-bounds` flag to the sdist and upload commands allows automatic
+  adding of PVP upper and/or lower bounds to your dependencies
+
+Other enhancements:
+
+* Adapt to upcoming Cabal installed package identifier format change
+  [#851](https://github.com/commercialhaskell/stack/issues/851)
+* `stack setup` takes a `--stack-setup-yaml` argument
+* `--file-watch` is more discerning about which files to rebuild for
+  [#912](https://github.com/commercialhaskell/stack/issues/912)
+* `stack path` now supports `--global-pkg-db` and `--ghc-package-path`
+* `--reconfigure` flag
+  [#914](https://github.com/commercialhaskell/stack/issues/914)
+  [#946](https://github.com/commercialhaskell/stack/issues/946)
+* Cached data is written with a checksum of its structure
+  [#889](https://github.com/commercialhaskell/stack/issues/889)
+* Fully removed `--optimizations` flag
+* Added `--cabal-verbose` flag
+* Added `--file-watch-poll` flag for polling instead of using filesystem events
+  (useful for running tests in a Docker container while modifying code in the
+  host environment. When code is injected into the container via a volume, the
+  container will not propagate filesystem events).
+* Give a preemptive error message when `-prof` is given as a GHC option
+  [#1015](https://github.com/commercialhaskell/stack/issues/1015)
+* Locking is now optional, and will be turned on by setting the `STACK_LOCK`
+  environment variable to `true`
+  [#950](https://github.com/commercialhaskell/stack/issues/950)
+* Create default `stack.yaml` with documentation comments and commented out
+  options [#226](https://github.com/commercialhaskell/stack/issues/226)
+* Out of memory warning if Cabal exits with -9
+  [#947](https://github.com/commercialhaskell/stack/issues/947)
+
+Bug fixes:
+
+* Hacky workaround for optparse-applicative issue with `stack exec --help`
+  [#806](https://github.com/commercialhaskell/stack/issues/806)
+* Build executables for local extra-deps
+  [#920](https://github.com/commercialhaskell/stack/issues/920)
+* copyFile cannot handle directories
+  [#942](https://github.com/commercialhaskell/stack/pull/942)
+* Support for spaces in Haddock interface files
+  [fpco/minghc#85](https://github.com/fpco/minghc/issues/85)
+* Temporarily building against a "shadowing" local package?
+  [#992](https://github.com/commercialhaskell/stack/issues/992)
+* Fix `Setup.exe` name for `--upgrade-cabal` on Windows
+  [#1002](https://github.com/commercialhaskell/stack/issues/1002)
+* Unlisted dependencies no longer trigger extraneous second build
+  [#838](https://github.com/commercialhaskell/stack/issues/838)
+
+## 0.1.4.1 - 2015-09-04
+
+Fix stack's own Haddocks.  No changes to functionality (only comments updated).
+
+## 0.1.4.0 - 2015-09-04
+
+Major changes:
+
+* You now have more control over how GHC versions are matched, e.g. "use exactly
+  this version," "use the specified minor version, but allow patches," or "use
+  the given minor version or any later minor in the given major release." The
+  default has switched from allowing newer later minor versions to a specific
+  minor version allowing patches. For more information, see
+  [#736](https://github.com/commercialhaskell/stack/issues/736) and
+  [#784](https://github.com/commercialhaskell/stack/pull/784).
+* Support added for compiling with GHCJS
+* Stack can now reuse prebuilt binaries between snapshots. That means that, if
+  you build package foo in LTS-3.1, that binary version can be reused in
+  LTS-3.2, assuming it uses the same dependencies and flags.
+  [#878](https://github.com/commercialhaskell/stack/issues/878)
+
+Other enhancements:
+
+* Added the `--docker-env` argument, to set environment variables in Docker
+  container.
+* Set locale environment variables to UTF-8 encoding for builds to avoid
+  "commitBuffer: invalid argument" errors from GHC
+  [#793](https://github.com/commercialhaskell/stack/issues/793)
+* Enable transliteration for encoding on stdout and stderr
+  [#824](https://github.com/commercialhaskell/stack/issues/824)
+* By default, `stack upgrade` automatically installs GHC as necessary
+  [#797](https://github.com/commercialhaskell/stack/issues/797)
+* Added the `ghc-options` key to `stack.yaml`
+  [#796](https://github.com/commercialhaskell/stack/issues/796)
+* Added the `extra-path` key to `stack.yaml`
+* Code page changes on Windows only apply to the build command (and its
+  synonyms), and can be controlled via a command line flag (still defaults to
+  on) [#757](https://github.com/commercialhaskell/stack/issues/757)
+* Implicitly add packages to extra-deps when a flag for them is set
+  [#807](https://github.com/commercialhaskell/stack/issues/807)
+* Use a precompiled Setup.hs for simple build types
+  [#801](https://github.com/commercialhaskell/stack/issues/801)
+* Set --enable-tests and --enable-benchmarks optimistically
+  [#805](https://github.com/commercialhaskell/stack/issues/805)
+* `--only-configure` option added
+  [#820](https://github.com/commercialhaskell/stack/issues/820)
+* Check for duplicate local package names
+* Stop nagging people that call `stack test`
+  [#845](https://github.com/commercialhaskell/stack/issues/845)
+* `--file-watch` will ignore files that are in your VCS boring/ignore files
+  [#703](https://github.com/commercialhaskell/stack/issues/703)
+* Add `--numeric-version` option
+
+Bug fixes:
+
+* `stack init --solver` fails if `GHC_PACKAGE_PATH` is present
+  [#860](https://github.com/commercialhaskell/stack/issues/860)
+* `stack solver` and `stack init --solver` check for test suite and benchmark
+  dependencies [#862](https://github.com/commercialhaskell/stack/issues/862)
+* More intelligent logic for setting UTF-8 locale environment variables
+  [#856](https://github.com/commercialhaskell/stack/issues/856)
+* Create missing directories for `stack sdist`
+* Do not ignore Cabal files with extra periods
+  [#895](https://github.com/commercialhaskell/stack/issues/895)
+* Deprecate unused `--optimizations` flag
+* Truncated output on slow terminals
+  [#413](https://github.com/commercialhaskell/stack/issues/413)
+
+## 0.1.3.1 - 2015-08-12
+
+Bug fixes:
+
+* Ignore disabled executables
+  [#763](https://github.com/commercialhaskell/stack/issues/763)
+
+## 0.1.3.0 - 2015-08-12
+
+Major changes:
+
+* Detect when a module is compiled but not listed in the Cabal file
+  ([#32](https://github.com/commercialhaskell/stack/issues/32))
+    * A warning is displayed for any modules that should be added to
+      `other-modules` in the Cabal file
+    * These modules are taken into account when determining whether a package
+      needs to be built
+* Respect TemplateHaskell addDependentFile dependency changes
+  ([#105](https://github.com/commercialhaskell/stack/issues/105))
+    * TH dependent files are taken into account when determining whether a
+      package needs to be built.
+* Overhauled target parsing, added `--test` and `--bench` options
+  [#651](https://github.com/commercialhaskell/stack/issues/651)
+    * For details, see
+      [Build commands documentation](http://docs.haskellstack.org/en/stable/build_command/)
+
+Other enhancements:
+
+* Set the `HASKELL_DIST_DIR` environment variable
+  [#524](https://github.com/commercialhaskell/stack/pull/524)
+* Track build status of tests and benchmarks
+  [#525](https://github.com/commercialhaskell/stack/issues/525)
+* `--no-run-tests` [#517](https://github.com/commercialhaskell/stack/pull/517)
+* Targets outside of root dir do not build
+  [#366](https://github.com/commercialhaskell/stack/issues/366)
+* Upper limit on number of flag combinations to test
+  [#543](https://github.com/commercialhaskell/stack/issues/543)
+* Fuzzy matching support to give better error messages for close version numbers
+  [#504](https://github.com/commercialhaskell/stack/issues/504)
+* `--local-bin-path` global option. Use to change where binaries get placed on a
+  `--copy-bins` [#342](https://github.com/commercialhaskell/stack/issues/342)
+* Custom snapshots [#111](https://github.com/commercialhaskell/stack/issues/111)
+* --force-dirty flag: Force treating all local packages as having dirty files
+  (useful for cases where Stack cannot detect a file change)
+* GHC error messages: display file paths as absolute instead of relative for
+  better editor integration
+* Add the `--copy-bins` option
+  [#569](https://github.com/commercialhaskell/stack/issues/569)
+* Give warnings on unexpected config keys
+  [#48](https://github.com/commercialhaskell/stack/issues/48)
+* Remove Docker `pass-host` option
+* Do not require `cabal-install` to upload
+  [#313](https://github.com/commercialhaskell/stack/issues/313)
+* Generate indexes for all deps and all installed snapshot packages
+  [#143](https://github.com/commercialhaskell/stack/issues/143)
+* Provide `--resolver global` option
+  [#645](https://github.com/commercialhaskell/stack/issues/645)
+    * Also supports `--resolver nightly`, `--resolver lts`, and
+      `--resolver lts-X`
+* Make `stack build --flag` error when flag or package is unknown
+  [#617](https://github.com/commercialhaskell/stack/issues/617)
+* Preserve file permissions when unpacking sources
+  [#666](https://github.com/commercialhaskell/stack/pull/666)
+* `stack build` etc work outside of a project
+* `list-dependencies` command
+  [#638](https://github.com/commercialhaskell/stack/issues/638)
+* `--upgrade-cabal` option to `stack setup`
+  [#174](https://github.com/commercialhaskell/stack/issues/174)
+* `--exec` option [#651](https://github.com/commercialhaskell/stack/issues/651)
+* `--only-dependencies` implemented correctly
+  [#387](https://github.com/commercialhaskell/stack/issues/387)
+
+Bug fixes:
+
+* Extensions from the Cabal `other-extensions` field no longer enabled by
+  default [#449](https://github.com/commercialhaskell/stack/issues/449)
+* Fix: haddock forces rebuild of empty packages
+  [#452](https://github.com/commercialhaskell/stack/issues/452)
+* Do not copy over executables excluded by component selection
+  [#605](https://github.com/commercialhaskell/stack/issues/605)
+* Fix: Stack fails on Windows with git package in `stack.yaml` and no git
+  executable on the PATH
+  [#712](https://github.com/commercialhaskell/stack/issues/712)
+* Fixed GHCi issue: Specifying explicit package versions (#678)
+* Fixed GHCi issue: Specifying -odir and -hidir as .stack-work/odir (#529)
+* Fixed GHCi issue: Specifying A instead of A.ext for modules (#498)
+
+## 0.1.2.0 - 2015-07-05
+
+* Add `--prune` flag to `stack dot`
+  [#487](https://github.com/commercialhaskell/stack/issues/487)
+* Add `--[no-]external`,`--[no-]include-base` flags to `stack dot`
+  [#437](https://github.com/commercialhaskell/stack/issues/437)
+* Add `--ignore-subdirs` flag to init command
+  [#435](https://github.com/commercialhaskell/stack/pull/435)
+* Handle attempt to use non-existing resolver
+  [#436](https://github.com/commercialhaskell/stack/pull/436)
+* Add `--force` flag to `init` command
+* exec style commands accept the `--package` option (see
+  [Reddit discussion](http://www.reddit.com/r/haskell/comments/3bd66h/stack_runghc_turtle_as_haskell_script_solution/))
+* `stack upload` without arguments doe snot do anything
+  [#439](https://github.com/commercialhaskell/stack/issues/439)
+* Print latest version of packages on conflicts
+  [#450](https://github.com/commercialhaskell/stack/issues/450)
+* Flag to avoid rerunning tests that have not changed
+  [#451](https://github.com/commercialhaskell/stack/issues/451)
+* Stack can act as a script interpreter (see [Script interpreter]
+  (https://github.com/commercialhaskell/stack/wiki/Script-interpreter) and
+  [Reddit discussion](http://www.reddit.com/r/haskell/comments/3bd66h/stack_runghc_turtle_as_haskell_script_solution/))
+* Add the __`--file-watch`__ flag to auto-rebuild on file changes
+  [#113](https://github.com/commercialhaskell/stack/issues/113)
+* Rename `stack docker exec` to `stack exec --plain`
+* Add the `--skip-msys` flag
+  [#377](https://github.com/commercialhaskell/stack/issues/377)
+* `--keep-going`, turned on by default for tests and benchmarks
+  [#478](https://github.com/commercialhaskell/stack/issues/478)
+* `concurrent-tests: BOOL`
+  [#492](https://github.com/commercialhaskell/stack/issues/492)
+* Use hashes to check file dirtiness
+  [#502](https://github.com/commercialhaskell/stack/issues/502)
+* Install correct GHC build on systems with libgmp.so.3
+  [#465](https://github.com/commercialhaskell/stack/issues/465)
+* `stack upgrade` checks version before upgrading
+  [#447](https://github.com/commercialhaskell/stack/issues/447)
+
+## 0.1.1.0 - 2015-06-26
+
+* Remove GHC uncompressed tar file after installation
+  [#376](https://github.com/commercialhaskell/stack/issues/376)
+* Put stackage snapshots JSON on S3
+  [#380](https://github.com/commercialhaskell/stack/issues/380)
+* Specifying flags for multiple packages
+  [#335](https://github.com/commercialhaskell/stack/issues/335)
+* single test suite failure should show entire log
+  [#388](https://github.com/commercialhaskell/stack/issues/388)
+* valid-wanted is a confusing option name
+  [#386](https://github.com/commercialhaskell/stack/issues/386)
+* `stack init` in multi-package project should use local packages for dependency
+  checking [#384](https://github.com/commercialhaskell/stack/issues/384)
+* Display information on why a snapshot was rejected
+  [#381](https://github.com/commercialhaskell/stack/issues/381)
+* Give a reason for unregistering packages
+  [#389](https://github.com/commercialhaskell/stack/issues/389)
+* `stack exec` accepts the `--no-ghc-package-path` parameter
+* Do not require build plan to upload
+  [#400](https://github.com/commercialhaskell/stack/issues/400)
+* Specifying test components only builds/runs those tests
+  [#398](https://github.com/commercialhaskell/stack/issues/398)
+* `STACK_EXE` environment variable
+* Add the `stack dot` command
+* `stack upgrade` added
+  [#237](https://github.com/commercialhaskell/stack/issues/237)
+* `--stack-yaml` command line flag
+  [#378](https://github.com/commercialhaskell/stack/issues/378)
+* `--skip-ghc-check` command line flag
+  [#423](https://github.com/commercialhaskell/stack/issues/423)
+
+Bug fixes:
+
+* Haddock links to global packages no longer broken on Windows
+  [#375](https://github.com/commercialhaskell/stack/issues/375)
+* Make flags case-insensitive
+  [#397](https://github.com/commercialhaskell/stack/issues/397)
+* Mark packages uninstalled before rebuilding
+  [#365](https://github.com/commercialhaskell/stack/issues/365)
+
+## 0.1.0.0 - 2015-06-23
+
+* Fall back to Cabal dependency solver when a snapshot cannot be found
+* Basic implementation of `stack new`
+  [#137](https://github.com/commercialhaskell/stack/issues/137)
+* `stack solver` command
+  [#364](https://github.com/commercialhaskell/stack/issues/364)
+* `stack path` command
+  [#95](https://github.com/commercialhaskell/stack/issues/95)
+* Haddocks [#143](https://github.com/commercialhaskell/stack/issues/143):
+    * Build for dependencies
+    * Use relative links
+    * Generate module contents and index for all packages in project
+
+## 0.0.3 - 2015-06-17
+
+* `--prefetch`
+  [#297](https://github.com/commercialhaskell/stack/issues/297)
+* `upload` command ported from stackage-upload
+  [#225](https://github.com/commercialhaskell/stack/issues/225)
+* `--only-snapshot`
+  [#310](https://github.com/commercialhaskell/stack/issues/310)
+* `--resolver` [#224](https://github.com/commercialhaskell/stack/issues/224)
+* `stack init` [#253](https://github.com/commercialhaskell/stack/issues/253)
+* `--extra-include-dirs` and `--extra-lib-dirs`
+  [#333](https://github.com/commercialhaskell/stack/issues/333)
+* Specify intra-package target
+  [#201](https://github.com/commercialhaskell/stack/issues/201)
+
+## 0.0.2 - 2015-06-14
+
+* Fix some Windows specific bugs
+  [#216](https://github.com/commercialhaskell/stack/issues/216)
+* Improve output for package index updates
+  [#227](https://github.com/commercialhaskell/stack/issues/227)
+* Automatically update indices as necessary
+  [#227](https://github.com/commercialhaskell/stack/issues/227)
+* --verbose flag [#217](https://github.com/commercialhaskell/stack/issues/217)
+* Remove packages (HTTPS and Git)
+  [#199](https://github.com/commercialhaskell/stack/issues/199)
+* Config values for system-ghc and install-ghc
+* Merge `stack deps` functionality into `stack build`
+* `install` command
+  [#153](https://github.com/commercialhaskell/stack/issues/153) and
+  [#272](https://github.com/commercialhaskell/stack/issues/272)
+* overriding architecture value (useful to force 64-bit GHC on Windows, for
+  example)
+* Overhauled test running (allows cycles, avoids unnecessary recompilation, etc)
+
+## 0.0.1 - 2015-06-09
+
+* First public release, as the Haskell Tool Stack (beta quality).
doc/build_overview.md view
@@ -59,7 +59,7 @@ 
 This file is parsed to provide the following config values:
 
-* `snapshot` (or, alternatively, `resolver`) (required key)
+* `snapshot` (or, alternatively, `resolver` (deprecated)) (required key)
 * `compiler` (optional key)
 * `packages` (optional key, value defaults to `["."]`)
 * `extra-deps` (optional key, value defaults to `[]`)
@@ -72,8 +72,8 @@ 
 ## Wanted compiler, dependencies, and project packages
 
-* If the `--snapshot` CLI is present, ignore the `snapshot` (or `resolver`) and
-  `compiler` config values
+* If the `--snapshot` CLI is present, ignore the `snapshot` (or `resolver`
+  (deprecated)) and `compiler` config values
 * Load up the indicated snapshot (either config value or CLI arg). This will
   provide:
     * A map from package name to package location, flags, GHC options,
doc/commands/config_command.md view
@@ -73,7 +73,7 @@   recommend-stack-upgrade  Configure whether or not Stack should notify the user
                            if it identifes a new version of Stack is available.
   resolver                 Change the snapshot of the current project, using the
-                           resolver key.
+                           (deprecated) resolver key.
   snapshot                 Change the snapshot of the current project.
   system-ghc               Configure whether or not Stack should use a system
                            GHC installation.
@@ -152,7 +152,7 @@ 
 A command corresponding to the
 [`stack config set snapshot` command](#the-stack-config-set-snapshot-command)
-but using the `resolver` key instead of the `snapshot` key.
+but using the (deprecated) `resolver` key instead of the `snapshot` key.
 
 ## The `stack config set snapshot` command
 
@@ -171,7 +171,8 @@ available. A snapshot of `lts-22` will be translated into the most recent
 available in the `lts-22` sequence.
 
-If a `resolver` key is present, it will be replaced by a `snapshot` key.
+If a (deprecated) `resolver` key is present, it will be replaced by a `snapshot`
+key.
 
 ## The `stack config set system-ghc` command
 
doc/commands/init_command.md view
@@ -27,8 +27,7 @@ 
 If a snapshot is specified at the command line, `stack init` will try to use it.
 For further information, see the documentation for the
-[`--snapshot`](../configure/global_flags.md#-snapshot-option) and
-[`--resolver`](../configure/global_flags.md#-resolver-option) options.
+[`--snapshot`](../configure/global_flags.md#-snapshot-option) option.
 
 Otherwise, `stack init` will try to use the following Stackage snapshots in
 order of preference, using the first that is compatable: the most recent LTS
doc/commands/new_command.md view
@@ -59,8 +59,7 @@ If a snapshot is specified at the command line and the project is initialised
 for use with Stack, `stack new` will try to use it. For further information, see
 the documentation for the
-[`--snapshot`](../configure/global_flags.md#-snapshot-option) and
-[`--resolver`](../configure/global_flags.md#-resolver-option) options.
+[`--snapshot`](../configure/global_flags.md#-snapshot-option) option.
 
 ## Project templates
 
doc/configure/global_flags.md view
@@ -244,9 +244,13 @@ 
 ## `--resolver` option
 
-A synonym for the [`--snapshot` option](#-snapshot-option) to specify the
-snapshot resolver.
+[:octicons-thumbsdown-24: 3.9.3](https://github.com/commercialhaskell/stack/releases/tag/v3.9.3)
 
+The `--resolver` option (deprecated) and the [`--snapshot`](#-snapshot-option)
+option are synonyms.
+
+More than one of these options is prohibited.
+
 ## `--[no-]rsl-in-log` flag
 
 [:octicons-tag-24: 2.9.1](https://github.com/commercialhaskell/stack/releases/tag/v2.9.1)
@@ -298,18 +302,6 @@ Pass the option `--snapshot <snapshot>` to specify the snapshot. For further
 information, see the [`snapshot`](yaml/project.md#snapshot) project-specific
 configuration option documentation.
-
-At the command line (only):
-
-*   `--snapshot lts-<major_version>` specifies the latest Stackage LTS Haskell
-    snapshot with the specified major version;
-*   `--snapshot lts` specifies, from those with the greatest major version, the
-    latest Stackage LTS Haskell snapshot;
-*   `--snapshot nightly` specifies the most recent Stackage Nightly snapshot;
-    and
-*   `--snapshot global` specifies the snapshot specified by the project-level
-    configuration file in the `global-project` directory in the
-    [Stack root](../topics/stack_root.md#global-project-directory).
 
 ## `--stack-colors` or `--stack-colours` options
 
doc/configure/yaml/non-project.md view
@@ -396,7 +396,7 @@ 
 Command line equivalent (takes precedence):
 [`--snapshot`](../global_flags.md#-snapshot-option) or
-[`--resolver`](../global_flags.md#-resolver-option) option
+[`--resolver`](../global_flags.md#-resolver-option) (deprecated) option
 
 This option specifies which snapshot to use with `stack init`, when none is
 specified at the command line.
doc/configure/yaml/project.md view
@@ -32,33 +32,36 @@ 
 Command line equivalent (takes precedence):
 [`--snapshot`](../global_flags.md#-snapshot-option) or
-[`--resolver`](../global_flags.md#-resolver-option) option
+[`--resolver`](../global_flags.md#-resolver-option) (deprecated) option
 
 The `snapshot` key specifies which snapshot is to be used for this project. A
 snapshot defines a GHC version, the package version of packages available for
-installation, and various settings like build flags. It is also called a
-resolver since a snapshot states how dependencies are resolved. There are
-currently four snapshot types:
+installation, and various settings like build flags. For example:
 
-* LTS Haskell snapshots, e.g. `snapshot: lts-24.24`
-* Stackage Nightly snapshots, e.g. `snapshot: nightly-2025-12-20`
-* No snapshot, just use packages shipped with the compiler. For GHC this looks
-  like `snapshot: ghc-9.10.3`
-* Custom snapshot, via a URL or relative file path. For further information, see
-  the [snapshot location](../../topics/snapshot_location.md) documentation.
+~~~yaml
+snapshot: lts-24-30 # A Stackage LTS Haskell snapshot
+~~~
 
-Each of these snapshots will also determine what constraints are placed on the
-compiler version. See the [compiler-check](non-project.md#compiler-check) option
-for some additional control over compiler version.
+or
 
+~~~yaml
+snapshot: nightly-2026-02-09 # A Stackage Nightly snapshot
+~~~
+
+For further information about how to specify the location of a snapshot, see the
+[snapshot location](../../topics/snapshot_location.md) documentation.
+
+The choice of snapshot determines what constraints are placed on the compiler
+version. For further information about additional control over the compiler
+version, see the [compiler-check](non-project.md#compiler-check) option
+documentation.
+
 A package version specified in a snapshot can be shadowed by an
 [extra-dep](#extra-deps) of the same name or a [project package](#packages) of
 the same name.
 
-## resolver
-
-`resolver` and [`snapshot`](#snapshot) are synonyms. Only one of these keys is
-permitted, not both.
+A snapshot was formerly called a resolver since it states how dependencies are
+resolved.
 
 ## packages
 
@@ -251,8 +254,8 @@ Default: `[]`
 
 Packages which, when present in the snapshot specified in the
-[`snapshot`](#snapshot) or [`resolver`](#resolver) key, should not be included
-in our project. This can be used for a few different purposes, e.g.:
+[`snapshot`](#snapshot) or (deprecated) [`resolver`](#resolver) key, should not
+be included in our project. This can be used for a few different purposes, e.g.:
 
 * Ensure that packages you do not want used in your project cannot be used in a
   `package.yaml` file (e.g., for license reasons)
@@ -418,6 +421,14 @@ 
     Use of this feature may result in builds that are not reproducible, as Stack
     has no control over the contents of the extra package databases.
+
+## resolver
+
+[:octicons-thumbsdown-24: 3.9.3](https://github.com/commercialhaskell/stack/releases/tag/v3.9.3)
+
+`resolver` (deprecated) and [`snapshot`](#snapshot) are synonyms.
+
+One of these keys is required. More than one is prohibited.
 
 ## curator
 
doc/faq.md view
@@ -85,8 +85,7 @@ 
     Stack can only use a system GHC installation if its version is compatible
     with the configuration of the current project, particularly the snapshot
-    specified by the [`snapshot`](configure/yaml/project.md#snapshot) or
-    [`resolver`](configure/yaml/project.md#resolver) key.
+    specified by the [`snapshot`](configure/yaml/project.md#snapshot) key.
 
     GHC installation does not work for all operating systems, so in some cases
     you will need to use `system-ghc` and install GHC yourself.
doc/glossary.md view
@@ -47,7 +47,7 @@ |project package     |A Haskell package that is part of a project and located locally. Distinct from a dependency located locally.|
 |PVP                 |The Haskell [Package Versioning Policy](https://pvp.haskell.org/), which tells developers of libraries how to set their version numbers.|
 |REPL                |An interactive (run-eval-print loop) programming environment.|
-|resolver            |A synonym for snapshot.                                  |
+|resolver            |A synonym for snapshot, now deprecated.                  |
 |`Setup.hs`          |A project-specific file used by Cabal to perform setup tasks.|
 |snapshot            |A snapshot defines a version of GHC (and, implicitly, its boot packages), a set of packages (one version of each), Cabal flags and GHC options.|
 |Stack               |The Stack project or its executable `stack`.|
doc/topics/custom_snapshot.md view
@@ -16,8 +16,7 @@     on Windows) while most do not.
 
 Snapshots may extend any other snapshot that can be specified in a
-[`snapshot`](../configure/yaml/project.md#snapshot) or
-[`resolver`](../configure/yaml/project.md#resolver) key. The packages specified
+[`snapshot`](../configure/yaml/project.md#snapshot) key. The packages specified
 follow the same syntax for dependencies in Stack's project-level configuration
 files. Unlike the `extra-deps` key, however, no support for local directories is
 available in snapshots to ensure reproducibility.
doc/topics/lock_files.md view
@@ -43,7 +43,7 @@ (`stack.yaml`, by default) specifies:
 
 * the parent snapshot (the [`snapshot`](../configure/yaml/project.md#snapshot)
-  or [`resolver`](../configure/yaml/project.md#resolver) key)
+  key)
 * extra-deps
 
 Some of this information can be incomplete. Consider this `stack.yaml` file:
doc/topics/snapshot_location.md view
@@ -4,89 +4,142 @@ 
 [:octicons-tag-24: 2.1.1](https://github.com/commercialhaskell/stack/releases/tag/v2.1.1)
 
-This document describes the specification of a snapshot location (in the
+This document describes the specification of a snapshot location:
+
+* **in YAML configuration files**, in the
   [`snapshot`](../configure/yaml/project.md#snapshot) or
-  [`resolver`](../configure/yaml/project.md#resolver) key).
+  [`resolver`](../configure/yaml/project.md#resolver) (deprecated) key; or
+* **at the command line**, with the
+  [`--snapshot`](../configure/global_flags.md#-snapshot-option) or
+  [`--resolver`](../configure/global_flags.md#-resolver-option) (deprecated)
+  option.
 
+## In YAML configuration files
+
 !!! info
 
     Stack uses the [Pantry](https://hackage.haskell.org/package/pantry) to
     specify the location of snapshots. Pantry is geared towards reproducible
     build plans with cryptographically secure specification of snapshots.
 
-There are essentially four different ways of specifying a snapshot location:
+There are four ways to specify a snapshot location:
 
-1.  Via a compiler version, which is a "compiler only" snapshot. This could be,
-    for example:
+1.  Via a _convenience synonym_, which provides a short form for some common
+    URLs (see further below).
 
-    ~~~yaml
-    snapshot: ghc-9.10.3
-    ~~~
+    These are:
 
-2.  Via a URL pointing to a snapshot configuration file, for example:
+    *   **Stackage LTS Haskell snapshots**, for example:
 
-    ~~~yaml
-    snapshot: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2025/8/17.yaml`
-    ~~~
+        ~~~yaml
+        snapshot: lts-24.30
+        ~~~
 
-3.  Via a local file path pointing to a snapshot configuration file, for
-    example:
+        ??? info "Expansion of `lts-X.Y`"
 
-    ~~~yaml
-    snapshot: my-local-snapshot.yaml
-    ~~~
+            `lts-X.Y` is treated (by default) as:
 
-4.  Via a _convenience synonym_, which provides a short form for some common
-    URLs. These are:
+             ~~~text
+             github:commercialhaskell/stackage-snapshots:lts/X/Y.yaml
+             ~~~
 
-    *   GitHub: `github:user/repo:path` is treated as:
+             and, consequently, expands to:
 
-        ~~~text
-        https://raw.githubusercontent.com/user/repo/master/path
-        ~~~
+             ~~~text
+             https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/X/Y.yaml
+             ~~~
 
-    *   LTS Haskell: `lts-X.Y` is treated (by default) as:
+    *   **Stackage Nightly snapshots**, for example:
 
-        ~~~text
-        github:commercialhaskell/stackage-snapshots:lts/X/Y.yaml
+        ~~~yaml
+        snapshot: nightly-2026-02-09
         ~~~
 
-        and, consequently, expands to:
+        ??? info "Expansion of `nightly-YYYY-MM-DD`"
 
-        ~~~text
-        https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/X/Y.yaml
-        ~~~
+            `nightly-YYYY-MM-DD` is treated (by default) as:
 
-    *   Stackage Nightly: `nightly-YYYY-MM-DD` is treated (by default) as:
+            ~~~text
+            github:commercialhaskell/stackage-snapshots:nightly/YYYY/M/D.yaml
+            ~~~
 
-        ~~~text
-        github:commercialhaskell/stackage-snapshots:nightly/YYYY/M/D.yaml
-        ~~~
+            and, consequently (see below), expands to:
 
-        and, consequently, expands to:
+            ~~~text
+            https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/YYYY/M/D.yaml
+            ~~~
 
+    *   **GitHub**: `github:user/repo:path` is treated as:
+
         ~~~text
-        https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/YYYY/M/D.yaml
+        https://raw.githubusercontent.com/user/repo/master/path
         ~~~
 
-!!! info "Overriding the default snapshot location base"
+    ??? info "Overriding the default snapshot location base"
 
-    By default, LTS Haskell and Stackage Nightly snapshot configurations are
-    retrieved from the `stackage-snapshots` GitHub repository of user
-    `commercialhaskell`. The
-    [snapshot-location-base](../configure/yaml/non-project.md#snapshot-location-base)
-    option allows a custom location to be set.
+        By default, LTS Haskell and Stackage Nightly snapshot configurations are
+        retrieved from the `stackage-snapshots` GitHub repository of user
+        `commercialhaskell`. The
+        [snapshot-location-base](../configure/yaml/non-project.md#snapshot-location-base)
+        option allows a custom location to be set.
 
-For safer, more reproducible builds, you can optionally specify a URL
-together with a cryptographic hash of its content. For example:
+2.  Via a **compiler version**, for example:
 
-~~~yaml
-snapshot:
-  url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/12/0.yaml
-  size: 499143
-  sha256: 781ea577595dff08b9c8794761ba1321020e3e1ec3297fb833fe951cce1bee11
-~~~
+    ~~~yaml
+    snapshot: ghc-9.10.3
+    ~~~
 
-`size` is the number of bytes in the file and `sha256` is the file's SHA256
-hash. If not provided, the information will automatically be generated and
-stored in a [lock file](lock_files.md).
+    This snapshot specifies only a compiler version and, indirectly, its boot
+    packages.
+
+3.  Via a **URL** pointing to a snapshot configuration file, for example:
+
+    ~~~yaml
+    snapshot: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2025/8/17.yaml`
+    ~~~
+
+    For safer, more reproducible builds, you can optionally specify a URL
+    together with a cryptographic hash of its content. For example:
+
+    ~~~yaml
+    snapshot:
+      url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/12/0.yaml
+      size: 499143
+      sha256: 781ea577595dff08b9c8794761ba1321020e3e1ec3297fb833fe951cce1bee11
+    ~~~
+
+    `size` is the number of bytes in the file and `sha256` is the file's SHA256
+    hash. If not provided, the information will automatically be generated and
+    stored in a [lock file](lock_files.md).
+
+4.  Via a relative or absolute **local file path** pointing to a snapshot
+    configuration file, for example:
+
+    ~~~yaml
+    snapshot: my-local-snapshot.yaml
+    ~~~
+
+    This can also be specified as:
+
+    ~~~yaml
+    snapshot:
+      filepath: my-local-snapshot.yaml
+    ~~~
+
+    This allows local file paths and covenience synonyms to be disambiguated.
+
+## At the command line
+
+As in YAML configuration files, a snapshot location can be specified via a
+convenience synoynm, a compiler version, a URL, or a local file path. In
+addition, at the command line only:
+
+*   `--snapshot lts-<major_version>` specifies the latest Stackage LTS Haskell
+    snapshot with the specified major version;
+*   `--snapshot lts` specifies, from those with the greatest major version, the
+    latest Stackage LTS Haskell snapshot;
+*   `--snapshot nightly` specifies the most recent Stackage Nightly snapshot;
+    and
+*   `--snapshot global` specifies the snapshot specified by the project-level
+    configuration file in the `global-project` directory in the
+    [Stack root](../topics/stack_root.md#global-project-directory).
doc/topics/stack_yaml_vs_cabal_package_file.md view
@@ -43,7 +43,7 @@ 
 Stack defines a new concept called a _project_. A project has:
 
-* A snapshot _resolver_ (more on this later)
+* A snapshot (more on this later)
 * Extra dependencies on top of the snapshot
 * Optionally, one or more local Cabal packages
 * Flag and GHC options configurations
@@ -55,7 +55,7 @@ in the Cabal file. To explain, let us take a quick detour to talk about
 snapshots and how Stack resolves dependencies.
 
-## Snapshots and resolvers
+## Snapshots
 
 Stack follows a rule that says, for any project, there is precisely one version
 of each package available. Obviously, for many packages there are _many_
@@ -65,16 +65,15 @@ The most common means by which this set of packages is defined is via a
 snapshot provided by Stackage. For example, if you go to the page
 <https://www.stackage.org/lts-24.24>, you will see a list of 3,415 packages at
-specific version numbers. When you then specify `snapshot: lts-24.24` or,
-alternatively, `resolver: lts-24.24`, you are telling Stack to use those package
-versions in resolving dependencies down to specific versions of packages.
+specific version numbers. When you then specify `snapshot: lts-24.24` you are
+telling Stack to use those package versions in resolving dependencies down to
+specific versions of packages.
 
 Sometimes a snapshot does not have all of the packages that you want. Or you
 want a different version of a package. Or you want to work on a local
 modification of a package. In all of those cases, you can add more configuration
 data to your `stack.yaml` file to override the values it received from your
-[`snapshot`](../configure/yaml/project.md#snapshot) or
-[`resolver`](../configure/yaml/project.md#resolver) setting. At the end of the
+[`snapshot`](../configure/yaml/project.md#snapshot) setting. At the end of the
 day, each of your projects will end up with some way of resolving a package name
 into a specific version of that package.
 
src/Stack/Config/Docker.hs view
@@ -40,7 +40,7 @@   displayException (SnapshotNotSupportedException mproject mASnapshot) =
     concat
       [ "Error: [S-8575]\n"
-      , "Snapshot resolver not supported for Docker images:\n    "
+      , "Snapshot not supported for Docker images:\n    "
       , case (mproject, mASnapshot) of
           (Nothing, Nothing) -> "no snapshot specified"
           (_, Just aSnapshot) ->
src/Stack/ConfigCmd.hs view
@@ -128,7 +128,8 @@         switchLine configFilePath cmdKey primaryCmdKey newValue' [] yamlLines
     _ -> do
       -- In practice, this warning should not be encountered because with
-      -- snapshot and resolver present, Stack will not parse the YAML file.
+      -- snapshot and resolver (deprecated) present, Stack will not parse the
+      -- YAML file.
       prettyWarnL
         [ pretty configFilePath
         , flow "contains more than one possible existing configuration and, \
src/Stack/Docker.hs view
@@ -392,7 +392,13 @@           pure Map.empty
     Left e -> throwIO e
  where
-  missingImagePrefixes = ["Error: No such image", "Error: No such object:"]
+  missingImagePrefixes =
+    [ -- Docker >= 29.0.0. See:
+      -- https://github.com/docker/cli/commit/9ba1314d3acc5bd59417049c26275f33e3d54021
+      "error: no such object:"
+    , "Error: No such image"
+    , "Error: No such object:"
+    ]
 
 -- | Pull latest version of configured Docker image from registry.
 pull :: HasConfig env => RIO env ()
src/Stack/Init.hs view
@@ -434,7 +434,7 @@     ]
   snapshotHelp = commentHelp
     [ "A 'specific' Stackage snapshot or a compiler version."
-    , "A snapshot resolver dictates the compiler version and the set of packages"
+    , "A snapshot dictates the compiler version and the set of packages"
     , "to be used for project dependencies. For example:"
     , ""
     , "snapshot: lts-24.24"
src/Stack/Options/ConfigSetParser.hs view
@@ -48,7 +48,7 @@                     <> OA.help "E.g. \"nightly\" or \"lts-24.24\"" ))
               ( OA.progDesc
                   "Change the snapshot of the current project, using the \
-                  \resolver key." ))
+                  \(deprecated) resolver key." ))
       , OA.command (T.unpack configMonoidSystemGHCName)
           ( OA.info
               (   ConfigCmdSetSystemGhc
src/Stack/Types/Build/Exception.hs view
@@ -439,7 +439,7 @@                         SnapshotAtCommandLine -> fillSep
                           [ "the"
                           , style Shell "--snapshot" <> ","
-                          , "or"
+                          , "or (deprecated)"
                           , style Shell "--resolver" <> ","
                           , "option"
                           ]
src/Stack/Types/WantedCompilerSetter.hs view
@@ -16,7 +16,7 @@   = CompilerAtCommandLine
     -- ^ At the command line with --compiler option.
   | SnapshotAtCommandLine
-    -- ^ At the command line with --snapshot (or --resolver) option.
+    -- ^ At the command line with --snapshot or (deprecated) --resolver option.
   | YamlConfiguration (Maybe (Path Abs File))
     -- ^ Via a configuration file.
   deriving Show
stack.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.2 name:               stack-version:            3.9.1+version:            3.9.3 license:            BSD-3-Clause license-file:       LICENSE maintainer:
tests/unit/Stack/Config/DockerSpec.hs view
@@ -14,7 +14,7 @@ spec :: Spec
 spec = do
   describe "addDefaultTag" $ do
-    it "succeeds fails no snapshot resolver" $ addDefaultTag "foo/bar" Nothing Nothing `shouldBe` Nothing
+    it "succeeds fails no snapshot" $ addDefaultTag "foo/bar" Nothing Nothing `shouldBe` Nothing
     it "succeeds on LTS" $
       addDefaultTag
         "foo/bar"