Skip to content

Releases: commercialhaskell/stack

v3.1.1

28 Jul 18:22
Compare
Choose a tag to compare

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

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)

07 Jul 15:03
Compare
Choose a tag to compare
Pre-release

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

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.

v2.15.7

12 May 18:33
Compare
Choose a tag to compare

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

Thanks to all our contributors for this release:

  • JΓΆrg Thalheim
  • Mike Pilgrem

rc/v2.15.6.3 (release candidate)

04 May 23:04
Compare
Choose a tag to compare
Pre-release

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

27 Apr 18:40
Compare
Choose a tag to compare
rc/v2.15.6.1 Pre-release
Pre-release

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

v2.15.5

28 Mar 23:06
Compare
Choose a tag to compare

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)

21 Mar 11:35
Compare
Choose a tag to compare
Pre-release

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.

v2.15.3

07 Mar 01:13
Compare
Choose a tag to compare

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

Thanks to all our contributors for this release:

  • Mike Pilgrem
  • Siyuan Chen

v2.15.1

09 Feb 22:15
Compare
Choose a tag to compare

See https://haskellstack.org/ for installation and upgrade instructions.

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.
  • 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.
  • 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.
  • 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 local 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 local 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.

Thanks to all our contributors for this release:

  • Bryan Richter
  • Dash Lu
  • Jason Shipman
  • Marco Zocca
  • Markus Schirp
  • Mike Pilgrem
  • Olivier Benz
  • Phil de Joux
  • theophilebatoz

rc/v2.15.0.1 (release candidate)

27 Jan 19:19
Compare
Choose a tag to compare
Pre-release

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.
  • 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.
  • 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.
  • 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 with flags to generate Haddock documentation, and an archive file, suitable for upload to Hackage.
  • 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 local packages.

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.