CL-HTTP Welcome to The Common Lisp Hypermedia Server

  1. Quick Start
  2. Server Features
  3. Documentation
  4. Current Release
  5. Discussion Group
  6. Bug Reports
  7. Acknowledgments

Meta-Object ProtocolMajor Features

Some important things about this server:
Computed URLs written in Lisp supersede conventional CGI scripts.
HTML Synthesis for HTML 3.2 & Netscape 4.0 with generation tools.
Presentation-based Interfaces with W3P.
Site Indexing & Information Retrieval with LambdaVista
Implements GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE methods.
HTTP 1.1 compliant server, programmatic client, Web walker, & Proxy.
Persistent Connections for the server & the basic client.
Access Control via subnets, passwords (Basic & Digest Authentication).
Mobile code emission for client-side JavaScript, Java, or plug-ins.
VRML 1.0 Synthesis tools.
Email HyperArchive.
Modular & extensible logging.
Full featured.
Web-based configuration of the server & user access control.
Multi-threaded and dynamically linked.
Multiple Virtual Hosts on the same IP address.
Extensible, modular, object-oriented architecture based on CLOS meta-object protocol.
Source compatible over major hardware, operating-system and Lisp platforms.
Advanced condition handling architecture.
Self-documenting.
Working examples to get you started.
Toolkit of Web abstractions.
Clean abstractions facilitate security audits.
Rapid prototyping for research, product or protocol development.
Used in top research laboratories around the world.
Disconnected operation on Apple PowerBooks.
Proven in major production systems.
Complete source code.
Free.

This is the Common Lisp Hypermedia Server for the World Wide Web developed by John C. Mallery (jcma@ai.mit.edu) of the M.I.T. Artificial Intelligence Laboratory.


Obtaining The Current Version: The CL-HTTP Home Page centralizes information about this Web server and related Common Lisp WWW tools. If you obtained this distribution from somewhere other than ftp://ftp.ai.mit.edu/pub/users/jcma/cl-http/, you should FTP the latest version for best results.

Common Lisp Platforms: The server has been ported to a number of Common Lisp implementations running on a variety of computer hardware.

Browsing the Documentation: Watch out for URLs on the local host that compute their output in some interesting way.When operating in standalone mode or over a network not connected to the internet, you can still follow all the documentation and source code that comes with the server. In both cases, you may wish to set your browser so that you can see the URL under the mouse, and especially, the host that serves it.

Questions: If you have any questions, send mail to WWW-CL@AI.MIT.EDU.

CL-HTTP Documentation

The Common Lisp Hypermedia Server (CL-HTTP) is here for you to rapidly prototype and smoothly evolve novel or complex applications for the World Wide Web. After reading the WWW-94 conference paper , the first documentation items below should be enough to get you up and running.


Configuration Instructions explain how to start up World Wide Web service on specific Lisp platforms.

Web-based server configuration is available after loading and starting the server successfully.

Release Notes describe new features and issues for specific platforms

Server Features illustrates various things you can do with CL-HTTP using live examples which you can copy and edit for your own applications. You can brighten up your pages with some basic icons.

Documentation for exporting documents and for using image maps.

Computing Responses explains the how to write response functions and accept user input with fill-out forms.

W3P Presentation System explains how to use presentation types with HTML forms.

Authentication explains the how to control access to resources with user names and passwords as well as secure subnets.

Proxy Service explains how to configure the server for HTTP proxy service.

VRML Generation explains the how to generate 3D scenes under program control with the Virtual Reality Modeling Language.

HTML Parser explains how to parse HTML using tools distributed with CL-HTTP.

Site Indexing & Information Retrieval explains the how to use LambdaVista -- a hybrid classification and retrieval system that indexes your Web site, including email HyperArchives, and supports full-text retrieval.


