stack v1.9.0.1 Release Notes

Release Date: 2018-09-23 // over 5 years ago
  • ๐Ÿš€ First release candidate for v1.9

    ๐Ÿ”„ Changes since v1.7.1

    ๐Ÿš€ Release notes:

    • ๐Ÿง Statically linked Linux bindists are back again, thanks to @nh2.
      ๐Ÿง Please try the stack-1.9.0.1-linux-x86_64-static.tar.gz distribution if using Linux , since it will be the default installed version once v1.9.1 is released.
    • ๐Ÿš€ 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:

    • โฌ‡๏ธ 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.
    • 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
      ๐Ÿ‘€ with more information on how to discover templates. See:
      #4039
    • ๐Ÿ— 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.
    • Mustache templating is not applied to large files (over 50kb) to
      ๐ŸŽ avoid performance degredation. See:
      #4133.
    • ๐Ÿ“ฆ stack upload signs the package by default, as documented. --no-signature
      turns the signing off.
      #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.

    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
      0๏ธโƒฃ 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.
    • โž• 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.
    • 0๏ธโƒฃ The default retry strategy has changed to exponential backoff.
      This should help with
      #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:. #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
    • ๐Ÿ— 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
      0๏ธโƒฃ 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.
    • ~/.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
    • ๐Ÿ“ฆ 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.
    • ๐Ÿ— 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.
    • --no-nix was not respected under NixOS
    • ๐Ÿ›  Fix a regression which might use a lot of RAM. See
      #4027.
    • Order of commandline arguments does not matter anymore.
      ๐Ÿ‘€ See #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.
    • โœ… 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.
    • 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.
    • ๐Ÿ–จ [#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).
    • ๐Ÿ›  Fix invalid "While building Setup.hs" when Cabal calls fail. See:
      #3934
    • ๐Ÿ“ฆ stack upload signs the package by default, as documented. --no-signature
      turns the signing off.
      #3739