Contributing to nhc98


The maintainers of nhc98 would very much welcome the contributions of other developers towards this compiler. Maybe you are a PhD student looking for a platform to do some experiments on a cool new compilation technique for functional languages, but you don't want to write a whole compiler from scratch. Or maybe you are an application writer who has built up some useful support libraries that you would like to see others using too. Maybe you just like hacking!

Our To Do list is really a wishlist, and contains some ideas for projects you might like to take on. In addition:

Libraries. A couple of the standard Haskell'98 libraries remain only partially implemented in nhc98. If you have expertise in an appropriate area (e.g. random number generation), we'd love it if you could supply a good implementation. If you have ideas for other useful libraries that you can contribute to the whole Haskell community, we'd like to see your code too.

Runtime system. A contributor (Julian Seward, Hugs/ghc integration person) suggested some small changes to the the runtime system (in the bytecode interpretive loop) which yielded a 25% speedup for most programs. Has anyone else got any good ideas?

Native code generation. Nhc98 achieves portability by compiling to bytecode. However, we sacrifice some speed advantages by doing this. It shouldn't be too difficult to add a native code generator for some particular machine. We'd be really interested if you came up with a general scheme for native code generation, parameterised on the particular machine description, as this would enable support for new machines to be added very easily.

Compiler. Although the compiler is currently not documented very well, we are gradually building up an implementation map which should help you get started. In fact, the internals of nhc98 are very straightforward, following textbook guidelines at most points.


The latest updates to these pages are available on the WWW from http://www.haskell.org/nhc98/

This page last modified: 25 April 2001
York Functional Programming Group