IMPORTANT NOTE:  This package has been customized for Linux to support
the desired directory structure and the automatic generation of shared
libraries.  See the README.linux file for details.  If you do not plan
on compiling this package under Linux, you should get an unmodified
version from your favorite Tcl/Tk archive site.

                           Extended Tcl (TclX) 7.3b
                           ========================

INTRODUCTION
============

    Extended Tcl (TclX), is a set of extensions to Tcl 7.3, the Tool Command
Language invented by Dr. John Ousterhout of 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.3.  You take the
Extended Tcl package, add it to Tcl 7.3, and from that you get Extended Tcl.
(Berkeley Tcl is not included in this distribution, obtain it from
ftp.cs.berkeley.edu).

   Support is also included for building a Tk 3.6 wish shell (wishx)
with the Extended Tcl command set.

   While this TclX distribution is tested with Tcl 7.3 and Tk 3.6, 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.


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 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.3b/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.3b.

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/tclXmain.c
and
        tksrc/tkXmain.c

will compile under both C and C++.  If your have a C++ compiler that
requires the main to be compiled with C++ (g++ does not have this
restriction), use these files renamed to have the correct suffix for
C++ (usually .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:

        tclmaster/src/tclXAppInit.c for just TclX
or
        tkmaster/src/tkXAppInit.c for TclX & Tk

and add your application initialization.  There are comments in the
code to guide you. The "main" object file is already in the
libraries, all you have to do is link a customized tclXAppInit.o or
tkXAppInit.o file with your application and the Tcl libraries.  For
example:

  cc tclXAppInit.o mystuff.a libtclx.a libtcl.a ${SYSLIBS} -o myapp

  cc tkXAppInit.o mystuff.a libtkx.a libtk.a libtclx.a libtcl.a ${SYSLIBS} \
     -o myapp

Each of those directories has a file SYSLIBS that contains the
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.

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.3.tar.Z tk3.6.tar.Z]
or
   ftp.neosoft.com:/pub/tcl/distrib/[tcl7.3.tar.gz tk3.6.tar.gz]
or
   ftp.uu.net:languages/tcl/[tcl7.3.tar.Z tk3.6.tar.Z]

Extended Tcl 7.3b can be downloaded by anonymous FTP from:

   ftp.neosoft.com:/pub/tcl/distrib/tclX7.3b.tar.gz
or
   harbor.ecn.purdue.edu:tcl/extensions/tclX7.3b.tar.gz

A contributed sources archive resides on harbor.ecn.purdue.edu 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 684 5969.
