I have been bumping on a few "lists of Common Lisp libraries and tools" written by many people. I feel like rantin... pardon, blogging about this state of affairs.
First of all we have CLiki, which is a rather comprehensive list of CL libraries and whatnot, and then we have a few, unnamed, "state of the CL ecosystem", "preferred list of Common Lisp libraries", etc, etc.
I have nothing against people blogging or making lists of course, but I tend not to make generalized statements. Especially in order to avoid disrespecting some people's work, just by not knowing of its existence. This is a hint.
So, in order to proceed with my ran... blog post, here is the list of CL libraries I use. Turns out there is quite a bit of NIH syndrome here, but I never claimed not to suffer from it. Also remember that I have a Mac, a Windows and a Linux system at hand. I always try to have stuff that works on all of them.
- I work mostly on Lispworks. I have the luck to be able to afford the Enterprise edition (or better, my funding does) and I am very happy with it. The folks at Lispworks know that I can be a pest (environments? rounding modes?) but they are just doing a fantastic job.
- I use, of course, SBCL. The implementation is rock solid and it has all the bells and whistles you need for a world class system. Recompiling and deploying for SBCL usually uncovers bugs and potential pitfalls in your code. I have a small rant about it though. Guys, do not write code that "works on SBCL" and just assume all is fine. It is not.
- I have also CMUCL installed and I use it as well. It still has a few good things to it.
- Next I use Armed Bear Common Lisp, an excellent testbed for checking portability.
- Of course, I have the free edition of Allegro CL: the other excellent commercial alternative.
- Last but not least (with memories going back decades) I have CCL installed and always ready to use.
- I am very intrigued by CLASP, but I admit, I have not had the strength to install it (too much of a production; remember that I try to get things working on three platforms); any help will be appreciated.
- Same for the latest incarnation of ECL. Sorry guys, I will get back to installing it soon.
- Finally, we always have CLisp: old but good.
Web Server and Client
- Incorporating Eclector as a "reader" (as of now the tool uses more than a kludge to get past the non standardized way of dealing with READER- and PACKAGE- errors).
- Finishing the HTML5 generation scheme.
- Adding Texinfo generation (as per Didier Verna's declt library).
- Fixing cross-referencing, especially with standard CL (cfr., Hyperspec).
Laziness as a Way of Life
Programming Common Lisp
- definer is a small hack to have Pythonesque def available in Common Lisp, of course, in an extensible way (documentation being updated soon).
- cl-unification is a full blown unification machine for Common Lisp objects and "templates"; not as fast as a simpler pattern matcher (like several listed in CLiki Pattern Matching), but very general (it also relies on CL-PPCRE).
- cl-enumeration was the first full blown Java-like enumeration/iterator library for Common Lisp; it works.
- defenum is another Java-ism ported to Common Lisp; it essentially creates enums that work like Java, i.e., with quite a bit of underlying machinery. Of course you do not have Haskell data definitions available, but it was fun to write.
- with-contexts was a bout of Python-envy, but then again, I think I was able to show that you really can program Common Lisp in a fun way.