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

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.

  1. 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.
  2. 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.
  3. 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.
  4. Random numbers. The "expr" command now contains a random number generator, which can be accessed via the "rand()" and "srand()" math functions.
  5. 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.
  6. 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.
  7. There is a new "fcopy" command to copy data between channels. This replaces and improves upon the not-so-secret unsupported old command "unsupported0".
  8. 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.
  9. There are new library procedures for finding word breaks in strings. See the manual entry library.n for details.
  10. 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.
  11. 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.
  12. The lsort command has new options -dictionary and -index. The -index option allows for very rapid sorting based on an element of a list.
  13. 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:
  1. Variable and command names may not include the character sequence "::" anymore: this sequence is now used as a namespace separator.
  2. 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.
  3. 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).
  4. 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.
  5. 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.
  6. The C APIs associated with the notifier have changed substantially.
  7. The procedures Tcl_CreateModalTimeout and Tcl_DeleteModalTimeout have been removed.
  8. Tcl_CreateFileHandler and Tcl_DeleteFileHandler now take Unix fd's and are only supported on the Unix platform
  9. 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