{"slug": "ann-ghcup-0-2-2-0-release", "title": "[ANN] GHCup 0.2.2.0 release", "summary": "The GHCup 0.2.2.0 release, sponsored by IOG, introduces a major rewrite featuring a new \"3rdparty\" channel that provides access to non-core tools like Agda, ormolu, and hlint. The update also adds support for Dhall metadata, revisions for distributor updates, and a redesigned TUI with a two-pane view. Users can upgrade by running `ghcup upgrade` or find installation instructions at haskell.org/ghcup.", "body_md": "I’m very pleased to announce the release of 0.2.2.0\nMotivation\nThe work on this release was sponsored by IOG, since their need for shipping alternative compilers coincided with the Installer DSL feature request that had been lingering on the tracker for years.\nWhat I ended up implementing is not quite a DSL, since I wanted to keep the complexity low, both in terms of implementation and in terms of “packaging effort” for end users.\nThis release is a major rewrite and took around 2 months. While I’ve been investing a lot of time in tests and correctness… there might be things that slipped through.\nHow to update\nIf you haven’t installed yet, follow the instructions at https://www.haskell.org/ghcup/\nOtherwise simply run ghcup upgrade\n.\nFor end users\nNew tools\nFor regular end users, I think the most exciting change is the new “3rdparty” channel, which gives access to non-core tools and compilers such as Agda, ormou, hlint, etc.\nAfter upgrading, add it via:\nghcup config add-release-channel 3rdparty\nThen run ghcup tui\nto get an overview of available tools.\nNew online documentation\nThe documentation uses a new readthedocs format (similar to stack) and is now structured much better: https://www.haskell.org/ghcup/guide/\nFor upstream projects/packagers\nUpstream projects and end users can now in theory ship arbitrary tools through ghcup. Refer to the Adding new tools documentation.\nA lot of time has also been invested in supporting Dhall metadata. GHCup can now:\n- consume metadata in the form of resolved Dhall text files (no imports, requires\n.dhall\nextension) - consume metadata from Dhall binary format (requires\n.dhallb\nextension) - convert an existing yaml metadata to dhall format (see\nghcup generate metadata-to-dhall\n) - dump the Dhall “schema” (the\nGHCupInfo\ntype) viaghcup generate dhall-schema\nThe other major feature is revisions. These would allow e.g. the HLS project to add new GHC binaries to an existing release (in case that doesn’t require source code changes) without having to release a new hackage version etc. It also allows any other non source code fixes to bindists\nRefer to the Packaging Guide for more information.\nFull ChangeLog\nNew feature\n- implement “installer DSL” (custom tool installation) wrt #141\n- run\nghcup config add-release-channel 3rdparty\nto get access to tools likehlint\n,ormolu\n,agda\netc. - refer to the Packaging documentation for more details\n- this caused heavy changes to the internal ghcup layout and database\n- run\n- major design change in the TUI (two-pane view)\n- use left/right arrow keys or tab to switch between the tool and version list\n- implement revisions\n- these are “distributor” updates (e.g. fixes to bindists or the metadata) without requiring a proper upstream release\n- refer to the documentation for more details\n- pave the way for OpenBSD support wrt #182\n- we still lack GHC bindists\n- add experimental support for Dhall metadata wrt #60\n- dump the Dhall schema via\nghcup generate dhall-schema\n- dump the Dhall schema via\n- add\nghcup config reset\nsubcommand by Vladislav Sabanov - add experimental healthcheck command\nghcup check tool ghc <ver>\n- this may only give useful information on newly installed versions since the database needs to be populated\nImprovements and bug fixes\n- Introduce\n--verbosity=<LEVEL>\n(0-2) option--verbose\nstill exists and is equivalent to--verbosity=1\n- ghcup won’t spam the installed file list on\n--verbose\n/--verbosity=1\nanymore\n- Store log files under\nXDG_STATE_HOME\ninstead ofXDG_CACHE_HOME\nwhen following XDG style by Eisuke Kawashima - Make\n--tool\nand--show-criteria\na ‘many’ parser, fixes #1235 - Ignore local cache when dlUri has a\nfile:\nscheme, fixes #1312 - don’t show update warnings twice (if it’s the same old warning)\n- Fix\nghcup whereis\non windows by only using forward slashes in the output - lots of other things we forgot\nBreaking changes\nghcup install <ghc-ver>\nis gone, usecabal install ghc <ghc-ver>\nghcup install-cabal <cabal-ver>\nis gone, usecabal install cabal <cabal-ver>\nghcup compile hls --isolate=/tmp/foo\ninstalls binaries into/tmp/foo/bin\ninstead of/tmp/foo\nghcup list\nmay show-rX\nsuffix on versions when there’s a revision update- if you rely on version equality checks in a script and don’t want to deal with parsing those, you may consider\nghcup list --show-revisions=none\n- if you rely on version equality checks in a script and don’t want to deal with parsing those, you may consider\n~/.ghcup/bin/\nis now all symlinks (except forghcup\nbinary itself) and the link targets may have different shape\nContributors\n- with design discussions and guidance\n- The stable-haskell team at IOG\n- @angerman\n- with testing\n- with reviews\n- with code contributions\n- Ai-Ya-Ya\n- Andreas Klebinger\n- Andreas Schacker\n- Divam\n- Eisuke Kawashima\n- Jonathan Knowles\n- Suhani370\n- Tom Ellis\n- Tom Smeding\n- Vladislav Sabanov", "url": "https://wpnews.pro/news/ann-ghcup-0-2-2-0-release", "canonical_source": "https://discourse.haskell.org/t/ann-ghcup-0-2-2-0-release/14144#post_5", "published_at": "2026-05-22 05:05:47+00:00", "updated_at": "2026-05-22 08:50:47.106289+00:00", "lang": "en", "topics": ["developer-tools", "open-source"], "entities": ["GHCup", "IOG", "Agda", "ormou", "hlint", "Haskell"], "alternates": {"html": "https://wpnews.pro/news/ann-ghcup-0-2-2-0-release", "markdown": "https://wpnews.pro/news/ann-ghcup-0-2-2-0-release.md", "text": "https://wpnews.pro/news/ann-ghcup-0-2-2-0-release.txt", "jsonld": "https://wpnews.pro/news/ann-ghcup-0-2-2-0-release.jsonld"}}