Tools
Projects
Libraries
Publications
Links
|
About me
I'm a developer at Microsoft Research Cambridge, in
the
Programming Principles and Tools group.
Most of the time, I'm working on Haskell-related research and development, often
using the Glasgow Haskell
Compiler. I often try to do things in Haskell that you can do
in other languages, and hopefully along the way find that Haskell is
better. If it turns out not to be better, then we extend Haskell
until it is.
Here are some open-source tools I (co-)maintain:
- The Glasgow Haskell Compiler (GHC)
- I'm one of the principle developers of GHC, the World's Leading
Haskell Compiler (well, we think so).
- Haddock
- A documentation tool for Haskell libraries.
- Happy
- A tool for generating parsers in Haskell, much like Yacc for
C.
- Alex
- A tool for generating lexical analysers for Haskell (can you see
a pattern emerging? :-), much like Lex/Flex for C.
Projects I'm currently involved in, or just interested in:
- Multi-processor GHC, STM, parallelism
- The plan is to make
Concurrent Haskell programs run in parallel on multi-processor
hardware. Since version 6.6, GHC is now capable of transparently
making use of multiple processors when running multithreaded
Haskell programs, which is something that very few languages
with lightweight threads can do.
Currently (2006-2007) I've been working on extending the GC to
work in parallel, with Roshan James who
interned here at Microsoft in the summer of 2006.
Ongoing activities in this area are focussed around
experimenting with parallelism in Haskell and finding out where
the bottlenecks are. A high priority is to get some tools to
visualise what's going on in a parallel program.
- Haskell
Prime
- This is the working title for the next revision of the
Haskell language. I'm on the committee, and in particular I'll be
working on specifying concurrency.
- A Visual Studio plugin to support Haskell
development
- The Visual
Studio plugin for Haskell is maturing, thanks mainly to the
work of Krasimir Angelov who has continued to work on Visual
Haskell since his internship here at MSR in 2005.
If you're interested in contributing to the project,
please get in touch. The code is now fully open and released
under a BSD license.
- The Haskell Cabal
- This project aims to produce a re-usable framework for building
and distributing Haskell library code. It makes the task of
providing your own libraries, and using libraries that others have
provided, much easier.
- Debugging Haskell
- GHC will have some debugging support in its next version (6.8),
thanks to Pepe Iborra who worked on this as a Google Summer of
Code project in 2006. Pepe is still working on the project, and
we plan to take this even further in 2007.
I was on the program committee for ICFP 2006, IFL 2006, IFL 2005,
IFL 2004, and the Haskell Workshop in 2002.
Here are a few Haskell libraries I'm currently designing/developing,
with varying degrees of activity.
- A System.Process library
- The System.Process library is now part of GHC 6.4.
- A replacement System.Time library
- Ashley Yakely has taken over the reins on this one. See this
message for the latest version.
- A replacement System.IO library
- Yet another library in need of an overhaul. The major focus
here is on including internationalization (i18n) in the I/O
interface, and at the same time allowing for fast I/O to and from
arrays. Many of the ideas are due to others on the libraries@haskell.org
mailing list. Haddock docs available from the link above, a
prototype implementation is in progress (nothing complete enough yet).
- A Binary library
- This is a library for binary serialisation of Haskell data. It
is a modified version of the library we use in GHC for
reading/writing interface files. Its primary focus is speed, and
it sacrifices some flexibility in order to achieve it. There is an
open question about what kind of binary serialisation support
should be in the hierarchical libraries.
Search the libraries
mailing list for the latest discussions on this library.
Publications
My publications can be found on a separate page.
|
|