Tcl 8.0b1/Tk 8.0b1 Release Announcement May 27, 1997 John Ousterhout Sun Microsystems, Inc. john.ousterhout@eng.sun.com This message is to announce the 8.0b1 releases of the Tcl scripting language and the Tk toolkit. These releases include several major new features such as namespaces, binary I/O, and a random number generator. There are also numerous bug fixes. The "b1" in the release names indicates that these are the first beta releases. "Beta" means that we consider the releases to be feature- complete: we won't make any changes to interfaces, either at the level of Tcl commands or C APIs, unless we find major problems with the current interfaces. These releases are likely to have bugs (that's why they're still beta instead of final). Please let us know immediately about any problems you uncover with the releases. Where to get the new releases: ------------------------------ Tcl 8.0b1 and Tk 8.0b1 are currently available by public FTP from ftp.sunlabs.com in the directory /pub/tcl. The releases should appear on the usual mirror sites within a few days. The following files are available: - tcl8.0b1.tar.gz and tk8.0b1.tar.gz contain the unified source releases for all platforms (there are also .Z and .zip versions of these files). - tcl80b1.exe contains a binary release for the PC. This file contains compiled versions of Tcl, Tk, tclsh, and wish, along with libraries, demos, and manual pages (but no sources). The file is a self-extracting executable (run it and it installs everything). - mactk8.0b1.sea.hqx contains a binary release for the Mac. The file is in binhex format, which is understood by Fetch, StuffIt, and other Mac utilities. The unpacked file is a self-installing archive: double-click on it and it will create a folder containing everything you need to run Tcl and Tk. - Macintosh sources are also available in the "mac" subdirectory of the release area. See the README file in that directory for details. For additional information: --------------------------- See the Web site for SunScript, the new Sun business group dedicated to Tcl and Tk. This site contains a wide variety of information about Tcl/Tk in general, the free Tcl and Tk distributions, and the SunScript products such as SpecTcl and the Tcl plugin. Visit the following URL: http://sunscript.sun.com Changes in Tcl 8.0b1: --------------------- Here is a summary of the most important feature changes in Tcl 8.0b1, relative to Tcl 8.0a2. There are also many bug fixes in this release, which aren't listed below. For a summary of the major feature changes since Tcl 7.6, see the README file in the distribution. For a complete list of all changes, see the file "changes" in the source distribution. 1. There is a new namespace mechanism based on the 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. 2. There is a new "binary" command for manipulating binary strings. The "puts", "gets", and "read" commands now operate correctly on binary data. Added tcl_platform(byteOrder) variable to identify the native byte order for the current host. 3. There is a new "fcopy" command to copy data between channels. This replaces and improves upon the old command "unsupported0". 4. There are new "rand()" and "srand()" math functions in the "expr" command for random number generation. 5. There is a new "file attributes" command 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. 6. The "lsort" command now allows "end" as the value of the -index option. 7. Added -global flag to "interp invokehidden" command. 8. Changed how 2-digit years are parsed by the "clock" command to handle year 2000 issues better (years 00-38 are treated as 2000-2038 instead of 1900-1938). 9. The notifier has been completely rewritten (again) to 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 (see the "changes" file and manual entries for details). 10. There are several changes in the C APIs related to objects: - Eliminated Tcl_StringObjAppend and Tcl_StringObjAppendObj procedures, replaced them with Tcl_AppendToObj and Tcl_AppendStringsToObj procedures. - Added new procedures Tcl_SetObjLength, Tcl_WrongNumArgs, Tcl_SetListObj, Tcl_GetsObj, Tcl_CreateAliasObj, Tcl_GetAliasObj. - Added support for both int and long integer objects. Added new procedures Tcl_NewLongObj, Tcl_GetLongFromObj, and Tcl_SetLongFromObj. - Renamed Tcl_GetAllObjTypes to Tcl_AppendAllObjTypes. - Removed the nameLength arg from Tcl_CreateObjCommand (command names can't contain null characters). - Added CONST keyword to objv declaration for Tcl_ObjCmdProc; this ensures that command procedures don't modify their arguments. - Changed the name of the TCL_PART1_NOT_PARSED flag to TCL_PARSE_PART1. - Newly created objects (e.g. those returned by procedures such as TclNewObj and Tcl_NewIntObj) now have a reference count of 0 instead of 1. - Modified result handling to try to maintain consistency between the old string result and the new object result. This now works in almost all cases, so that you can use the string and object results interchangeably. The procedure Tcl_ResetObjResult has been removed, and a new procedure Tcl_GetStringResult has been added. 11. The Tcl_File interfaces have been removed. Tcl_CreateFileHandler and Tcl_DeleteFileHandler now take Unix fd's and are only supported on the Unix platform. Tcl_GetChannelFile has been replaced with Tcl_GetChannelHandle. Tcl_MakeFileChannel now takes a platform- specific file handle. Changes in Tk 8.0b1: -------------------- Here is a summary of the most important feature changes in Tcl 8.0b1, relative to Tk 8.0a2. There are also many bug fixes in this release, which aren't listed below. For a summary of the major feature changes since Tk 4.2, see the README file in the distribution. For a complete list of all changes, see the file "changes" in the source distribution. 1. Various menu improvements: - Added "-columnbreak" option to menu entries; this makes multi-column menus possible. - Added "-hidemargin" menu option, which is needed when creating multi-column palette menus. - Added the ability to manipulate the Apple and Help menus on the Macintosh; the system menu on Windows; and to have a right justified Help menu on Unix. See the documentation in menu.n for more details. - Added a "-direction" option to menubuttons, which controls where the menu pops up relative to the button. - Menus now issue the virtual event <> whenever the current item changes. Applications can use this to generate help messages. - The -transient field is no longer supported. There is now a -type tofield which is used to achieve the same purpose. 2. The photo image mechanism now uses Tcl_Channels instead of FILEs in order to make it portable. FILEs are no longer used anywhere in Tk. 3. Added new "gray75" bitmap, fixed "gray25" bitmap to really be 25% on (due to an ancient mistake, it had been only 12% on). 4. Improved fonts to allow sizes to be specified in either pixels or points. Added "tk scaling" command to control the mapping between these two. Fonts are also much more forgiving about names now (many names that would have generated errors before will work now). 5. In the "coords" canvas command, polygons now return only the points that were explicitly specified when the polygon was created (they used to return an extra point if the polygon wasn't originally closed). Credits: -------- Everyone in the Sun Tcl/Tk team contributed to the Tcl 8.0 and Tk 8.0 releases. Here is a list of a few of the most important contributions and the people who made them: Bytecode compiler, namespaces: Brian Lewis PC port (native look and feel etc.): Scott Stanton Mac port (native look and feel etc.): Ray Johnson, Jim Ingham Font mechanism: Colin Stevens Native menus: Syd Polk, John Ousterhout Safe-Tcl improvements: Jacob Levy, Brent Welch Application embedding: John Ousterhout, Scott Stanton, Ray Johnson Http library: Brent Welch Text images, gridder support: Stephen Uhler Binary I/O, fcopy: Scott Stanton