Skip to content

Glossary

The following terms are used in Stack's documentation.

Term Meaning
Cabal The Haskell Common Architecture for Building Applications and Libraries, provided by the Cabal package. Also referred to as Cabal (the library) to distinguish it from Cabal (the tool).
Cabal file A file containing a package description used by Cabal, named <package_name>.cabal.
Cabal (the tool) The Haskell tool used for building provided by the cabal-install package.
CI Continuous integration.
CMake A system for managing build processes.
config.yaml A global and non-project-specific configuration file used by Stack.
dependency A Haskell package other than a project package and on which a project package depends (directly or indirectly), located locally or elsewhere.
Docker A platform for developing, shipping, and running applications. It can package and run an application in a loosely isolated environment called a container.
Emacs GNU Emacs, an extensible, customisable text editor.
extra-deps Extra dependencies (one version of each) that add to, or shadow, those specified in a snapshot.
FreeBSD A Unix-like operating system.
GCC The GNU Compiler Collection or its executable gcc.
GHC The Glasgow Haskell Compiler.
GHC boot package A package that comes with GHC, is included in GHC's global package database, and is not included in a Stackage snapshot. See the output of command stack exec -- ghc-pkg list --global.
GHC wired-in package A GHC boot package that cannot be shaddowed with different versions of the same package. Also referred to as 'magic'.
GHCi GHC's interactive environment.
GHCJS A Haskell to JavaScript compiler.
GHCup An installer for Haskell.
Git A distributed version control system.
GPG The GNU Privacy Guard or GnuPG, software that allows you to encrypt or sign your data and communications.
Hackage The Haskell Package Repository.
Haddock The document generation tool for Haskell libraries.
'Haskell' extension The 'Haskell' extension for VS Code.
HLS Haskell Language Server, an implementation of the Language Server Protocol for Haskell.
Homebrew A package manager for macOS or Linux, or its executable brew.
Hoogle A Haskell API search engine.
Hpack A format for Haskell packages or the executable hpack that produces a Cabal file from package.yaml.
Linux A family of operating systems based on the Linux kernel.
macOS The primary operating system for Apple's Mac computers. Previously known as Mac OS X or OS X.
Make A build automation tool.
Markdown A plain text formatting syntax or software used to convert files in that format to HTML.
MSYS2 The MSYS2 software distribution and building platform for Windows.
Nix A purely functional package manager, available for Linux and macOS.
package A Haskell package is an organised collection of Haskell code and related files. It is described by a Cabal file or a package.yaml file, which is itself part of the package.
package.yaml A file that describes a package in the Hpack format.
Pantry A library for content-addressable Haskell package management, provided by the pantry package. A dependency of Stack.
PATH The PATH environment variable, specifying a list of directories searched for executable files.
project A Stack project is a local directory that contains a project-level configuration file (stack.yaml, by default). A project may relate to more than one project package.
project package A Haskell package that is part of a project and located locally. Distinct from a dependency located locally.
PVP The Haskell Package Versioning Policy, which tells developers of libraries how to set their version numbers.
REPL An interactive (run-eval-print loop) programming environment.
resolver A synonym for snapshot.
Setup.hs A project-specific file used by Cabal to perform setup tasks.
snapshot A snapshot defines a GHC version, a set of packages (one version of each), and build flags or other settings.
Stack The Haskell Tool Stack project or its executable stack.
stack.yaml A project-level configuration file used by Stack, which may also contain non-project-specific options.
Stackage A distribution of compatible Haskell packages.
Stack root A directory in which Stack stores important files. See stack path --stack-root. On Windows, or if Stack is configured to use the XDG Base Directory Specification, Stack also stores important files outside of the Stack root.
Stack work directory A directory within a local project or package directory in which Stack stores files created during the build process. Named .stack-work, by default.
Unix-like operating systems Linux, FreeBSD and macOS.
VS Code Visual Studio Code, a source code editor.
Windows A group of operating systems developed by Microsoft.
WSL Windows Subsystem for Linux. Provides a Linux environment on Windows.
XDG Base Directory Specification A specification of directories relative to which files should be located.
YAML A human-friendly data serialization language.