Releases: commercialhaskell/stack
v3.3.1
See https://haskellstack.org/ for installation and upgrade instructions.
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'sbuild
command, which take precedence over the existingno-run-tests
andno-run-benchmarks
configuration options, respectively. - In configuration files, the
notify-if-no-run-tests
andnotify-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 namedstack
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 andstack bench --no-run-benchmarks --dry-run
no longer reports that Stack would benchmark project packages with benchmarks.StackSetupShim
compiles withCabal >= 3.14.0.0
.
Thanks to all our contributors for this release:
- Andrew Nguyen
- Luka Leer
- Mike Pilgrem
- Olivier Benz
rc/v3.3.0.1 (release candidate)
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'sbuild
command, which take precedence over the existingno-run-tests
andno-run-benchmarks
configuration options, respectively. - In configuration files, the
notify-if-no-run-tests
andnotify-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 namedstack
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 andstack bench --no-run-benchmarks --dry-run
no longer reports that Stack would benchmark project packages with benchmarks.StackSetupShim
compiles withCabal >= 3.14.0.0
.
v3.1.1
See https://haskellstack.org/ for installation and upgrade instructions.
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 initialisesstack.yaml
with asnapshot
key rather than aresolver
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, fromghci
andrepl
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 filestack.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 stillMINGW64
on 64-bit Windows andMINGW32
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 thestack init
command, as if it had been specified at the command line. - Add flags
--haddock-executables
,--haddock-tests
and--haddock-benchmarks
to Stack'sbuild
command (including thehaddock
synonym forbuild --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'supload
command, which takes precedence over the existingsave-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.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 tostack --help
). - In YAML configuration files, the
file-watch-hook
key is introduced to allow--file-watch
post-processing to be customised with a executable orsh
shell script. - Add flag
--[no-]allow-newer
to Stack'sbuild
command, which takes precedence over the existingallow-newer
configuration option.
Bug fixes:
- The
config set snapshot
andconfig set resolver
commands now respect the presence of a synoymous key. - The
config set
commands support existing keys only in the formkey: value
on a single line. The commands now recognise that a linekey:
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.
Thanks to all our contributors for this release:
- Michael Pilosov
- Mike Pilgrem
- Olivier Benz
- Phil de Joux
- theophilebatoz
rc/v3.1.0.1 (release candidate)
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 initialisesstack.yaml
with asnapshot
key rather than aresolver
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, fromghci
andrepl
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 filestack.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 stillMINGW64
on 64-bit Windows andMINGW32
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 thestack init
command, as if it had been specified at the command line. - Add flags
--haddock-executables
,--haddock-tests
and--haddock-benchmarks
to Stack'sbuild
command (including thehaddock
synonym forbuild --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'supload
command, which takes precedence over the existingsave-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.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 tostack --help
). - In YAML configuration files, the
file-watch-hook
key is introduced to allow--file-watch
post-processing to be customised with a executable orsh
shell script.
Bug fixes:
- The
config set snapshot
andconfig set resolver
commands now respect the presence of a synoymous key. - The
config set
commands support existing keys only in the formkey: value
on a single line. The commands now recognise that a linekey:
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.
v2.15.7
See https://haskellstack.org/ for installation and upgrade instructions.
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 withrepl
andstack-initial-build-steps
, no longer uses Cabal'sreplHook
to applyinitialBuildSteps
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.
Thanks to all our contributors for this release:
- JΓΆrg Thalheim
- Mike Pilgrem
rc/v2.15.6.3 (release candidate)
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.6.1:
Bug fixes:
- 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.
rc/v2.15.6.1
v2.15.6.1 (release candidate)
Release notes:
- This release fixes potential bugs.
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.
Behaviour changes:
- Stack's
StackSetupShim
executable, when called withrepl
andstack-initial-build-steps
, no longer uses Cabal'sreplHook
to applyinitialBuildSteps
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.
v2.15.5
See https://haskellstack.org/ for installation and upgrade instructions.
Release notes:
- This release fixes potential bugs.
Changes since v2.15.3:
Behaviour 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
.
Thanks to all our contributors for this release:
- Mike Pilgrem
rc/v2.15.4.1 (release candidate)
Release notes:
- This release fixes potential bugs.
Changes since v2.15.3:
Behaviour changes:
- Following the handover of the Stackage project to the Haskell Foundation, the default value of the
urls
key islatest-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
See https://haskellstack.org/ for installation and upgrade instructions.
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
andrunhaskell
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 tostack build
.
Thanks to all our contributors for this release:
- Mike Pilgrem
- Siyuan Chen