Documentation for major modules. CL-HTTP provides a powerful self-documentation tools describing practically every class, method, function, macro, and variable in the systems.
  1. HTML 3.2 Synthesis Tools are used to generate HTML for dynamic or static uses.
  2. Netscape 4.0 HTML Synthesis Tools are available for extensions to HTML and mobile code emission.
  3. HTTP Operators and Variables govern the operation of the server.
  4. URL Operators and Variables control parsing and representation of uniform resource locators.
  5. VRML 1.0 Synthesis Tools generate 3D VRML scenes.
  6. W3P Presentation Operators present data and accept input from users.
  7. Utilities support the other modules.

Common Lisp Source Code
In the table below, each logical pathname is hyperlinked to the directory for each component.

PortableLocation
Exampleshttp:examples;
Serverhttp:server;
W3P Presentation Systemhttp:w3p;
Proxy Servicehttp:proxy;
Basic Clienthttp:client;
LambdaVista Search Toolhttp:lambda-ir;
W4 Web Walkerhttp:w4;
HTML Parserhttp:html-parser;
Email HyperArchivehttp:examples;mail-archive.lisp
CLIM Interfaceshttp:clim;
SMTP Mail http:smtp;
Platform-SpecificLocation
Allegrohttp:acl;
Allegro 5.0.1http:acl501;
CMU CLhttp:cmucl;
LispWorkshttp:lw;
Lucidhttp:lcl;
Macintoshhttp;mcl;
Symbolicshttp:lispm;
User-ContributedLocation
Portablehttp:contrib
Macintoshhttp;mcl;contrib;
Allegrohttp:acl;contrib;

Full Distribution provides web access to the distribution file structure below the logical pathname, http:http; or Search for URLS (or files) containing a substring.

Development Projects describe useful additions to CL-HTTP that volunteers might want to work on.

Guidelines and Hints on writing well-abstracted yet efficient code for CL-HTTP.

Internet Standards for the World Wide Web.

Developer Tools enumerates some tools that may be useful to cl-http developers.

Extending the Server explains some ways to customize the server for new behaviors.

Brief History recounts the origins of this server and some early applications.

Reference Materials indexes a valuable range of technical documentation and software repositories relevant for WWW and Lisp development.

Acknowledgments credits the people who helped out.

The Current Version can be retrieved from the CL-HTTP Home Page, which centralizes information about this Web server and related Common Lisp WWW tools. Alternatively, one can access the FTP directory directly at ftp://ftp.ai.mit.edu/pub/users/jcma/cl-http/.

Learn about new releases, usage, and applications of CL-HTTP as well as general WWW programming with Common Lisp on www-cl@ai.mit.edu. Note that you must join the discussion group before sending mail to it, or the listserve will ignore your mail. Although a little inconvenient, this listserve configuration prevents rampant spam mail from reaching your inbox and the archives.

Bug Reports

When reporting bugs, it is essential that you explain how to reproduce the problem, provide a backtrace when relevant, and include the server version, the Common Lisp version, operating system version, and hardware configuration.

If possible, use the sources to fix the problem and send the fix along with the report.

Report bugs associated with specific ports should go to one of the specialized mailing lists:

Allegro Common Lisp:Bug-ACL-CL-HTTP@ai.mit.edu
LispWorks Common Lisp:Bug-LW-CL-HTTP@ai.mit.edu
Lucid Common Lisp:Bug-LCL-CL-HTTP@ai.mit.edu
Macintosh Common Lisp:Bug-MCL-CL-HTTP@ai.mit.edu
Symbolics Common Lisp:Bug-CL-HTTP@ai.mit.edu
CMU Common Lisp:Bug-CMUCL-CL-HTTP@ai.mit.edu

Common source or platform independent bugs or issues should be reported to Bug-CL-HTTP@ai.mit.edu.

Bugs or questions concerning the Constraint Guided Web Walker should be sent to bug-w4@ai.mit.edu.

John C. Mallery -- jcma@ai.mit.edu
M.I.T. Artificial Intelligence Laboratory