Tcl8.0p2 (Skunkware98)
These packages contain binary runtimes (SCO OpenServer)
and sources and documentation for
Tcl
, an embeddable extendable scripting language.
The versions here correspond to release 8.0p2, the second
(and probably final) patch release for Tcl 8.0 released June 30 1997.
Tcl 8.0 is a major new release that replaces the
core of the interpreter with an on-the-fly bytecode compiler to improve
execution speed. It also includes several other new features such as
namespaces and binary I/O, plus many bug fixes. The compiler introduces
a few incompatibilities that may affect existing Tcl scripts; the
incompatibilities are relatively obscure but may require modifications
to some old scripts before they can run with this version. The compiler
introduces many new C-level APIs, but the old APIs are still supported.
INSTALL WARNINGS
If the binary packages for this are installed after
any packages for Tcl7.6, This installation will overwrite
- The man pages
- The Header files
for Tcl7.6. This shouldn't be a great problem for documentation
(8.00 is upwards compatible) but may be a
an issue if you need the 7.6 header files for building extensions.
To avoid these problems if you already have tcl7.6 installed
you should copy the tcl header files and man pages
for Tcl7.6 to somehere other than the default
/usr/local{include, man} locations before installing Tcl8.0
Summary of changes from tcl7.6
Here are the most significant changes to the Unix version in Tcl 8.0.
In addition to these changes, there are several smaller changes and
bug fixes. See the file "changes" in the source package
for a complete list of all changes.
- Bytecode compiler. The core of the Tcl interpreter has been
replaced with an on-the-fly compiler that translates Tcl scripts to
byte codes; a new interpreter then executes the byte codes.
We have not yet
converted all of Tcl to take full advantage of the compiler and
objects and have not converted any of Tk yet, but even so you
should see speedups of 2-3x on many programs and you may see
speedups as much as 10-20x in some cases (such as code that
manipulates long lists).
The compiler introduces only a few minor changes
at the level of Tcl scripts, but it introduces many new C APIs for
managing objects. See, for example, the manual entries doc/*Obj*.3.
- Namespaces. There is a new namespace mechanism based on the
namespace implementation by Michael McLennan of Lucent Technologies.
This includes new "namespace" and "variable" commands. There are
many new C APIs associated with namespaces, but they will not be
exported until Tcl 8.1.
- Binary I/O. The new object system in Tcl 8.0 supports binary
strings (internally, strings are counted in addition to being null
terminated). There is a new "binary" command for inserting and
extracting data to/from binary strings. Commands such as "puts",
"gets", and "read" commands now operate correctly on binary data.
There is a new variable tcl_platform(byteOrder) to identify the
native byte order for the current host.
- Random numbers. The "expr" command now contains a random number
generator, which can be accessed via the "rand()" and "srand()" math
functions.
- Safe-Tcl enhancements. There is a new "hidden command"
mechanism, implemented with the Tcl commands "interp hide", "interp
expose", "interp invokehidden", and "interp hidden" and the C APIs
Tcl_HideCommand and Tcl_ExposeCommand. There is now support for
loadable security policies, including new library procedures such as
tcl_safeCreateInterp.
- There is a new command "file attributes" for getting and setting
things like permissions and owner. There is also a new command
"file nativename" for getting back the platform-specific name for a
particular file.
- There is a new "fcopy" command to copy data between channels.
This replaces and improves upon the not-so-secret unsupported old
command "unsupported0".
- There is a new package "http" for doing GET, POST, and HEAD
requests via the HTTP/1.0 protocol. See the manual entry http.n
for details.
- There are new library procedures for finding word breaks in
strings. See the manual entry library.n for details.
- There are new C APIs Tcl_Finalize (for cleaning up before
unloading the Tcl DLL) and Tcl_Ungets for pushing bytes back into a
channel's input buffer.
- Tcl now supports serial I/O devices on Windows and Unix, with a
new fconfigure -mode option. The Windows driver does not yet
support event-driven I/O.
- The lsort command has new options -dictionary and -index. The
-index option allows for very rapid sorting based on an element
of a list.
- The event notifier has been completely rewritten (again). It
should now allow Tcl to use an external event loop (like Motif's)
when it is embedded in other applications. No script-level
interfaces have changed, but many of the C APIs have.
Tcl 8.0 introduces the following incompatibilities that may affect Tcl
scripts that worked under Tcl 7.6 and earlier releases:
- Variable and command names may not include the character sequence
"::" anymore: this sequence is now used as a namespace separator.
- The semantics of some Tcl commands have been changed slightly to
maximize performance under the compiler. These incompatibilities
are documented on the Web so that we can keep the list up-to-date.
See the URL http://www.sunlabs.com/research/tcl/compiler.html.
- 2-digit years are now parsed differently by the "clock" command
to handle year 2000 issues better (years 00-38 are treated as
2000-2038 instead of 1900-1938).
- The old Macintosh commands "cp", "mkdir", "mv", "rm", and "rmdir"
are no longer supported; all of these features are now available on
all platforms via the "file" command.
- Support for the variable tcl_precision is mostly removed; when
real values are converted back to strings, the full 17 digits of
precision are always used.
- The C APIs associated with the notifier have changed substantially.
- The procedures Tcl_CreateModalTimeout and Tcl_DeleteModalTimeout
have been removed.
- Tcl_CreateFileHandler and Tcl_DeleteFileHandler now take Unix
fd's and are only supported on the Unix platform
- The C APIs for creating channel drivers have changed as part of
the new notifier implementation. The Tcl_File interfaces have been
removed. Tcl_GetChannelFile has been replaced with
Tcl_GetChannelHandle. Tcl_MakeFileChannel now takes a platform-
specific file handle. Tcl_DriverGetOptionProc procedures now take
an additional interp argument.
Info Resources
Skunkware 98