MCL CL-HTTP Release Notes


MCL Versions: This release runs best in the latest version of Macintosh Common Lisp (4.2 PPC or greater). The server runs also on 68K machines under 3.3. It works with earlier versions of MCL from 3.0 onwards, but some functionality may be missing. If you have versions of MCL earlier than MCL 3.0, MCL CL-HTTP will not be suitable for production use but will work fine for development work with single threaded clients like MacWeb. If you encounter bugs, unclear documentation, or other shortcomings, please report them to: bug-mcl-cl-http@nospam.cl-http.org . Since development of this server is a community effort, please try to send fixes along with your bug reports.

Questions: If you have questions about the configuration, operation, or design of the server, please send mail to www-cl@csail.mit.edu WWW-CL@CSAIL.MIT.EDU, which you can join.

Release 70.190

Mobility support: Mobility support enables remapping running servers when IP addresses change. See: http:move-server-to-new-host

Mac OS X:CL-HTTP now runs over Mac OS X under MCL 5.0.

Release 70.156

Server Window:A new CLIM-base server window is available under MCL.

CL-HTTP Menu:This has been upgraded and featurized.

Proxy:The caching HTTP proxy now works robustly under MCL.

HTTP 1.1 Robustness: A series of bugs in HTTP 1.1 chunked transfer encoding were fixed and serveral efficiency improvements added. Proxy transfers were fixed. Open transport reliability was improved.

Efficiency Improvements: Numerous efficiency enhancements have been made, including specialization of stream method, low-level connection handling, time parsing, OpenTransport process waiting, error signalling when reading TCP buffers.

Specializations: The pathname data caching facility, server-side includes (SHTML), idle server scavenging, and more now work under MCL.

Release 67.99

CGI Facility: Terje Norderhaug (terje@nospam.in-progress.com) has contributed a CGI facility that allows MCL CL-HTTP to benefit from the hundreds of CGI applications written for Mac Web servers. Read Me

Multiple Reader Locks: Performance has been improved for loaded servers using shtml templates, passwords, or file data caching by introducing multiple simultaneous readers of lock protected data.

System Management Rationalized: The system loading facility has been upgraded. It knows how to find unloaded CL-HTTP systems and perform load or compile operations on them. System definitions and loading file now appear exclusively under http:mcl; All MCL-specific files now reside within this directory. All systems have a subdirectory there that contains their system definition.

Proxy Service: The MCL port has been upgraded to support HTTP 1.1 on the client side and allow chunked PUTs. Consequently, the new caching proxy implementation runs on the MAC.

Full Text Search: The Lambda-Vista system runs under MCL and has been integrated with the mail hyperarchive.

Release 63.58

ESMTP Supported:The SMTP package for sending email now talks to SMTP mailers. Useful for automatic bug reporting and the HyperArchive.

MenuBar Control: A control item on the menubar now makes operating the server and related tools much easier. (Courtesy Rainer Joswig).

Dramatic Stability Improvements: Concerted efforts between Digitool and MIT have resulted in the most stable and highest performance release for the Power Macintosh.

OpenTransport: Native OpenTransport networking is available for PowerPC MCL (4.1) using the Digitool OpenTransport interface.

TCP: A TCP level bug that could cause crashes was fixed. A timing bug on TCP-level process waits was fixed. The default TCP timeout was lengthened to eliminate premature connection closure with slow clients and fast servers.

Release 60.57

Bug Fixes: A number of bugs in the MCL port have been fixed. Daily log file rotation now works. TCP behaves more robustly under loading. 60.57 is MCL 4.0 & 3.1 ready.

TCP Stability: An extensive upgrade of of the mactcp.lisp interface has resulted in dramatic improvements in the stability of server running on both 68k and PowerPC machines.

HTTP 1.1 Compliance: The server complies with the HTTP 1.1 IETF draft standard dated July 4, 1996 for all platforms (except Lucid). Connections are persistent for static and dynamic resources for all content types. Static files with content type text are transferred using a CRLF (binary format on several architectures), which is cached automatically. Virtual hosts are available for HTTP 1.1 clients, as well as some late HTTP 1.0 clients (e.g., Netscape 2.0).

W3P Presentation System: A light-weight and fast presentation system has been integrated with the server for use in generating form queries and parsing form returns. W3p implements a subset of the Common Lisp Interface Manager, version 2.1. In a later release, a Dynamic Form Processing layer will be added above W3p. Chris Vincent Beta-Test

