netbsd/pr.txt: update
[mmondor.git] / mmsoftware / cl / server / README
1 The Crow-HTTPd Web Server
2 =========================
3
4 This server is written in Common Lisp and is mostly developed
5 interactively.  It targets POSIX systems, using the ECL implementation
6 of Common Lisp.
7
8 A few strong points of Crow-HTTPd are:
9
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
22 - Few dependencies (includes everything necessary other than ECL),
23   very integrated
24 - Ability to embed HTML as S-expressions directly into Lisp code
25   in an elegant way (the HTML to text expansion is done at
26   compile-time, with Lisp expressions and loops evaluated at runtime)
27 - Can embed binary files as part of the latter executable,
28   which can make deployment easier and permits to target systems that
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.
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.
39 - Provides user-code with simple abstractions such as WITH-HTTP-LET
40   to bind local variables to GET, POST, Cookie, Header variables
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
45 - Decent unicode support
46 - Includes some unicode-friendly text normalization tools for european
47   languages, to make operations like search-matching more resilient to
48   spelling differences
49 - Syslog(3) support
50
51 Planned features:
52
53 - Provide an easy means to embed a whole directory tree using CONST-FILE
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"
57 - Produce a configuration file out of the current image settings
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
65