On Fri, 29 Sep 2006 19:23:34 -0400, Travis Cross travis@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.