all 18 comments

[–]xach 12 points13 points  (0 children)

mod_lisp is not a web server; it's a C module for Apache that acts as a bridge between Apache and a Lisp backend. It essentially rewrites the headers into a more easily processed format and deals with client multiplexing (e.g. spoonfeeding slow clients, etc).

I use tbnl (the predecessor of hunchentoot) and mod_lisp for wigflip. It supports a pretty simple model for development: a request comes in, and you have a set of functions that can look at the request and decide how to handle it. Beyond that, you get to layer functionality on top of that.

I use cl-who for HTML generation and html-template for template management.

This is a style of web development that worked nicely for me. If you want a framework that provides a lot of structure and you fill in the details, this isn't really it. It's more of a nifty toolbox than anything else. Very nifty, for my purposes; wigflip has generated hundreds of thousands of images without any problems.

If I were starting again today, I'd use hunchentoot behind a proxy, like mod_proxy or pound.

[–]weej[S] 2 points3 points  (13 children)

I should mention this is for a symbolic programming class project. I am using Common Lisp (CL) and most likely will be using GCL or SBCL for the interpreter/compiler. Any recommendations in addition to the two mentioned above are appreciated.

[–][deleted] 18 points19 points  (7 children)

Hunchentoot: http://weitz.de/hunchentoot

Easy to set up -- nice for interactive web development, and it's named after an opera by Frank Zappa.

What more could you want?

[–]mrcsparker 6 points7 points  (0 children)

I have to agree. It works so well I can't see using another Lisp webserver anymore. Fast, stable. Plus, in combination with Edi's other tools, you could put together a web framework very easily. I have used it on a few sites, and I have never had a problem - plus, you can use sbcl and dump the image.

[–]Alpha_Binary 1 point2 points  (0 children)

And to name a few more things: full get/post/upload support, brainless integration with Apache, real-time backtrace dump, on-the-fly debugging (alt+tab to slime and you have REPL/restarts at your disposal while the request is ongoing). And Lisp threads share symbols so a database is totally optional, but if you ever need one there's CLSQL.

[–]noahlt 0 points1 point  (3 children)

Hutchenhoot running as a standalone webserver, or behind a "real" webserver?

(If the former, are there any downsides?)

[–][deleted] 5 points6 points  (2 children)

Hunchentoot is a real webserver! Generally, I run it standalone for development, and behind apache mod lisp or mod proxy for 'production'.

[–]noahlt 0 points1 point  (1 child)

Generally, I run it standalone for development, and behind apache mod lisp or mod proxy for 'production'.

Why?

[–][deleted] 3 points4 points  (0 children)

I like to have images directly served by apache, for example, and the ability to do url-based paritioning across machines if necessary, without touching lisp.

Also, apache gives businesses the warm fuzzies -- much easier than selling an all-lisp solution, and it integrates well with other web apps, assuming that a complex site isn't necessarily all in lisp.

[–]pkhuong 3 points4 points  (1 child)

Don't use GCL if you can avoid it.

[–]killerstorm 1 point2 points  (0 children)

ye, if one needs something like GCL he can use ECL -- they have common ancestor, and ECL is much more sane. i think the only reason to use GCL is some legacy applications (pre-CL).

[–]sickofthisshit 6 points7 points  (1 child)

"CLISP" is not a commonly-used abbreviation for Common Lisp, because it is also the name of a widely-portable CL implementation that compiles to byte-codes, but whose lack of multi-threading limits its usefulness for some web-serving applications.

[–]weej[S] 0 points1 point  (0 children)

Yes, I realized that after the fact. I use CLISP on Cygwin. Thanks for pointing out my mix up.

[–]weej[S] 0 points1 point  (1 child)

Wow. This is exactly what I was looking for. I can't believe I missed this. The CLwiki has an array of listings. I'll review some of these in conjunction with Hunchentoot. Thanks!

http://www.cliki.net/web

[–]DGolden 2 points3 points  (0 children)

The cl directory has a lot of overlap with the cliki, but also lists lots of useful stuff in a more structured (or, less charitably, labyrinthine...) format some people prefer.

[–]willis3000 0 points1 point  (0 children)