Clementson's Blog

Bits and pieces (mostly Lisp-related) that I collect from the ether.

May 2006
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Apr  Jun

CL-MUPROC - Erlang-style Concurrent Programming in CL

Monday, May 15, 2006

At the ECLM meeting in Hamburg on April 30th, Klaus Harbo gave his presentation on "cl-muproc: Erlang-inspired multiprocessing in Common Lisp" (I mentioned cl-muproc in an earlier post). He indicated at the meeting that he would soon be making his code available under a BSD license. Well, he announced the release yesterday:

"I am pleased to announce that CL-MUPROC is now available at http://www.common-lisp.net/project/cl-muproc. As you will see, the reference documentation is far from complete; only the core functionality is documented at this time.

Please do feel free to try it out and offer any feed-back, comments, suggestions, or whatever (patches, even! ;-)."
This is a first release, so there is still work to do on CL-MUPROC; however, it does provide the basis for Erlang-style concurrent processing in CL and, now that the source is available, other developers can contribute code. There are a number of things that CL-MUPROC definitely does need:
  1. Lightweight processes: Currently CL-MUPROC depends on the underlying Lisp's process/thread support. Erlang can scale to thousands of processes, something that is definitely not doable in the current implementation of CL-MUPROC.
  2. Distributed processes: The current implementation CL-MUPROC does not provide support for distributed processes (although this is something that Klaus had been planning for eventually).
  3. Support for other CL Implementations: At the moment, LispWorks is the only CL implementation that is supported. However, Klaus has isolated most of the LispWorks-specific code into a single source member (muproc-compat.lisp) and he has tried to use ACL-COMPAT for some things in order to further reduce the implementation-specific code. Some individuals have indicated that they are interested in creating ports to other CL-implementations; however, the source code has only been available for one day so we might have to wait a few more days for some ports to appear! ;-)
If you don't have a LispWorks license, you can still download the free LispWorks Personal Edition to play around with CL-MUPROC. I did, and it worked fine!

So, now you can try out (in Lisp!) some of the classic Erlang concurrent programming examples like the "ping-pong" one in the Erlang Tutorial:

CL-MUPROC

If you want a little background to get started, you might try reading the following:

emacs Copyright © 2006 by Bill Clementson