Two years of Quicklisp
blog.quicklisp.org
blog.quicklisp.org
I don't use Common Lisp as much as I used to but when I do I now use Quicklisp for every project.
A further benefit of Quicklisp is being able to browse available packages and quickly experiment with packages that may be useful. I think that Quicklisp tightens up this exploratory cycle.
Puts getting required lisp libraries in the "extremely easy" category.
But posting this 'harsh' comment here is useless and detracts from useful conversation.
I'm wondering if a 'new' age of sysadmin is coming along that will basically build a vm-image of an application node, with the OS built using chef/puppet/etc, so that the host packages are as few as possible. Just a thought.
If I'm writing a CL package, a Python package, or a Ruby package, then I'd rather spend my time getting them to work in their respective language eco-system instead of working in the Ubuntu, Debian, Red Hat, Windows, OS X, FreeBSD, etc. eco-system.
So why should tell system pkg manager about something which is not system-wide?
Also, virtualenv comes in stdlib now!
I like that Quicklisp doesn't interoperate with the system package manager (I use Debian and Debian derivatives mostly). Quicklisp sets up repositories per-user, which means I can easily have different versions of libraries running for different users. This is handy because the Unix user facility is the original "virtual machine." All Common Lisp implementations are also very easy to set up to run from your home directory, which is great. I never use apt for installing CL implementations.
System packaging is great for command-line and GUI applications, and certain services like databases. But I don't think it works for development, and I don't even think that having machine-wide library installation (like npm and RubyGems) is a good idea. I've used npm and RubyGems and the way Quicklisp does things is much better in my experience (although one thing it doesn't provide is library versioning for individual projects).
Anyway thanks to Xach for quicklisp, it made experimenting with CL libs much easier!
CLISP is another implementation that is interpteted (i.e. not native-compiled like SBCL i.e. slower in most cases). It has a somewhat nicer REPL and debugger out of the box, and super-fast bignum support. I believe CLISP is what pg used to create Viaweb.
There is also Clozure Common Lisp (predating and not to be confused with Clojure). CCL is well integrated with Cocoa on the OS X platform and seems to be moving in the direction of ARM suport (iOS support in the future?). I have the impression that CCL may be more popular with OS X users, but I have yet to find reason to use it over SBCL on Linux.
ECL (Embedded Common Lisp) is an implementation that translates to C and uses gcc for compilation. ECL builds the tiniest executables (a couple hundred K or less) and is perhaps well-suited both as an extension language and for embedded platforms. ECL does not seem to support all of the libraries I've tried with it, but it supports enough of Common Lisp to be a viable platform for those who require its strengths.
Most of the stuff I did in CL was related to 3D graphics and computer games, and while SBCL has the required performance, it tends to crash on Windowses, and every other CL I tried except Clozure CL is not fast enough to even run SDL examples in real-time.
SBCL:
* Biggest weakness: not super-well tested on windows
* Strengths: Generates super-fast code, is the most comonly targeted implementation by OSS libraries
CLISP:
* Biggest weakness: Performance
* Strengths: Fast bignum implementation, most portable of all lisps (If you have a C compiler, you can probably get it working on your platform)
ClozureCL:
* Code generated is not as good as SBCL, but compiler is considerably faster
* Better windows support than SBCL
* Has builtin support for OS X gui
Ecl:
* Currently the best if you want to embed CL in C
* Application delivery is very different from other LISPs
* Uses a non-copying conservative GC (which embedding in C easier) that just can't be as good as generational copying GCs