Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 8 additions & 9 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -351,23 +351,22 @@ compatibility with a range of versions of GHC that a library package (such as
Stack aims to depend on well-known packages. The specific versions on which it
depends at any time are specified by `package.yaml` and `stack.yaml`. It does
not aim to be compatible with more than one version of the `Cabal` package at
any time. At the time of writing (August 2025) the package versions are
primarily ones in Stackage snapshot LTS Haskell 24.18 (for GHC 9.10.3), the
any time. At the time of writing (December 2025) the package versions are
primarily ones in Stackage snapshot LTS Haskell 24.24 (for GHC 9.10.3), the
latest version of `Cabal` released on Hackage (`Cabal-3.16.0.0`) and
`pantry-0.11.0`.
`pantry-0.11.2`.

A Stack executable makes use of Cabal (the library) through a small 'Setup'
executable that it compiles from Haskell source code. The executable compiles
that code with a dependency on the version of Cabal that ships with the
specified GHC compiler. Each release of Stack will normally aim to support all
versions of GHC and the Cabal package in Stackage LTS Haskell snapshots
published within seven years of the release. For example, snapshot LTS Haskell
12.0, published on 9 July 2018, was the first LTS Haskell snapshot to
provide GHC 8.4.3 which comes with `base-4.11.1.0` and `Cabal-2.2.0.1`.
Normally, until, at least, 9 July 2025, Stack releases would aim to support the
immediate predecessor, GHC 8.2.2 and `base-4.10.1.0`, `Cabal-2.0.1.1` and
Haddock 2.18.1. However, Stack 3.1.1 dropped support for versions of Cabal
before 2.2. `Cabal-2.2.0.0` was released with GHC 8.4.1 on 8 March 2018.
13.0, published on 23 December 2018, was the first LTS Haskell snapshot to
provide GHC 8.6.3 which comes with `base-4.12.0.0` and `Cabal-2.4.0.1`.
Normally, until, at least, 23 December 2025, Stack releases would aim to support
the immediate predecessor, GHC 8.4.4 and `base-4.11.1.0`, `Cabal-2.2.0.1` and
Haddock 2.20.0.

When a version of the Stack executable actually ceases to support a version of
GHC and `Cabal`, that should be recorded in Stack's
Expand Down
4 changes: 2 additions & 2 deletions cabal.config
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ constraints:
, aeson-warning-parser ==0.1.1
, alex ==3.5.4.0
, annotated-wl-pprint ==0.7.0
, ansi-terminal ==1.1.3
, ansi-terminal ==1.1.4
, ansi-terminal-types ==1.1.3
, appar ==0.1.8
, array ==0.5.8.0
Expand Down Expand Up @@ -75,7 +75,7 @@ constraints:
, echo ==0.1.4
, ed25519 ==0.0.5.0
, exceptions ==0.10.9
, extra ==1.8
, extra ==1.8.1
, fast-logger ==3.2.6
, file-embed ==0.0.16.0
, file-io ==0.1.5
Expand Down
2 changes: 1 addition & 1 deletion cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
-- specified by the snapshot specifed in Stack's project-level YAML
-- configuration file (`stack.yaml`). The relevant version of GHC can be
-- confirmed by reviewing the snapshot on Stackage. For example, at:
-- https://www.stackage.org/lts-24.18/cabal.config.
-- https://www.stackage.org/lts-24.24/cabal.config.
--
with-compiler: ghc-9.10.3
import: cabal.config
Expand Down
10 changes: 5 additions & 5 deletions doc/commands/list_command.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,17 @@ Error: [S-4926]
tasty, retry, path, pretty, pasty, xattr, alloy, para, pappy and
alure.

stack --snapshot lts-24.18 list base unix Win32 acme-missiles pantry
stack --snapshot lts-24.24 list base unix Win32 acme-missiles pantry
Error: [S-4926]
* Package does not appear in snapshot (directly or indirectly): acme-missiles.

stack --snapshot lts-24.18 list base unix Win32 pantry
base-4.20.1.0
unix-2.8.6.0
stack --snapshot lts-24.24 list base unix Win32 pantry
base-4.20.2.0
unix-2.8.7.0
Win32-2.14.1.0
pantry-0.10.1

stack --snapshot lts-24.18 list
stack --snapshot lts-24.24 list
AC-Angle-1.0
ALUT-2.4.0.3
...
Expand Down
8 changes: 4 additions & 4 deletions doc/commands/script_command.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ A snapshot must be specified on the command line, using the `--snapshot` option.
For example:

~~~text
stack script --snapshot lts-24.18 MyScript.hs
stack script --snapshot lts-24.24 MyScript.hs
~~~

An immutable extra-dep can be added to the snapshot on the command line with the
Expand Down Expand Up @@ -211,7 +211,7 @@ main = do
can be compiled and run, with arguments, with:

~~~text
stack --snapshot lts-24.18 script --package acme-missiles --compile MyScript.hs -- "Don't panic!" "Duck and cover!"
stack --snapshot lts-24.24 script --package acme-missiles --compile MyScript.hs -- "Don't panic!" "Duck and cover!"
~~~

`acme-missiles-0.3` (the most recent version in the package index) will be used.
Expand All @@ -231,7 +231,7 @@ snapshot as an extra-dep. The `stack script` command is specified using Stack's

~~~haskell
{- stack script
-- snapshot lts-24.18
-- snapshot lts-24.24
-- extra-dep acme-missiles-0.2
-- package acme-missiles
-}
Expand Down Expand Up @@ -333,7 +333,7 @@ A Haskell source file `MyScript.hs`, as follows:

~~~haskell
{- stack script
--snapshot lts-24.18
--snapshot lts-24.24
-}

{-# LANGUAGE OverloadedStrings #-}
Expand Down
2 changes: 1 addition & 1 deletion doc/configure/yaml/non-project.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ can be used to override the compiler (and, implicitly, its boot packages) for a
Stackage snapshot, like this:

~~~yaml
snapshot: lts-24.18
snapshot: lts-24.24
compiler: ghc-9.10.2
compiler-check: match-exact
~~~
Expand Down
4 changes: 2 additions & 2 deletions doc/configure/yaml/project.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ installation, and various settings like build flags. It is also called a
resolver since a snapshot states how dependencies are resolved. There are
currently four snapshot types:

* LTS Haskell snapshots, e.g. `snapshot: lts-24.18`
* Stackage Nightly snapshots, e.g. `snapshot: nightly-2025-08-17`
* LTS Haskell snapshots, e.g. `snapshot: lts-24.24`
* Stackage Nightly snapshots, e.g. `snapshot: nightly-2025-12-20`
* No snapshot, just use packages shipped with the compiler. For GHC this looks
like `snapshot: ghc-9.10.3`
* Custom snapshot, via a URL or relative file path. For further information, see
Expand Down
2 changes: 1 addition & 1 deletion doc/topics/Stack_and_VS_Code.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ VS Code with the 'Haskell' extension can be configured in a number of ways:

Each time that a snapshot is used that references a different version of
GHC, then GHCup must be used to install it (if GHCup has not already
installed that version). For example, to use `snapshot: lts-24.18`
installed that version). For example, to use `snapshot: lts-24.24`
(GHC 9.10.3), the command `ghcup install ghc 9.10.3` must have been used
to install GHC 9.10.3. That may be a minor inconvenience for some people,
as one the primary benefits of Stack over other tools for building
Expand Down
24 changes: 12 additions & 12 deletions doc/topics/custom_snapshot.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ available in snapshots to ensure reproducibility.
~~~yaml
# Inherits a specific GHC version and, implicitly, its boot packages and
# specific versions of a set of other packages:
snapshot: lts-24.18
snapshot: lts-24.24
# Overwrites the version of GHC (and, implicitly, its boot packages) specified
# in the snapshot (optional):
compiler: ghc-9.10.1
compiler: ghc-9.10.2

# Additional packages, follows extra-deps syntax
packages:
Expand Down Expand Up @@ -76,36 +76,36 @@ custom snapshot, due to Stack sharing snapshot packages whenever possible.

### Overriding the compiler

The following snapshot specification will be identical to `lts-24.18`, but
The following snapshot specification will be identical to `lts-24.24`, but
instead use `ghc-9.10.2` and its boot packages instead of `ghc-9.10.3` and its
boot packages:

~~~yaml
snapshot: lts-24.18 # GHC 9.10.3
snapshot: lts-24.24 # GHC 9.10.3
compiler: ghc-9.10.2
~~~

### Dropping packages

The following snapshot specification will be identical to `lts-24.18`, but
The following snapshot specification will be identical to `lts-24.24`, but
without the `text` package in our snapshot. Removing this package will cause all
the packages that depend on `text` to be unbuildable, but they will still be
present in the snapshot.

~~~yaml
snapshot: lts-24.18
snapshot: lts-24.24
drop-packages:
- text
~~~

### Hiding packages

The following snapshot specification will be identical to `lts-24.18`, but the
The following snapshot specification will be identical to `lts-24.24`, but the
`text` package will be hidden when registering. This will affect, for example,
the import parser in the script command.

~~~yaml
snapshot: lts-24.18
snapshot: lts-24.24
hidden:
- text
~~~
Expand All @@ -116,11 +116,11 @@ In order to specify GHC options for a package, you use the same syntax as the
[ghc-options](../configure/yaml/non-project.md#ghc-options) key for build
configuration.

The following snapshot specification will be identical to `lts-24.18`, but
The following snapshot specification will be identical to `lts-24.24`, but
provides `-O1` as a ghc-option for `text`:

~~~yaml
snapshot: lts-24.18
snapshot: lts-24.24
packages:
- text-2.1.2
ghc-options:
Expand All @@ -139,11 +139,11 @@ packages in the `packages` list, rather than all packages in the snapshot.

In order to specify Cabal flags for a package, you use the same syntax as the
[flags](../configure/yaml/project.md#flags) key for build configuration. The
following snapshot specification will be identical to `lts-24.18`, but
following snapshot specification will be identical to `lts-24.24`, but
it enables the `developer` Cabal flag:

~~~yaml
snapshot: lts-24.18
snapshot: lts-24.24
packages:
- text-2.1.2
flags:
Expand Down
4 changes: 2 additions & 2 deletions doc/topics/haskell_and_c_code.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ executables:

The project's `stack.yaml` file only needs to identify a snapshot:
~~~yaml
snapshot: lts-24.18 # GHC 9.10.3
snapshot: lts-24.24 # GHC 9.10.3
~~~

This example project can be built with Stack in the normal way (`stack build`),
Expand Down Expand Up @@ -220,7 +220,7 @@ The `include-dirs` key will cause the specified directory (again,

The project's `stack.yaml` file only needs to identify a snapshot:
~~~yaml
snapshot: lts-24.18 # GHC 9.10.3
snapshot: lts-24.24 # GHC 9.10.3
~~~

This example project can be built with Stack in the normal way (`stack build`),
Expand Down
24 changes: 12 additions & 12 deletions doc/topics/scripts.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ An example will be easiest to understand. Consider the Haskell source file

~~~haskell
#!/usr/bin/env stack
-- stack script --snapshot lts-24.18 --package turtle
-- stack script --snapshot lts-24.24 --package turtle
{-# LANGUAGE OverloadedStrings #-}
import Turtle (echo)
main = echo "Hello World!"
Expand Down Expand Up @@ -78,11 +78,11 @@ able to reuse everything already built).

The second line of the source code is the Stack interpreter options comment. In
this example, it specifies the [`stack script`](../commands/script_command.md)
command with the options of a LTS Haskell 24.18 snapshot
(`--snapshot lts-24.18`) and ensuring the
command with the options of a LTS Haskell 24.24 snapshot
(`--snapshot lts-24.24`) and ensuring the
[`turtle`](https://hackage.haskell.org/package/turtle) package is available
(`--package turtle`). The version of the package will be that in the specified
snapshot (`lts-24.18` provides `turtle-1.6.2`).
snapshot (`lts-24.24` provides `turtle-1.6.2`).

## Arguments and interpreter options and arguments

Expand Down Expand Up @@ -117,7 +117,7 @@ For example, the command `stack MyScript.hs arg1 arg2` with `MyScript.hs`:
~~~haskell
#!/usr/bin/env stack
{- stack script
--snapshot lts-24.18
--snapshot lts-24.24
--
+RTS -s -RTS
-}
Expand All @@ -133,7 +133,7 @@ main = do
is equivalent to the following command at the command line:

~~~text
stack script --snapshot lts-24.18 -- MyScript.hs arg1 arg2 +RTS -s -RTS
stack script --snapshot lts-24.24 -- MyScript.hs arg1 arg2 +RTS -s -RTS
~~~

where `+RTS -s -RTS` are some of GHC's
Expand Down Expand Up @@ -164,7 +164,7 @@ options, or by providing a comma or space separated list. For example:
~~~haskell
#!/usr/bin/env stack
{- stack script
--snapshot lts-24.18
--snapshot lts-24.24
--package turtle
--package "stm async"
--package http-client,http-conduit
Expand All @@ -180,7 +180,7 @@ each. For example:
~~~haskell
#!/usr/bin/env stack
{- stack script
--snapshot lts-24.18
--snapshot lts-24.24
--extra-dep acme-missiles-0.3@rev:0
--extra-dep "{git: [email protected]:yesodweb/wai, commit: '2f8a8e1b771829f4a8a77c0111352ce45a14c30f', subdirs: [auto-update, wai]}"
-}
Expand Down Expand Up @@ -227,7 +227,7 @@ which makes use of the joke package

~~~haskell
{- stack script
--snapshot lts-24.18
--snapshot lts-24.24
--package acme-missiles
-}
import Acme.Missiles (launchMissiles)
Expand All @@ -238,7 +238,7 @@ main = launchMissiles

The command `stack --script-no-run-compile Script.hs` then behaves as if the
command
`stack script --snapshot lts-24.18 --package acme-missiles --no-run --compile -- Script.hs`
`stack script --snapshot lts-24.24 --package acme-missiles --no-run --compile -- Script.hs`
had been given. `Script.hs` is compiled (without optimisation) and the resulting
executable is not run: no missiles are launched in the process!

Expand Down Expand Up @@ -280,7 +280,7 @@ those curious, here is an example with
{- stack
runghc
--install-ghc
--snapshot lts-24.18
--snapshot lts-24.24
--package base
--package turtle
--
Expand All @@ -304,7 +304,7 @@ it. Here is an example:
{- stack
exec ghci
--install-ghc
--snapshot lts-24.18
--snapshot lts-24.24
--package turtle
-}
~~~
6 changes: 3 additions & 3 deletions doc/topics/stack_yaml_vs_cabal_package_file.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,9 @@ requires that you have chosen a specific version for each package available.

The most common means by which this set of packages is defined is via a
snapshot provided by Stackage. For example, if you go to the page
<https://www.stackage.org/lts-24.18>, you will see a list of 3,407 packages at
specific version numbers. When you then specify `snapshot: lts-24.18` or,
alternatively, `resolver: lts-24.18`, you are telling Stack to use those package
<https://www.stackage.org/lts-24.24>, you will see a list of 3,415 packages at
specific version numbers. When you then specify `snapshot: lts-24.24` or,
alternatively, `resolver: lts-24.24`, you are telling Stack to use those package
versions in resolving dependencies down to specific versions of packages.

Sometimes a snapshot does not have all of the packages that you want. Or you
Expand Down
2 changes: 1 addition & 1 deletion doc/tutorial/building_your_project.md
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ With that out of the way, let us dig a little bit more into these snapshots. We
mentioned the LTS snapshots, and you can get information about it at
[https://www.stackage.org/lts](https://www.stackage.org/lts), including:

* The appropriate value (`lts-24.18`, as is currently the latest LTS)
* The appropriate value (`lts-24.24`, as is currently the latest LTS)
* The GHC version used
* A full list of all packages versions available in this snapshot
* The ability to perform a Hoogle search on the packages in this snapshot
Expand Down
2 changes: 1 addition & 1 deletion doc/tutorial/hello_world_example.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ creating manually a Stack project-level configuration file named `stack.yaml` in
`my-project`, with the contents:

~~~yaml
snapshot: lts-24.18
snapshot: lts-24.24
~~~

By adding those two files (one to describe a package, the other to configure the
Expand Down
2 changes: 1 addition & 1 deletion doc/tutorial/project_configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ The key [`snapshot`](../configure/yaml/project.md#snapshot) is a
project-specific configuration option. Its value tells Stack *how* to build your
package: which version of GHC (and, implicitly, its boot packages) to use; which
versions of other package dependencies to use, and so on. Our value here says to
use [LTS Haskell 24.18](https://www.stackage.org/lts-24.18), which implies
use [LTS Haskell 24.24](https://www.stackage.org/lts-24.24), which implies
GHC 9.10.3 (which is why `stack build` installs that version of GHC if it is not
already available to Stack). There are a number of values you can use for
`snapshot`, which we will cover later.
Expand Down
2 changes: 1 addition & 1 deletion etc/scripts/build-stack-installer.hs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{- stack script
--snapshot lts-24.18
--snapshot lts-24.24
--package nsis
-}
{-# LANGUAGE OverloadedStrings #-}
Expand Down
Loading