Clementson's Blog

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

December 2004
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
Nov  Jan

CL Implementations

Friday, December 3, 2004

On c.l.l. Rainer Joswig posted a good summary of the different CL implementations that are available, grouping them under different categories. I've taken his summary, added links and made some edits/additions:

  1. Lisps that have extensive development environments, large libraries, lots of extensions to ANSI CL. These tend to provide rich options for delivery. Compilation is native. Fully configured, the Lisps can become large (compared to other lisps and these lisps with the more basic options installed). Lots of bells and whistles. Can generate code with good performance. Commercial.

    Allegro CL, LispWorks

  2. Lisps that don't have that good performance, but small footprint. They either use byte-codes or compile to (often not that efficient) compact code.

    OpenMCL, MCL, CLISP, Corman CL, ABCL

  3. Special purpose Lisps for embedding and/or delivery. Means you can develop with them, but it might be useful to have another Lisp for development.

    CLICC (dead), WCL (dead), ECL, ThinLisp, CLISP, Allegro CL

  4. Native compiling Lisps with often excellent performance

    Allegro CL, LispWorks, CMUCL, SBCL

  5. Lisps for the Windows platform with special support

    Corman CL, Golden Common Lisp, Allegro CL for Windows, LispWorks for Windows

  6. Lisps for the Mac OS X platform with special support

    MCL, OpenMCL, LispWorks for Macintosh

  7. Cross-platform Lisps

    CLISP, GCL, CMUCL, SBCL, Allegro CL, LispWorks, ECL

  8. Lisps for multiprocessor machines

    Scieneer Common Lisp, OpenMCL, Corman CL (?)

  9. 64bit Lisps

    Scieneer Common Lisp, Allegro CL, CLISP (soon), SBCL (soon), ECL

  10. Lisps on top of a Lisp operating system

    Xerox Common Lisp, Symbolics Common Lisp, TI Common Lisp, Movitz
Update-2004-12-03: Pascal Bourguignon pointed out to me that "Recent work on clisp allows it to be compiled as a shared library that can be linked/embedded with any other program. This is particularly nice because the clisp FFI has both call out and call in." He also reminded me that Movitz is a Lisp on top of a Lisp OS. I've added both of Pascal's changes into the summary above.

Update-2004-12-06: Juan Jose Garcia Ripoll, the maintainer of ECL pointed out a few areas where ECL should have been included in the summary above: I've added Jose's changes into the summary above.

Duane Rettig (Franz, Inc.) also sent me some comments: I've added Duane's changes into the summary above.

Update-2004-12-07: Rainer Joswig (the author of the c.l.l. post that inspired this weblog post) sent me an email with some additional comments:

A few minor points:

5) '*special* support' means that this Lisp does support special technologies on the Windows platform (DDE, native GUI support, whatever). I'm not sure what ECL does provide as a 'special support' other than that it runs there. Allegro CL has extensive Windows support (including IDE), same for Corman Lisp, Golden CL and LispWorks.

6) see 5. I'm not sure what Allegro CL provides other than that it runs on Mac OS X. It has no Mac-like UI nor can it be readily used to develop such applications. MCL has an extensive interface to Carbon libraries and based on it a native IDE. OpenMCL interfaces to Cocoa, supports native threading with dual-cpu support, ... LispWorks has an extensive native IDE (using Apple's Cocoa-libraries).

8) A Lisp that effectively can utilize a Multi-processor machine. For example by multiple threads on different CPUs or by special communication libraries for connecting several Lisps. Scieneer Common Lisp, OpenMCL and Corman CL allow multiple Lisp threads to run on different processors from one running Lisp application. I don't know any feature of SBCL, ACL, LispWorks that is beyond 'it just runs on the machine'. Just running on the multi-processor machine and not able to use it effectively is not the problem. ;-)

10) Movitz still lacks most parts of a Lisp operating system. It is more like a Lisp operating system development toolkit, I would say.

I've modified the summary above with the exception of removing Movitz from #10. Even though it may lack most parts of a Lisp operating system, I feel that it still fits into this category.

emacs Copyright © 2004 by Bill Clementson