mmlib/mmat: replace some variables by literal constants
[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:
7579bd68 9
5d9a3cab
MM
10- BSD-licensed
11- Implements most of HTTP/1.1
12- Acceptable performance
13- Permits interactive and incremental application development,
14 in a language as high-level as a scripting language yet also as
15 low level as C, while being less error-prone
16- Internally compiles to C, which helps portability and provides
17 better integration with POSIX systems and other C libraries.
18 ECL can be used as a very powerful C preprocessor.
19- A gmake/gnu-make make file allows to easily build both .fas
20 modules for interactive use and the standalone OS-friendly
21 crow-httpd executable, using ECL as the toolchain
71ce521a
MM
22- Few dependencies (includes everything necessary other than ECL),
23 very integrated
7579bd68 24- Ability to embed HTML as S-expressions directly into Lisp code
e77485d4
MM
25 in an elegant way (the HTML to text expansion is done at
26 compile-time, with Lisp expressions and loops evaluated at runtime)
9a3baff4 27- Can embed binary files as part of the latter executable,
7579bd68 28 which can make deployment easier and permits to target systems that
5d9a3cab
MM
29 don't have a general-purpose file-system or which should be
30 self-contained
31- Supports static, static+dynamic or dynamic only virtual-hosts.
32 Virtual hosts may have a default autoindex permission configuration
33 along with resource handlers to override the default for specific
34 resources. Dynamic-only ones may still serve static embedded files.
7579bd68
MM
35- When started in standalone-mode, supports three modes: non-interactive,
36 interactive-ecl-repl, interactive-swank-server
37- Uses threads so CPU-bound applications are possible. Attempts
38 to minimize thread management overhead.
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
5d9a3cab
MM
41- A general per-resource handler system is used to register dynamic,
42 embedded files, autoindex permissions or auto-redirections, and
43 these can be dynamically configured at runtime
44- Virtual hosts can also be manipulated dynamically at runtime
dd4270e5
MM
45- Decent unicode support
46- Includes some unicode-friendly text normalization tools for european
71ce521a 47 languages, to make operations like search-matching more resilient to
dd4270e5 48 spelling differences
27d04191 49- Syslog(3) support
5d9a3cab
MM
50
51Planned features:
52
798975f3 53- Provide an easy means to embed a whole directory tree using CONST-FILE
5d9a3cab
MM
54- Optionally compile the configuration as part of the final executable
55 and optionally disable the -config option for deployments with no
56 "user-serviceable parts inside"
bae985a4 57- Produce a configuration file out of the current image settings
5d9a3cab
MM
58- POST file uploads (it's actually a caveat not to support this yet)
59- Support optional static final executable (dynamic already supported)
60- Session management, perhaps also form management
61- Support for the GD library or an equivalent
62- Support for the PostgreSQL database
63- Perhaps a custom object storage system which supports transactions
64- Eventual support for a higher-level application framework
7579bd68 65