Release notes:
- The change in major version from 3.x to 4.1 marks the introduction of Stack's support for GHC's Backpack module system for cross-package use.
Changes since v3.11.1:
Major changes:
- Stack now supports GHC's Backpack module system for cross-package use. (Private Backpack, where signatures and implementations are in the same package, was already supported.) When a package uses
signaturesandmixinsto depend on an abstract interface provided by another package, Stack automatically creates the extra instantiation build steps that Cabal requires. This includes support for explicit renaming, multiple instantiations of the same indefinite package, transitive signature chains, sub-library signatures, and indefinite package from Hackage or snapshots. See the Backpack topic for details.
Behavior changes:
- When Stack's Nix integration is enabled and a
shell-fileis not specified, Stack setsLANG=C.UTF-8(rather thanen_US.UTF-8, which may not be available if Stack has been built from source). - With Nix integration, Stack uses
nix-instantiatebeforenix-shell, enabling Stack to catch and report when the Nix expression cannot be evaluated by Nix. Thenix-instantiate-optionsoption is added, accordingly. - Stack's
buildcommand now warns if--force-dirtyis specified but no local packages will be built.
Other enhancements:
- Add option
--query ITEM, which can be specified multiple times, to Stack'sls dependencies textcommand (the defaultls dependenciescommand), to cause Stack to filter out from the results all packages other than those queried. Like the existing--filter ITEMoption, an item is either a package name or$localsfor all project packages.
Bug fixes:
- If snapshot locations are cyclic, Stack reports an error rather than going round in circles.