Project Idea 2: Hummingbird - A parallel Common Lisp

Posted by urban Sat, 02 Apr 2005 12:29:29 GMT

This project is actually two projects at once:

  1. The implementation of a Common Lisp compiler. Something that I wanted to do for quite a while.
  2. Adding support for parallel programming to Common Lisp. I’m currently reading Concepts, Techniques, and Models where I will hopefully learn much about parallel programming paradigms.

You may ask why I would want to write yet another Common Lisp implementation. It’s of course true that there are enough implementations already out there and it remains to be seen if I will be able to actually complete the thing. After all Common Lisp is a huge language. But I consider myself a hacker (even though I don’t qualify as a geek :)) and I really want to write a compiler myself.

And that’s where the second goal comes into play. Why not use the virtual machine of a already parallel language? This would probably mean that there is already support for parallelism in the VM. I don’t know how much easier that will make the implementation but it’s a nice excuse :)

The first step is already made. I’ve found a name for it: Hummingbird. It doesn’t have any deeper meaning it’s just a name that I like. The next step will be to finish reading ‘Concepts, Techniques, and Models’ to have a good grounding in parallel programming. Then Lisp in Small Pieces is waiting in one of my shelves to be read. Meanwhile I will look at the VMs of parallel languages out there (like Mozart and Alice, which is based on SEAM) and watch what other Parallel Lispers are doing (like Dirk Gerrits Erlisp project).

Even though my plan might sound nice to you, it has several flaws:

  1. The book ‘Concepts, Techniques, and Models’ is a 1000 page computer science text book. Far from light reading. I can’t even estimate how long it will take me to finish reading it.
  2. And the ‘Lisp in Small Pieces’ isn’t light reading, too. At least not for me, who doesn’t have that much experience is writing compilers (i.e. I haven’t written one yet!).
  3. I’m really bad at actually finishing stuff, especially programming projects.

So why do I write a blog entry about it then? Well, firstly because writing things down helps me to make them more clear and secondly because you might like this idea and start implementing it. Even though I’d like to implement it myself I’d be happy to just play with the result, too.

Tags , ,

Comments are disabled