Hacking on GHC Has Never Been Easier!
At ZuriHac 2019 Matthew Pickering talked about tools for working on GHC. There’s an associated blog post which is also well worth reading.
I wanted to focus on a small part of his presentation, which is about loading
GHC into GHCi and
using ghcid
to automatically reload
GHC on changes. This has been possible for almost a year now, as described in
this blog post by Michael Sloan. It
has since been improved to be even easier to use!
Putting this together with Alp Mestanogullari’s
ghc.nix
, it’s now possible to
provision a GHC development environment from scratch with just a few commands,
assuming that you have nix-shell
, cabal-install
, and ghcid
installed.
Here they are:
$ git clone --recursive https://gitlab.haskell.org/ghc/ghc/
$ cd ghc
$ git clone https://github.com/alpmestan/ghc.nix
$ cabal update
$ nix-shell ghc.nix/ --run './boot && ./configure && ghcid'
This will take a while the first time, but ghcid
will cache generated
artifacts under ./hadrian_ghci
so even quitting and reloading will be
significantly faster.
Congratulations, you are now a GHC developer!