Tcl Distributed Programming (Tcl-DP) (Version 3.3beta1; June 20, 1995) Brian C. Smith Department of Computer Science Cornell University Lawrence A. Rowe Computer Science Division-EECS University of California at Berkeley This directory contains a freely distributable extension to Tcl/Tk called Tcl Distributed Programming (Tcl-DP). Tcl-DP adds TCP, UDP, and IP-multicast connection management, remote procedure call (RPC), distributed object protocols, and a name server to Tcl/Tk. A C interface to the RPC primitives is also provided. Unlike the "send" command of Tk, Tcl-DP does not require that Tcl/Tk processes that want to communicate share an X server because Tcl-DP is built directly upon TCP/IP. BACKGROUND Tcl stands for the Tool Command Language, a freely distributable, embeddable scripting language package. Tk is an freely distributable X windows interface toolkit and widget library implemented by a collection of new commands added to Tcl. Information about Tcl/Tk is available by anonymous ftp from sprite.berkeley.edu [128.32.150.27]. Tcl-DP was originally developed for Tcl 6.5 and Tk 3.0. Tcl-DP Version 3.3 is compatible with Tcl 7.3 and Tk 3.6. The next version (3.4) will be compatible with Tcl 7.4 and Tk 4.0. This distribution contains the source code for Tcl-DP, man pages that describe the commands, and several examples that illustrate how to use Tcl-DP to build simple distributed applications. Tcl-DP is available by anonymous ftp from mm-ftp.cs.berkeley.edu [128.32.149.157] in the /pub/multimedia/Tcl-DP directory and from ftp.cs.cornell.edu [128.84.154.10] in the /pub/tcl-dp directory. In the examples subdirectory, several sample applications are supplied that use Tcl-DP. As you can see from the examples, the distributed programming mechanisms of Tcl-DP are very simple. A dp_RPC command, for example, sends a Tcl command to a remote process, which evaluates the command in the destination Tcl interpreter and returns the result as the value of the dp_RPC command. The dplite subdirectory contains several modified Tk 3.6 source code files that allows Tcl-DP to be compiled and linked without X11. This results in a significantly smaller executable and makes the port to other operating systems easier. COMPILING/USING TCL-DP To compile Tcl-DP: +) If you do not already have Tcl 7.3 and Tk 3.6, get a copy and follow the instructions to build the system. Tcl-DP 3.3 may not work with earlier versions of Tcl/Tk. Although not required, we recommend that you place tcl-dp3.3 in a sibling directory to tcl7.3 and tk3.6, and then make a symlink from tcl-dp3.3 to tcl-dp. +) Follow the instructions in the INSTALL file in this directory. To learn how to use Tcl-DP: +) Read the README file in the examples subdirectory and play with the example applications. +) Read the Tcl-DP man page (Tcl-DP.l), and the other man pages in the doc subdirectory. To report bugs, bug fixes, descriptions of interesting Tcl-DP applications, and suggested improvements: +) Send email to tcl-dp@roger-rabbit.CS.Berkeley.EDU or tcl-dp-bugs@roger-rabbit.CS.Berkeley.EDU or +) Post an article in the comp.lang.tcl newsgroup. We extend our thanks to everyone who helped to create, debug, and distribute this software. Although there are too many people to mention at this point, the following people deserve special attention: John Ousterhout, creator of Tcl/Tk; Pekka Nikander, creator of tcpConnect; Tim MacKenzie, creator of tclRawTCP; Lou Salkind, ported Tcl-DP to Tcl 7.0/Tk 3.3 R Lindsay Todd, developed security mechanism Peter Liu, developed extended name server code Ulla Bartsich, integrated many changes into Tcl-DP 3.3 Mike Grafton, wrote extensive test suites for Tcl-DP Jon Knight, wrote IP-multicast extensions to Tcl-DP