The current version is 3.5.1 May 27, 2004.
What is the Tcl Web Server? It is a pure-Tcl implementation of an HTTP protocol server. It runs as a script on top of a vanilla Tcl interpreter. Early versions worked with Tcl versions 7.5 and higher, but the latest requires Tcl 8.*.
How does it work? The Tcl I/O system provides event-driven I/O facilities and a primitive that copies data from one I/O channel to another. The server does the HTTP protocol handling and then simply directs the I/O system to blast data from disk to a network socket. The Tcl runtime handles all the I/O in a non-blocking fashion so the server easily multiplexes multiple clients without the complexities of threading. The server has suprisingly good performance because of Tcl's sophisticated I/O system.
Why is it interesting? The HTTP protocol is perhaps the least interesting aspect of the server. The cool stuff is the framework for generating dynamic page content, and the support for embedding the server directly into legacy applications to "web-enable" them.
From a technical standpoint, a Tcl-based web server is ideal for embedding because Tcl was designed to support embedding into other applications. The interpreted nature of Tcl allows dynamic reconfiguration of the server. Once the core interface between the web server and the hosting application is defined, it is possible to manage the web server, upload Safe-Tcl control scripts, download logging information, and otherwise debug the Tcl part of the application without restarting the hosting application.
How do you use it?I have started to hear of many uses of Tcl Httpd. Let us know about your use so we can list sample applications.
As a stand-alone application, the Tcl web server supports these basic server features:
The server architecture lets the application plug into the URL processing path at several locations. Many standard modules are provided, and you can mix and match modules and provide your own in order to build a fully custom server. These are the hook points:
See also the TclHttpd SourceForge project for file distributions.
The TclHttpd Starkit distribution includes the server code, the required TclLib modules, and a sample document tree in a single file for easy deployment. Just run the starkit with the TclKit interpreter. It takes all the same command line arguments as bin/httpd.tcl. Using the sdx tool that wraps and unwraps Starkits, you can assemble your own custom TclHttpd application Starkit.
About SSLFor https/SSL service, you need to use the TLS extension by Matt Newman and either OpenSSL or the BSAFE libraries. You need TLS 1.4 and Tcl 8.3.2 for reliable performance.
I collect patches and enhancements to the server. If you use the server and fix it or add something cool you want to share, please let us know at [email protected].
The current sources are visible at the netCVS repository.
You can benefit from some of the advanced features like the site
wide consistent design exhibited on this site by using the Tcl
Template mechanism, libraries and standalone converter: alpha release
or tml10a2-src.zip). If
this standalone support for automatic html page generation interests
you, contact [email protected].