Re: CMUCL versus SBCL: big differences?



>> SBCL uses native, preemptively scheduled threads. This has some nice
>> consequences, such as allowing you to use blocking system calls
>> without having other threads block, and using multiple processors.
>> It's also very difficult to make reliable -- I'd be very surprised if
>> they were able to deal with simultaneous execution of multiple DEFCLASS.

> Well, I think this is dealt with by having a lock around the critical
> sections of PCL, such that (effectively) only one thread executes the
> interesting parts of DEFCLASS at once.

Sorry, my example was badly chosen. How do you deal with funcalling a
generic function at the same time as you change the class hierarchy?
Taking a lock on every generic dispatch would be prohibitively expensive.

I'm not claiming here that SBCL does any of the above incorrectly;
what I'm saying is that a Lisp image is a large, complex, shared data
structure, and that implementing preemptively scheduled Lisp threads
is difficult if not impossible. My claim is therefore that cooperative
threads are in principle preferable for Lisp.

Oh, and before you read too much into the above: CMUCL's threads are
very nice in principle, but they are not ready for prime time yet. (I
volunteered to complete the implementation once, but then other things
came up.)

Juliusz
.