
I'm pleased to announce the long awaited release of ghc-mod 5.3.0.0! 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 5.2.1.2 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 haskell-mode[3]. 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 Frontends: - Emacs (native): https://github.com/kazu-yamamoto/ghc-mod https://github.com/iquiw/company-ghc - Vim: https://github.com/eagletmt/ghcmod-vim https://github.com/eagletmt/neco-ghc - Atom: https://github.com/atom-haskell/ide-haskell https://github.com/andyfriesen/Helium 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 dist/setup-config.ghc-mod.* 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: https://github.com/kazu-yamamoto/ghc-mod/issues ---- [1]: https://github.com/alanz/HaRe [2]: https://github.com/imeckler/mote [3]: https://github.com/kazu-yamamoto/ghc-mod/issues/454#issuecomment-127603458 https://github.com/kazu-yamamoto/ghc-mod/issues/544
participants (1)
-
Daniel Gröber