Site menu:

Tips for clisp

More FFI friendly

When linking with several foreign libraries, you may not succeed because clisp insists to resolve all symbols immediately. The following patch relaxes that constraint:

--- clisp-2.48.orig/src/spvw.d
+++ clisp-2.48/src/spvw.d
@@ -4077,7 +4077,7 @@
   return (void*)LoadLibrary(libname);
   /* FIXME: On UNIX_DARWIN, need to search for the library in /usr/lib */
-  return dlopen(libname,RTLD_NOW|RTLD_GLOBAL);
+  return dlopen(libname,RTLD_LAZY|RTLD_GLOBAL);

Here are my Debian Etch packages implementing that. It suppresses also X support, as CLX is available elsewhere if you need it; if you don't need X, you can then take full advantage of clisp small footprint.

Web applications

clisp makes a quite decent CGI scripting language, due to its small memory footprint. With the help of detachtty, clisp can also provide small daemons. Such a daemon could for instance regularly gather information (take your favorite: network traffic on some system, stock prices...) and put it in a RRD database; RRD content is then vizualized on demand through a (clisp!) CGI script.

The latest clisp release (2.48) is the first to support threads, so running UCW with it should now be possible. But porting UCW to clisp will certainly require some work.

Tips for cmucl

Having not evolved too much, cmucl is happier with older code. It's from my experiences still the fastest free Common Lisp for intensive floating point computations.

Tips for ecl

Tried this one for a case where I needed some really tiny standalone executable. It was a success as it provided a binary even smaller than the clisp one. I didn't try the "embedding" features, and my case didn't push performance or ANSI compliance very far. Specific documentation is currently quite limited.

Tips for sbcl

Stock Debian Squeeze sbcl isn't used to run this site. Two reasons for this:

Solution: run a i386 sbcl instead. You can do it that way:

aptitude install ia32-libs
tar xjf sbcl-1.0.46-x86-linux-binary.tar.bz2
cd sbcl-1.0.46-x86-linux/

OpenMCL (now Clozure)

Found that link on comp.lang.lisp: Will test that when I get some freetime.