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. A Cabal file specifies properties in the form of field/value pairs. |
| 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 specified directly 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, now deprecated. |
Setup.hs |
A project-specific file used by Cabal to perform setup tasks. |
| snapshot | A snapshot defines a version of GHC (and, implicitly, its boot packages), a set of packages (one version of each), Cabal flags and GHC options. |
| Stack | The 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. The YAML syntax allows for key/value pairs. |