Subject: Re: Reasons to choose CLISP over other free implementations
From: rpw3@rpw3.org (Rob Warnock)
Date: Sat, 01 Dec 2007 06:21:07 -0600
Newsgroups: comp.lang.lisp
Message-ID: <88KdncgxDacuzMzanZ2dnUVZ_rqlnZ2d@speakeasy.net>
Maciej Katafiasz  <mathrick@gmail.com> wrote:
+---------------
| Rob Warnock:
| > 1. My first coding in CL[1] was for a database-backed web app,
| 
| Did something eat your footnotes, or am I misunderstanding the notation?
+---------------

*Yikes!* Yes, "something" (my absentmindedness) ate my footnotes.
Let me try that portion again:

1. My first coding in CL[1] was for a database-backed web app,
   and I initially used both CLISP & CMUCL, for quite a while,
   but then settled on CMUCL because the compiled code for my
   app was just *so* much faster, and also because the green
   threads in CMUCL[2] were a very good match to my app. All
   the initial development was done on FreeBSD 2.2.6, but was
   later moved to FreeBSD 4.3, 4.6, 4.10, and now 6.2 with no
   problems whatsoever.[3] Furthermore, the porting of the app
   to Linux 2.4.21-40.EL (RH) was nearly as seamless, as was moving
   to Linux 2.6.7 and then 2.6.20, and it's still running on all
   those platforms. [Well, except FBSD 2.2.26 -- that machine died.]
   So I clearly like CMUCL, on x86 platforms at least.
...


-Rob

[1] I had been doing serious coding in Scheme for ~10 years before
    that, including some CGI apps that did HTML generation in Scheme,
    so I hit the ground running with CL. [Yes, Kenny, I still owe
    you all an RTL page...]

[2] CMUCL confusingly calls the package "MULTIPROCESSING", but it's
    really multiprogramming, that is, "green" threads (co-routines)
    within a single Unix/Linux process. But since CMUCL's threads
    are very nicely integrated with its I/O so that by default *all*
    I/O uses "select()", starting a new thread per HTTP request works
    out extremely nicely. Some threads can block [waiting for a slow
    input or output file descriptor to become usable] without blocking
    others for which I/O is ready. The thread doesn't have to do
    anything special to make this work, just use normal CL stream I/O.

[3] A warning for CMUCL users thinking of switching to FreeBSD 7.0:
    Unlike FreeBSD 4.x, 5.x, and 6.x, which will happily run a CMUCL
    that has been compiled on some earlier version of FreeBSD, via
    the appropriate "compatN" libraries, the FreeBSD 7.0 beta changes
    the signal handling [specifically, SIGBUS vs. SIGSEGV] in a way
    that breaks CMUCL's GC. One of the CMUCL developers is currently
    communicating with FreeBSD developers to try to resolve this issue.

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607