Hunchentoot - The CL web server formerly known as TBNL
Friday, October 13, 2006
Edi Weitz writes a lot of nicely-written and documented CL
libraries and I always enjoy using his code. So, I was recently intrigued to read that he was planning
to port his
Hunchentoot web server to multiple CL implementations (his implementation of choice is normally
LispWorks
although his libraries usually work on a variety of different CL
implementations)
and replace his
TBNL web server with it. He
indicated: "I'm thinking about re-organizing/purifying the TBNL code-base. It
looks pretty messy to me now and I think I could get rid of a couple
of things if I find the time.". Well, in the space of a month, he's
made excellent progress and Hunchentoot is looking quite promising. I
recently decided to download it and give it a try.
First of all, there are a number of
dependent libraries that need to be installed. Since CLiki is
currently down (it's in the process of being moved over to the
Tech
Coop servers), I used Marc Battyani's
Common Lisp Directory to locate the latest versions of each
dependent library. In addition to the libraries that Edi lists, there
are a number of additional libraries that are needed (dependencies of
the dependencies, so to speak). Also, if you want to run his examples,
you'll need his CL-WHO library. So, in the end, I downloaded the
following:
- Hunchentoot
- MD5
- CL-BASE64
- RFC2388
- Chunga
- CL-PPCRE
- URL-REWRITE
- CL-WHO
- FLEXI-STREAMS
- CFFI
- I also had to get the CVS versions of CL+SSL, trivial-https, and trivial-gray-streams (instructions here)
(defparameter *libssl-pathname* #+(or :win32 :mswindows) "libssl32.dll" #+(and :openmcl :darwinppc-target) "/usr/lib/libssl.dylib" #-(or :win32 :mswindows :darwinppc-target) "/usr/lib/libssl.so")With that minor fix, everything built without any problems!
After building, it was simply a matter of running the example to test things out. Hunchentoot definitely looks nice and I'll have to experiment with it a bit more in the future!

