v1.3.0
See https://haskellstack.org for installation and upgrade instructions.
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 binaries. See
#2534.
Note that upgrading without a package manager has gotten easier
with new binary upgrade support instack 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 binary 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 runstack 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 astack setup
line or use the--install-ghc
flag.
#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 -
Stack is now capable of doing binary upgrades instead of always
recompiling a new version from source. Runningstack upgrade
will
now default to downloading a binary version of Stack from the most
recent release, if one is available. Seestack upgrade --help
for
more options.
#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. - 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- Add support for
system-ghc
andinstall-ghc
fields tostack 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 GHCconfigure
options accordingly.
#2542- Upload to Hackage with HTTP digest instead of HTTP basic.
- Make
stack list-dependencies
understand all of thestack 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 - Add the
dump-logs
config option and--dump-logs
command line
option to get full build output on the
console. #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 fields
which causes it to modify the global user configuration (~/.stack/config.yaml
)
instead of the project configuration.
#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 stack dot
andstack list-dependencies
now take targets and flags.
#1919- Deprecate
stack setup --stack-setup-yaml
for--setup-info-yaml
based
on discussion in #2647. - The
--main-is
flag for GHCI now implies the TARGET, fixing
#1845. stack ghci
no longer takes all build options, as many weren't useful
#2199--no-time-in-log
option, to make verbose logs more diffable
#2727--color
option added to override auto-detection of ANSI support
#2725- Missing extra-deps are now warned about, adding a degree of typo detection
#1521 - No longer warns about missing build-tools if they are on the PATH.
#2235 - Replace enclosed-exceptions with safe-exceptions.
#2768 - The install location for GHC and other programs can now be configured with the
local-programs-path
option inconfig.yaml
.
#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 - 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 runningnix-collect-garbage
Bug fixes:
- Fixed a gnarly bug where programs and package tarballs sometimes have
corrupted downloads. See
#2657. - Add proper support for non-ASCII characters in file paths for the
sdist
command.
See #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 - Docker: ensure that interrupted extraction process does not cause corrupt file
when downloading a Docker-compatible Stack executable
#2568 - Fixed running
stack hpc report
on package targets.
#2664 - Fix a long-standing performance regression where stack would parse the .dump-hi
files of the library components of local packages twice.
#2658 - Fixed a regression in "stack ghci --no-load", where it would prompt for a main
module to load. #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 - 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 instack.yaml
's dockerrun-args
. stack setup --reinstall
now behaves as expected.
#2554
Thanks to all our contributors for this release:
- Alexis Williams
- devlinzed
- Echo Nolan
- Emanuel Borsboom
- Eric Thomas
- Felix Yan
- Francesco Mazzoli
- Geoffrey Noel
- Gábor Lipták
- Harendra Kumar
- ickc
- Keshav Kini
- Luke Murphy
- Marcin Tolysz
- Michael Sloan
- Michael Snoyman
- mrkkrp
- osbugs
- Paolo G. Giarrusso
- Reuben D'Netto
- Robbin C
- Ruud van Asseldonk
- Sam Doshi
- Simon Jakobi
- Tomasz Lewowski
- U-CIQDEV
- bazerman
- whatsthepoint
- Yves Parès (Ywen)