Web Server Configuration: The server can be configured over the Web using W3P and a preference facility. This paves the way for booting binary images containing only the server and configured them from a Web interface rather than from Lisp.

VRML Generation: A set of generation macros for the Virtual Reality Modeling Language support VRML 1.0. A brief tutorial introduces Lisp programmers to generating 3 dimensional graphics on the fly under program control. Rainer Joswig

W4 Constraint-Guided Web Walker: A web walker is included in the distribution, but must be loaded separately. It provides a constraint posting architecture control and action. The basic HTTP client has been ported to all platforms. Persistent connections, performance tuning, and general hardening have enhanced usability. W4 runs on all platforms except Lucid, most robustly on the Lisp Machine. Beta-Test. An HTML parser has been integrated as a url generator. Alpha-Test.

Distributed AI Applications: A MIME type, Application/Lisp-SExp, has been defined to allow Lisp programs to Post values from the basic client to the server. A response function on the server may execute and return Lisp values to the client. This clean facility for remote procedure call provides a foundation for building distributed AI applications. See the example in http:examples;client.lisp

Put Method: Netscape Gold 3.0 clients and the basic HTTP client can use the PUT method to publish Web documents to the server.

Client-Side Cookies: Facilities for setting and using cookies are now available. See computing response functions.

Netscape 3.0 HTML Generation: HTML generation has been extended to support Netscape 3.0 extensions, which include HTML 3.2 tables.

Contributions Directory: A directory for general-purpose contributions by users has be added at HTTP:CONTRIB; See also http;mcl;CONTRIB;

Fast Access Logging: A dedicated process now handles writing access logs for each port served. This allows threads to be reused faster because they do not wait for their log entry to be written. Disk contention is reduced because multiple logs are written in sequence while keeping the log file open.

Automatic GIF Image Sizing: Netscape 1.1 & 2.0 image macros automatically default the size of GIF images when http:*image-sizes-default-automatically* is non-null. This speeds the display of images on major clients. Shannon Spires

Mail Archive Facility: Archives of email discussions can be exported using the :MAIL-ARCHIVE export type, found in http:examples;mail-archive.lisp. This facility provides several views on the archive, is always current, and can be extended via subclassing. New mail formats beyond the current Lisp Machine, Eudora, UNIX Rmail formats are easily added.

Charsets: Character sets other than the HTTP default of :ISO-8859-1 may be specified for all text content types at export time, including directories. Similarly, dynamically computed pages may specify alternate character sets.

Languages: ISO language abbreviations can be associated with all resources, whether static or dynamic.

Computed Directory Listings: The standard url-oriented listing of directory paths may be over-ridden by a computed response. A built-in function is available to serve index.html files instead of standard listings.

Release 58.12

Inline Speech: Support is available for inline speech synthesis using a Netscape plug-in and the Macintalk. See discussion on the features page.

JavaScript Emission: HTML generation macros incorporate client-side events. Events are handled by client-side code. ns2.0:define-script provides a facility for encapsulating mobile code and emitting it from lisp during HTML generation with html:accept-input, html:with-event-handlers, and the simplified html:fast-format.

Persistent Connections: HTTP 1.1 persistent connections are available for exports where the content length is known in advance. This produces more efficient HTTP service by reducing the overhead of tearing down and reestablishing TCP connections for each request.

HTTP 1.1 Methods: The POST, PUT, and DELETE have been updated to the HTTP 1.1 specification.

Lower Server Latency: Server latency should be noticeably less due to the following improvements:

Faster HTML Generation: Consing during HTML generation is virtually eliminated, and i stack consed where unavoidable.

Access Control Management: An example file implements an access control manger over the Web and prevents unauthorized access with digest authentication.

