[tbnl-devel] Hunchentoot for SBCL and other Lisps (Was: TBNL survey / re-org)

Edi Weitz edi at agharta.de
Sun Oct 1 11:20:41 UTC 2006


On Fri, 29 Sep 2006 19:23:34 -0400, Travis Cross <travis at travislists.com> wrote:

> Edi Weitz wrote:
>
>> LispWorks/Hunchentoot doesn't use KMRCL, so that's the plan for
>> SBCL and the other Lisps as well.
>
> I had a feeling this was on your agenda as well.

OK, here's a quick hack which tries to be a version of Hunchentoot
which works with SBCL (see below for other Lisps):

  http://weitz.de/files/hunchentoot-sbcl-beta.tar.gz

It'd be nice if SBCL users could give it a try and report what works
and what doesn't.  To use it, replace your TBNL folder with the one in
the tarball and put the Hunchentoot folder somewhere where ASDF can
find it, then use ASDF to load the Hunchentoot (not the TBNL!) system.
Afterwards, you can load the TBNL-TEST system for an initial test
website if you want.

You start the server with

  (TBNL:START-SERVER :PORT xxx)

In addition to the usual TBNL dependencies, you'll need FLEXI-STREAMS,
Chunga, and CL+SSL.  You should also patch RFC2388 as described here:

  http://common-lisp.net/pipermail/tbnl-devel/2005-December/000524.html

(No need to patch KMRCL as it is no longer used.)

The version numbers and the documentation haven't been updated, but
the Hunchentoot documentation should basically apply.  Here are some
differences:

1. SBCL ignores WRITE-TIMEOUT and uses READ-TIMEOUT for the TIMEOUT
   argument of SB-BSD-SOCKETS.

2. The SETGID argument must be a number and cannot be a string.

3. You cannot provide a password for the private key file.

4. The certificate and the private key cannot be in one file.

5. The setting of *GC-INTERVAL* has no effect.

So, please try with your own web apps and your own browser.  Do things
like chunked encoding and persistent connections work for you?  Does
https work for you?

As for the implementation, please look into the port-sbcl.lisp and
unix-sbcl.lisp files.  If for specific parts you know a better way to
do this, please report it - I'm not an SBCL expert.  See also the
GET-GID-FROM-NAME function.

Users of AllegroCL, CMUCL, or OpenMCL might want to provide their own
versions of the port-xxx.lisp and unix-xxx.lisp files.  I have plans
to add support for these implementations in the future, but you can
certainly speed this up if you send me some code.  This would be
especially helpful for OpenMCL as I don't have a Mac, and my wife
doesn't want to give me her iBook... :)

Cheers,
Edi.



More information about the Tbnl-devel mailing list