Compiler Plugins For GHC: Week Six
Are we six weeks into it already? It’s flown by. What did I get up to this week?
Core HTML Output I bring you the “mystery” project that I promised you last week: a HTML pretty printer for GHCs Core language! Features of my implementation are:
-
Syntax highlighting
-
Hyperlinked variables: click one to jump to its definition site if it refers to a local name, or to a Hoogle search for it otherwise
-
Mark interesting parts of the Core output with a thick border by clicking on a binder
-
Hover over variable usage sites to highlight their binding sites
-
Handy index phases run by the compiler, click a phase name to jump to the Core output by that phase
I’ve put some sample output up here for you to try out, but beware: it’s a 500kB document!
For the inspiration for this project I owe a debt of gratitude to Neil Mitchell’s YHC.Core.HTML. If you are interested in other human readable Core output formats, check out Don Stewart’s ghc-core package, which gives you a syntax-highlighted command line pager for Core.
Spit And Polish I spent the vast majority of last week tidying up loose ends, hunting and squashing bugs and preening my sample plugin code. This reflects the fact that the torrent of new GHC features I’ve announced here are being bedded down in preparation for finishing the project off and getting them merged into HEAD.
Conclusion More of the same this week: a focus on tidying up and getting some solid documentation done. I want to get something releasable ready well before the deadline which I can then enhance with discretionary improvements without fear of leaving the Summer of Code period without having something ready for real-world use.
Since this activity is all rather tedious to the casual Summer of Code follower, this will probably be my last weekly blog post. However, I’ll still try and write about any major developments in the project: see you then!