About the "plus"-patch for Tk8.0

This patch contains the following enhancements:

Shared library support

If the option "--enable-shared" is given to the configure script both the
static and shared libraries are created. Also in all directories where
shared libraries are a pkgIndex.tcl file is created which contains
references to all functions in these shared libraries.

Because of the existance of pkgIndex.tcl files, the "package require"
command is enough to load the shared libraries into tclsh. For example:

	>tclsh8.0
	%package require Tk

This single command is enough to load libtk8.0.so  dynamically. The main
window "." will appear and all tk commands are available. For some systems
(e.g. SunOS4) this will not yet work in all situations, but usually the
cause of such a failure is because of your system doesn't have a shared
X11 library.

Standalone Applications

In addition to Tcl_Init() and Tk_Init (or Xxx_Init in general) there are now
additional functions Tcl_InitStandAlone() and Tk_InitStandAlone() (or
Xxx_InitStandAlone in general). These perform the same function, only the
Tcl and Tk libraries are compiled into the executable. This makes the
executable larger, of course, but they will run on any system no matter if
Tcl/Tk (or blt or Tix) is installed or not. Included is a program tcl2c,
which translates tcl scripts into C source code. Compiling this code and
linking with the necessary static libraries (it doesn't work with shared
libraries) results in a standalone executable.

Event Loop

tclsh is now fully event-driven. That means that after the script is
finished the application will start an event-loop which is compatible with
the Tk event-loop. The application will end as soon as there are no active
event handlers any more. By default, all event handlers will be passive,
except the console and the X11 handler. So, if there is no console and no
X11-handler the application will still end immediately. As a result, this is
fully upwards compatible with the official Tcl8.0b2/Tk8.0b2

This is implemented by defining the flag TCL_ACTIVE, which is from the same
type as TCL_READABLE, TCL_WRITEABLE and TCL_EXCEPTION. If this flag is used
in the Tcl_CreateFileHandler() or Tcl_CreateChannelHandler() functions, this
is a request to the application to continue handling events as long as these
event handlers are active. There is also a new option "active" to the
fileevent command. This option is equivalent to "readable", only the
application will not exit as long as the file is not closed. For example:

        #!/usr/local/bin/tclsh8.0
        set f [open "test.tcl" r]
        fconfigure $f -blocking 0
        fileevent $f active {
            set num [gets $f line]
            puts stdout "$num: \"$line\""
            if {[eof $f]} {
                close $f
            }
        }

C++-support

The following files are changed such that they now can be compiled by
any C or C++ compiler (both K&R and ANSI).

Tcl
     tclAppInit.c
     tclTest.c
     tclUnixTest.c
     pkga.c
     pkgb.c
     pkgc.c
     pkgd.c
     pkge.c
     pkgf.c

Tk
     tkAppInit.c
     tkTest.c
     tkSquare.c

Loadable extensions

If shared libraries are enabled, the executables tcltest and tktest are no
longer created for testing purposes. In stead, loadable libraries Tcltest.so,
Objtest.so, Unixtest.so, Tktest.so and Tksquare.so are created which only
contain the additional test functions. These loadable libraries will be
used to test tclsh and wish.

----------------------------------------------------------------------------
 The "plus"-patch is implemented by:

     Jan Nijtmans
     CMG (Computer Management Group) Arnhem B.V.
     email: nijtmans@worldaccess.nl (private)
            Jan.Nijtmans@cmg.nl (work)
     url: http://www.worldaccess.nl/~nijtmans/