Netscape 2.0: HTML generation is now available for the range of 2.0 extensions, including frames and client-side image maps. Java and JavaScript can be exported and invoked from synthesized HTML. (see the CL-HTTP Features.

Digest Authentication: The MD5 Digest Authentication scheme is implemented. It provides substantially better passwords than the Basic Authentication scheme.

Modular Logging: Logging is now extensible. The variable http:*log-access-log-class* controls the class of log used. A variety of log formats are predefined.

ASCII Translation: The MCL HTTP stream now translates #\Return as #\Return #\Linefeed like other platforms. This corrects a bug with MIME multipart transmissions, and makes text files server from the MAC more manageable on other platforms.

Netscape Package: In preparation for the release of Netscape 2.0, the Netscape package has been renamed to Netscape1.1 and no longer has HTML3 as a nickname.

Server Push is now implemented for the Netscape 1.1N synthesis package by ns1.1:with-server-push-response. This complements client pull which is implemented by ns1.1:declare-refresh-rate. Choose Color Schemes illustrates server push, tables, and multipart MIME generation.

Access Control: In addition to secure subnets, the server now supports user authentication with passwords.

Email Interface: If you set smtp:*network-mail-host*, the server and response functions will be able to send mail using functions like www-utils:send-mail-from and www-utils:report-bug. Best results are obtained by providing alternate store-and-forward mailers on smtp:*store-and-forward-mail-hosts*. A simple SMTP package implements this mail sending facility in Lisp.

Server Interface: The server now has documentation on how to write response functions, and includes two interface specifications for accessing server state, CL-HTTP Server Interface 1.0 and Common Gateway Interface 1.1. Common Gateway Interface Standard 1.1.. Use the macro HTTP:WITH-CGI-ENVIRONMENT to make CGI variables available in response functions or form generation functions.

Image Maps: The server now exports image maps and supports both the NCSA and CERN file formats.

HTML 2.0 Conformance: The server's HTML generation facility fully conforms to HTML 2.0 with the upgrading of form processing in 0.5.0. Please report any divergence from the specification.

Netscape 1.1 HTML Extensions: The major Netscape 1.1 HTML extensions to HTML are implemented within the Netscape package. HTTP:USER-AGENT allows generation code to determine which client and version is being served.

Local Talk Operation: The server can run in a Local Talk Configuration for standalone o network service.

Clients: The server has been tested in MCL 3.0b1 with the following MAC clients: MacWeb 1.00A3.2, MacWeb.News 1.00A3d23d, Mac Mosaic 1.0.3, Mac Mosaic 2.0.0b7 without appreciable problems. UNIX Netscape 1.1N works better than MAC Netscape 1.1N with CL-HTTP. Netscape appears to get confused sometimes when it gets a 304 (conditional get code indicated data not modified).

Multithreaded Clients: MAC CL-HTTP is multithreaded in MCL 3.0, and so it can handle not just multiple simultaneous connections but also multiple connections from a single client like Netscape.

HTTP Thread Resource: Listening threads and HTTP server threads are resourced in order to reduce latency starting up threads and consing with heavy HTTP traffic. The number of threads defaults to HTTP:*NUMBER-OF-LISTENING-PROCESSES* . A keyword argument to HTTP:ENABLE-HTTP-SERVICE overrides this default.

Improved File Transfer Rates: The server now copies both ascii and binary files to HTTP transmission streams in blocks of buffer size., which defaults to HTTP:*HTTP-STREAM-BUFFER-SIZE* .

Arithmetic Operations Declared: Many arithmetic operations have been declared for faster server operation. Keep an eye out for any missing or erroneous declarations.

Lisp Machine Source Compatibility: The current MAC version is source compatible with the Lisp Machine version.

MAC Export Types: HTTP:EXPORT-URL now supports export types for a number of popular MAC file formats: :AIFF-AUDIO, :COMPRESSED-FILE, :EXCEL-FILE, :MAC-BINARY-FILE, :PDF-FILE, :PICT-IMAGE, :POWER-POINT-FILE, :QUICKTIME-VIDEO, :RTF-FILE, :STUFFIT-FILE, :TIFF-IMAGE, :WAV-AUDIO, :WORD-FILE. New export types can be defined for static, file-based data with HTTP:DEFINE-URL-EXPORT-TYPE.

Directory Export Types: HTTP:EXPORT-URL now supports an extensive variety of directory exports types, including single level and recursive exports. Additionally, :DIRECTORY will export all files for which pathname extension to export type mappings are defined, and recursively descend directories when :RECURSIVE-P is non-null. The variable HTTP:*AUTO-EXPORT* controls whether new files added to exported directories are exported on demand or not. Presently, URL-level security is not preserved for auto-exporting of new subdirectories, and so, new subdirectories should rely on manual export or global subnet security.

MCL 2.0.1 CLOS Method Combination Bug: A longstanding bug in CLOS method combination can cause trouble for CL-HTTP running in MCL 2.0.1. Digitool has provided a patch for MCL 2.0.1 that fixes the bug (not needed for MCL 3.0). MCL 2.0.1 users should load this patch prior to loading CL-HTTP. The patch can be found in in http;mcl;contributions;MCL-2-0-1-kernel-patches.hqx


John C. Mallery -- jcma@nospam.csail.mit.edu
M.I.T. Computer Science & Artificial Intelligence Laboratory