Some CSS modifications
[mmondor.git] / mmsoftware / cl / server / README
CommitLineData
7579bd68
MM
1The Crow-HTTPd Web Server
2=========================
3
4This server is written in Common Lisp and is mostly developed
5interactively. It targets POSIX systems, using the ECL implementation
6of Common Lisp.
7
8A few strong points of Crow-HTTPd are:
9(note that points with + denote work in progress)
10
11+ Implements most of HTTP/1.1
12- Acceptabe performance
13- Permits interactive and incremental application development
14- Allows application development in a language as high-level as a
15 scripting language yet also as low level as C.
16- Few dependencies (includes everything necessary other than ECL)
17- Ability to embed HTML as S-expressions directly into Lisp code
e77485d4
MM
18 in an elegant way (the HTML to text expansion is done at
19 compile-time, with Lisp expressions and loops evaluated at runtime)
7579bd68 20- Can be compiled to an OS-friendly executable easily
9a3baff4 21- Can embed binary files as part of the latter executable,
7579bd68
MM
22 which can make deployment easier and permits to target systems that
23 don't have a general-purpose file-system
24- Supports static, static+dynamic or dynamic only virtual-hosts
25- Internally compiles to C, which helps portability and provides
26 better integration with POSIX systems and other C libraries
27- Written in a less error-prone language than C (especially string
28 handling). The end result is C but using libraries to help abstract
29 and keep safety.
30- When started in standalone-mode, supports three modes: non-interactive,
31 interactive-ecl-repl, interactive-swank-server
32- Uses threads so CPU-bound applications are possible. Attempts
33 to minimize thread management overhead.
34+ Configuration may optionally be embedded as part of the executable
35 (in which case it doesn't allow loading one), or loaded at runtime
36- A gmake/gnu-make make file allows to easily build both .fas
37 modules for interactive use and the crow-httpd executable, using
38 ECL as the toolchain
e77485d4
MM
39- Provides user-code with simple abstractions such as WITH-HTTP-LET
40 to bind local variables to GET, POST, Cookie, Header variables
7579bd68 41