Extended Tcl (TclX) 7.5a ======================== IMPORTANT: ========== o Please read and comment on the POTENTIAL CHANGES section. o This release contains a patch to Tcl 7.5 beta 1. The patch, tcl.patch, must be applied and Tcl 7.5 recompiled before compiling TclX. This is to add functionality to the new Tcl I/O system. We are working with the Tcl team on resolving this (they are very helpful and the new I/O system is excellent). TclX 7.5 Beta 1 Release ======================== This is the first TclX beta release that is compatible with the Tcl 7.5 / Tk 4.1 beta line. Its is known to work with the Tcl/Tk beta 1 releases. This release contains mainly changes for compatibility with Tcl 7.5. Shared libraries are not currently built, so its not dynamically loadable out of the box. Eventually, this will be supported. No support is currently available for MS Windows or the MacIntosh. We are interested in supporting these platforms, but don't have the time or expertise to do it in the near future. If anyone is interested in working with us on these port, we would like to do it in the same manner as Tcl and Tk. Please contact us if you would like to help. We will handle merge changes into the source tree and making changes available. Please contact us at tcl-project@neosoft.com if you think you can help. POTENTIAL CHANGES: ================== We are looking at making some changes to TclX that we want input on. While none of these changes will break TclX scripts, they will affect either C code or the way TclX is installed. The following changes have been proposed: o Currently, the TclX runtime is independent of the Tcl/Tk runtimes. To use TclX you don't need to have the matching version of Tcl installed. This approach dates from the time with standard Tcl didn't have either a runtime or an install rule. We are contemplating changes that will make TclX more like other extensions, building on Tcl/Tk runtimes. Would such a change negatively impact anyone? o Dropping support for the tcl++.h include files and the class associated with it. This file is of limited usefulness to the C++ programmer, is missing a lot of new Tcl functions and has never been documented. Compiling a small amount of C++ code to go with this file causes a lot of portability problems. Is anyone dependent on tcl++.h? o If people use the master installation mode, please let us know. While we will continue to support it, we will may change the implementation. INTRODUCTION ============ Extended Tcl (TclX), is a set of extensions to Tcl 7.5, the Tool Command Language invented by Dr. John Ousterhout at the University of California at Berkeley. Tcl is a powerful, yet simple embeddable programming language. Extended Tcl is oriented towards Unix system programming tasks and large application development. Many additional interfaces to the Unix operating system are provided. It is upwardly compatible with Tcl 7.5. You take the Extended Tcl package, add it to Tcl 7.5, and from that you get Extended Tcl. (Tcl is not included in this distribution, obtain it from ftp.smli.com). Support is also included for building a Tk 4.0 wish shell (wishx) with the Extended Tcl command set. While this TclX distribution is tested with Tcl 7.5 and Tk 4.0, it will probably work with new versions of Tcl & Tk with little or no changes. Extended Tcl was designed and implemented by Karl Lehenbauer (karl@NeoSoft.com) and Mark Diekhans (markd@Grizzly.com), with help in the early stages from Peter da Silva (peter@NeoSoft.com). As with Berkeley Tcl, all of Extended Tcl is freely redistributable, including for commercial use and resale. Please read the file INSTALL carefully before building and installing Extended Tcl. NEW FEATURES IN TCLX 7.5a ========================= o Compatibility with Tcl 7.5 / Tk 4.1 alpha. FEATURES ADDED BY EXTENDED TCL ============================== Here is a summary of the features added by Extended Tcl. For more details on the commands and functionality provided by Extended Tcl, see the manual page man/TclX.man. o A shell, which provides an environment for developing and executing Tcl programs. o Advanced Tcl code library facility that is oriented towards building large applications. It is compatible with standard Tcl auto-loading. o General purpose commands which define new programming constructs, debugging and profiling facilities. o Unix access commands provide access to many Unix system calls, including process management. o File I/O commands provide added facilities for accessing and manipulating open files. o File scanning facility that provides awk-like functionality. o Extended list manipulation commands. o Keyed lists, a type of list that provides functionality similar to C structures. o Extended string and character manipulation commands. o Time and date manipulation and conversion commands. o Online help on Tcl, TclX and Tk commands. o A simple interface for accessing and building TCP/IP based servers. o X/PG based internationalization commands. ON-LINE HELP ============ There is a help system included with Extended Tcl. It contains some documentation on every command in Berkeley Tcl, Extended Tcl and Tk. You can invoke it interactively from within Extended Tcl by typing "help". Once you bring Tcl up and have gotten it to pass all the tests, try typing "help help" to learn how to use help. There is also a Tk based help program "tclhelp". MANUAL PAGES ============ Man pages in nroff/troff format are provided for all of Tcl and the extensions in the directory tclX7.5a/man. Start with the TclX.man manual. EXTENDED TCL VERSION NAMING =========================== Extended Tcl takes its version number from the corresponding version of Berkeley (Ousterhout) Tcl upon which it is based, with the addition of a trailing letter in case there are multiple releases of Extended Tcl within a single release of Berkeley Tcl. This release is TclX 7.5a. INTERFACING TCL AND C++ ======================= C++ programmers can include the file "tcl++.h" to define C++ classes that can be used to access a Tcl interpreter. This is based on Tcl C++ classes originally developed by Parag Patel. The files src/tclXAppInit.c and tksrc/tkXAppInit.c will compile under both C and C++. PACKAGE LIBRARIES ================= Package Libraries are a Tcl source code management tool included in this release. Package libraries allow you to group Tcl procedures into logical bundles and create single files, libraries, that contain multiple packages. The package code provides a low-overhead means of automatically demand-loading a package on the first attempt to execute one of the procedures defined within it. As such, package libraries provide a mechanism to accommodate the creation of Tcl applications and libraries of a substantial size. The TclX library mechanism is a super-set of the mechanism provided with standard Tcl. LINKING TCL APPLICATIONS ======================== To build a TclX based application containing C code, start with either: src/tclXAppInit.c for just TclX or src/tkXAppInit.c for TclX & Tk and add your application initialization. These files contain an application specific initialization function as well as "main". There are comments in the code to guide you. For example: cc tclXAppInit.o mystuff.a libtclx.a libtcl.a ${TCLXLIBS} -o myapp cc tkXAppInit.o mystuff.a libtkx.a libtk.a libtclx.a libtcl.a ${TKXLIBS} \ -o myapp The *AppInit.c files are also installed in the src directory under the TclX/TkX master directories. The files tclxlibs.mk and tkxlibs.mk define system libraries that the TclX configure script thinks you should use for linking programs. These file are in a format that can be included from a make file. IMPORTANT NOTE: libtclx.a must be specified on the link command line before libtcl.a. If the order is reversed, incorrect command line parsing code will be used. DYNAMIC LOADING OF TCLX ======================== Instead of linking a custom application based on the TclX shell, it is possible to dynamic load it into an application based on another shell. SUPPORT FOR EXTENDED TCL ======================== We are committed to providing continuing support for Extended Tcl. Please send questions, bug reports, and bug fixes to: tcl-project@NeoSoft.com WHERE TO GET IT =============== Tcl & Tk is available via anonymous ftp from: ftp.cs.berkeley.edu:/ucb/tcl/[tcl7.5.tar.Z tk4.1.tar.Z] or ftp.neosoft.com:/pub/tcl/distrib/[tcl7.5.tar.gz tk4.1.tar.gz] or ftp.uu.net:languages/tcl/[tcl7.5.tar.Z tk4.1.tar.Z] Extended Tcl 7.5a can be downloaded by anonymous FTP from: ftp.neosoft.com:/pub/tcl/distrib/tclX7.5a.tar.gz or ftp.aud.alcatel.com:tcl/extensions/tclX7.5a.tar.gz A contributed sources archive resides on ftp.aud.alcatel.com and is mirrored on ftp.ibp.fr for our friends in Europe. An Frequently Asked Questions (FAQ) document exists in this archive. Remember to mail Extended Tcl problems and questions to tcl-project@NeoSoft.com not Dr. John Ousterhout. THANKS ====== A big thanks to all of the Extended Tcl users from all over the world who have helped us debug problems and given us valuable suggestions. A special thanks to John Ousterhout for Tcl, Tk and all the support he has given us. NEOSOFT TCL CONSULTING ====================== NeoSoft, co-developers of Extended Tcl, provides commercial Tcl releases, support, training and consulting. NeoSoft can be reached by sending electronic mail to info@NeoSoft.com or by phoning +1 713 968-5800.