Clementson's Blog

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

April 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
Mar  May

The Best Open Source CL Implementation

Monday, April 3, 2006

A couple of years ago, I outlined some criteria for what I thought was needed in an open source Lisp implementation:

At the time, I indicated that I thought that PLT Scheme was the Lisp implemenation that best met those criteria. Today, PLT Scheme is still a very nice open source Lisp implementation, but it is a Scheme, not a CL. For someone who wants to use a CL implementation, there have been a number of different alternatives; but, until recently, no real "best" choice. The most widely-used open source CL implementations today are CLISP, CMUCL, OpenMCL, and SBCL. CLISP runs on a lot of platforms (in fact, until recently, it was the only open source CL available for Win32) but only produces (relatively slow) byte-compiled objects. CMUCL produces very fast code but has not been ported to all popular platforms and has a smaller developer community. OpenMCL is popular on the Mac; however, it also has not been ported to other popular platforms. SBCL started off as a branch of CMUCL (so it produces very fast code), has been ported to many different platforms, and appears to be the implemenation that comes closest to being "The Best Open Source CL Implementation" (using the criteria I outlined above).

Here's how SBCL meets the set of criteria I specified in my earlier post: The SBCL maintainers do releases on a monthly basis and there have been some nice advances made in the past 6 months (the following is taken from the release news): Congratulations to the SBCL maintainers for producing such a good open source CL implementation!

Update-2006-04-06: Christophe Rhodes (one of the SBCL maintainers) sent me a (fair) critique of my post titled "Oh, the irony" (reproduced with permission):
"Just as I complained bitterly about your PLT Scheme-as-best-Lisp a couple of years ago, I think it's only fair that I complain about your SBCL-as-best-Lisp now. Some people are never happy.

The issues I have with your post basically boil down to putting too rosy a face on things, or obscuring with sleight-of-hand (though not deliberately!), and since I complain when this is done to the detriment of SBCL's perception, I think it's only fair to do likewise when the perception might go the other way. But before I start, thanks for the positive review :-)
  • SBCL is probably the CL implementation with the most number of platform/processor implementations

    I strongly doubt this. Even ignoring Allegro (if you add the word "free" in there) clisp and gcl both run on 11 architectures, as opposed to SBCL's paltry 6; ABCL runs anywhere a JVM does; and ECL is portable to anything where GMP and the Boehm-Weiser GC run.
  • Easy to Port/Embed: SBCL has been ported to many platforms and the development team has always shown support for helping with other ports.

    Somewhat similarly, I wouldn't describe SBCL as easy to port. Not too difficult, perhaps, but not easy: it's in the man-weeks range. Compare to ECL's ease of portability and while I think your statement is accurate, it's perhaps a little unfair, particularly when you consider that it's practically impossible to embed SBCL.
  • Good Documentation: Full documentation is available (online or downloadable) in HTML, TeXInfo, and PDF formats.

    Whatever else you call the online documentation, please don't call it "full"... it is very much in progress, and there's plenty of stuff that isn't documented properly.
  • Capable of Generating Stand-alone EXEs: Since release 0.9.10, SBCL has been able to generate stand-alone executables (but not on all platforms).

    Whether people are happy with 30MB stand-alone executables is another matter...
Anyway, that's enough nitpicking. Thanks again!"

emacs Copyright © 2006 by Bill Clementson