[Haskell-cafe] ANN: ghc-mod-

Daniel Gröber dxld at darkboxed.org
Mon Aug 17 09:39:39 UTC 2015

I'm pleased to announce the long awaited release of ghc-mod!

What is ghc-mod?

ghc-mod is both a backend program for enhancing editors and other kinds of
development environments with support for Haskell and a library for
abstracting the black magic incantations required to use the GHC API in
various environments, especially Cabal projects. The library is used by
ambitious projects like HaRe[1] and mote[2].

After a period of declining activity, development has been picking up pace
again since I have taken over as maintainer. Most changes during versions
5.0.0 through consisted only of fixes and internal cleanup work, but
this release brings with it vastly improved Cabal support and support for
GHC 7.10.

ghc-mod now has intimate knowledge of the components in a Cabal project,
this allows it to make much more informed decisions about which options to
pass to GHC for any given module than previously possible.

The largest complication for this work was the fact that ghc-mod must
consult Cabal's internal configuration information (the file that `cabal
configure` generates) which is bound to one specific version of Cabal (the
library) while surviving users upgrading their cabal-install executables,
which will link `cabal` (the executable) against a different version of
Cabal (the library) thus breaking ghc-mod's ability to read the
configuration information.

Out of the frustration with this horrible state of affairs cabal-helper was
born (https://github.com/DanielG/cabal-helper) which now isolates ghc-mod
against any and all Cabal version related problems.

Long story short this all is a major step forward in terms of how well
ghc-mod's suggestions reflect what `cabal build` would report, and should
also allow ghc-mod to work even in more complicated Cabal setups.

How to contribute

Right now ghc-mod has only one core developer and only a handful of
occasional drive-by contributors even though it's a non-insignificant part
of the first-time Haskell experience, we regularly receive bug reports and
support requests from people only just starting Haskell hacking.

Unfortunately in the last 7 months this experience was not a very good one
because we are sorely lacking active contributors willing to actually fix
bugs. I think this is a very disappointing state of affairs since we're
essentially driving people away to other languages for no good reason.

The way forward

Right now I'm working full time on ghc-mod as part of a summer internship at
IIJ Innovation Institute in Japan and will continue to do so until the end
of September. I would like to invite anyone who is interested in improving
ghc-mod to come and talk to me in #ghc-mod on Freenode (I'm "dxld" there) or
E-Mail me directly.

During my internship I will be working on splitting ghc-mod into a frontend
and backend package to make integration with external tools like HaRe and
mote easier, rewriting the ghc-mod frontend tools to be based on a
server-client architecture and if time allows adding proper interactive code
execution to ghc-mod so it can be used as a ghci replacement in frontends.

In the meantime my supervisor Kazu Yamamoto will also be hacking on ghc-mod,
mostly improving the Emacs frontend and possibly merging it into

The ghc-mod code base can be quite a beast for anyone looking at if for the
first time, I've been trying to improve the situation since I joined the
project but after a while you just loose this new pair of eyes and become
blind to all the things that could be improved. While I'm still at IIJ-II I
can offer anyone who wants to work on ghc-mod my support in getting started
with the codebase.

Getting ghc-mod

Github: https://github.com/kazu-yamamoto/ghc-mod
Hackage: http://hackage.haskell.org/package/ghc-mod


  - Emacs (native):
  - Vim:
  - Atom:

Known issues

The new and improved Cabal support required heavy use of caching and there
seem to still be some cases of cache invalidation of the module graph not
working properly. For now these can be fixed by deleting

ghc-mod's `case`, `sig` and `refine` commands do not work properly with GHC
7.10 yet: https://github.com/kazu-yamamoto/ghc-mod/issues/438

If you do notice any other problems please report them:

[1]: https://github.com/alanz/HaRe
[2]: https://github.com/imeckler/mote
[3]: https://github.com/kazu-yamamoto/ghc-mod/issues/454#issuecomment-127603458
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150817/53d965b6/attachment.sig>

More information about the Haskell-Cafe mailing list