GHCup vs mise
GHCup
haskell.orgmise
mise.jdx.devSide by side
| Figure | GHCup | mise |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Web | Yes | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| Self-hosted | Yes | — |
| Plans published | 1 | 1 |
| Spec score · Runtime Version Managers | 8.6 (#1) | 7.7 (#12) |
| Spec score · Development Environment Managers | 8.5 (#7) | 7.6 (#31) |
| Purpose | GHCup is the main installer for the general purpose language Haskell. | mise manages development tools, environment variables, and project tasks through a project configuration file. |
Plans
In their own words
GHCup
GHCup is a free, open-source installer and version manager for the Haskell toolchain. It installs and manages GHC, cabal-install, Haskell Language Server (HLS), and Stack versions; Stack can also be configured to use GHC versions managed by GHCup. Listed functionality includes a terminal user interface and GHC cross-compilation. Installation guidance covers terminal commands for Linux, macOS, FreeBSD, and WSL2, alongside PowerShell instructions for Windows. The project describes Windows support as being in an early stage and uses a shim wrapper because Windows does not properly support symbolic links. On macOS, GHCup may prompt for command line tools; Windows setup includes msys2. The installer should be run as a non-root user on Unix-like systems and a non-admin user on Windows. GHCup relies on precompiled binaries, so compatibility can depend on the distribution and libraries such as libtinfo. WSL1 and macOS versions earlier than 10.13 are unsupported. Some ARM binaries are experimental: Stack and HLS on Linux ARM, and HLS bindists on macOS aarch64. Configuration can be stored in ~/.ghcup/config.yaml, with command-line options taking precedence.
mise
mise is a free, MIT-licensed open-source tool for managing development runtimes, command-line tools, environment variables, and project tasks from a configuration file. It runs on Linux, macOS, and Windows and lists a registry of more than 1,000 tools. Projects can pin tool versions and share those choices with teams and continuous-integration systems. Configuration can load variables from dotenv files, secrets, and shell commands. Tasks can define build, test, lint, and other commands with dependencies and arguments, with task graphs, affected-build handling, and remote caching listed. The bootstrap command can declare packages, dotfiles, repositories, and services for machine setup. Shell hooks cover bash, zsh, fish, nushell, PowerShell, and other shells. Documentation describes GitHub Actions, GitLab CI, and Xcode Cloud use. Community plugins are listed for Emacs, IntelliJ, Neovim, and VSCode, with support depending on editor, extension, and language. Security controls include trust settings, safe and paranoid modes, checksums, signatures, provenance, and artifact attestations.