Tcl 8.0a2/Tk 8.0a2 Release Announcement January 24, 1997 John Ousterhout Sun Microsystems, Inc. john.ousterhout@eng.sun.com This message is to announce the 8.0a2 releases of the Tcl scripting language and the Tk toolkit. These are bug-fix releases: they fix most of the major bugs in the 8.0a1 releases without introducing any major new features. The "a2" in the release names indicates that these are the second "alpha" releases. The "alpha" means that the releases are likely to have bugs and are not yet feature-complete: we may add new features or change some of the existing features before the final 8.0 releases. Please let us know immediately about any problems you uncover with these releases. Where to get the new releases: ------------------------------ Tcl 8.0a2 and Tk 8.0a2 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.0a2.tar.gz and tk8.0a2.tar.gz contain the unified source releases for all platforms (there are also .Z and .zip versions of these files). - Easy-to-install binary releases for some Unix platforms (e.g., Solaris and SunOS) may be purchased at the Sun Labs Tcl/Tk Shop: http://www.infohaus.com/access/by-seller/Sun_Labs_TclTk_Shop - tcl80a2.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.0a2.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: --------------------------- There is a set of Web pages on Tcl and Tk maintained by the Tcl/Tk group at Sun Laboratories. They can be accessed via the following URL: http://www.sunlabs.com/research/tcl Changes in Tcl 8.0a2: --------------------- Here is a list of all the changes in Tcl 8.0a2, relative to Tcl 8.0a1. This information is taken from the "changes" file in the distribution. 1/7/97 (bug fix) Under Windows, "file stat c:" was returning error instead of stat for current dir on c: drive. 1/10/97 (new feature) Added Tcl_GetIndexFromObj procedure for quick lookups of keyword arguments. (JO) 1/12/97 (new feature) Serial IO channel drivers for Windows and Unix, available by using Tcl open command to open pseudo-files like "com1:" or "/dev/ttya". New option to Tcl fconfigure command for serial files: "-mode baud,parity,data,stop" to specify baud rate, parity, data bits, and stop bits. Serial IO is not yet available on Mac. 1/16/97 (feature change) Restored the Tcl7.x "two level substitution semantics" for expressions. Expressions not enclosed in braces are implemented, in general, by calling the expr command procedure (Tcl_ExprObjCmd) at runtime after the Tcl interpreter has already done a first round of substitutions. This is slow (about Tcl7.x speed) because new code for the expression is generally compiled each time. However, if the expression has only variable substitutions (and not command substitutions), "optimistic" fast code is generated inline. This inline code will fail if a second round of substitutions is needed (i.e., if the value of a substituted variable itself requires more substitutions). The optimistic code will catch the error and back off to call the slower but guaranteed correct expr command procedure. (BL) 1/16/97 (feature improvements) Added Tcl_ExprLongObj and Tcl_ExprDoubleObj to round out expression-related procedures. (BL) 1/16/97 (feature change) Under Windows, at startup the environment variables "path", "comspec", and "windir" in any capitalization are converted automatically to upper case. The PATH variable could be spelled as path, Path, PaTh, etc. and it makes programming rather annoying. All other environment variables are left alone. (CS) 1/20/97 (new features) Rewrote the "lsort" command: - The new version is based on reentrant merge sort code provided by Richard Hipp, so it eliminates the reentrancy and stability problems with the old qsort-based implementation. - The new version supports a -dictionary option for sorting, and it also supports a -index option for sorting lists using one element for comparison. - The new version is an object command, so it works well with the Tcl compiler, especially in conjunction with the new -index option. When the -index option is used, this version of lsort is more than 100 times faster than the Tcl 7.6 lsort, which had to use the -command option to get the same effect. (JO) 1/20/97 (feature improvements) Added the improved debugging support for Tcl objects prototyped by Karl Lehenbauer . If TCL_MEM_DEBUG is defined, the object creation calls use Tcl_DbCkalloc directly in order to record the caller's source file name and line number. (BL) 1/21/97 (removed feature) Desupported the tcl_precision variable: if set, it is ignored. Tcl now uses the full 17 digits of precision when converting real numbers to strings (with the new object system real numbers are rarely converted to strings so there is no efficiency disadvantage to printing all 17 digits; the new scheme improves accuracy and simplifies several APIs). (JO) *** POTENTIAL INCOMPATIBILITY *** 1/21/97 (feature change) Removed the "interp" argument for the procedures Tcl_GetStringFromObj, Tcl_StringObjAppend, and Tcl_StringObjAppendObj. Also removed the "interp" argument for the updateStringProc procedure in Tcl_ObjType structures. With the tcl_precision changes above, these are no longer needed. (JO) *** POTENTIAL INCOMPATIBILITY with Tcl 8.0a1, but not with Tcl 7.6 *** 1/22/97 (bug fix) Fixed http.tcl so that http_reset does not result in an extra call to the command callback. In addition, if the transaction gets a premature eof, the state(status) is "eof", not "ok". (BW) Changes in Tk 8.0a1: -------------------- Here is a list of all the changes in Tk 8.0a2, relative to Tk 8.0a1. This information is taken from the "changes" file in the distribution. 12/23/96 (bug fix) Fixed two menu bugs: - Menus could get stacked below other windows so that they weren't visible when posted (especially under olvwm and fvwm). - Under olvwm if you pressed button 1 over an entry in a new-style menubar, the menu didn't appear until you moved the mouse slightly. (JO) 1/6/97 (bug fix) Focus could accidentally get grabbed by an application away from the rightful focus owner if the focus recently changed from one application to another. (JO) 1/6/97 (bug fix) Under Windows, the console was appearing even for non-interactive applications. This was a side effect of a general problem with the wm state of windows that were being mapped for the first time. (SS) 1/6/97 (bug fix) Under Windows, the initialization code was not looking in the right directory for the Tk libraries when the program being run was not in the Tcl installation heirarchy. (SS) 1/8/97 (bug fix) Under Windows, the windows were not being unmapped properly, which led to strange packer behavior. (SS) 1/8/97 (bug fix) The "winfo containing" command (and the Tk_CoordsToWindow procedure) didn't work properly on Unix in the presence of embedding or menubars. (JO) 1/15/97 (bug fix) Invoking "destroy ." as the command from a menu would cause Tk to crash because TkMainInfo was freed before menu released its resources. This bug had already been fixed for scrollbars and buttons. (CS) 1/15/97 (bug fix) Tk is now working under Win32s again, including Win32 version 1.25. Fixed separate problems in fonts and dialogs. (CS) 1/15/97 (feature change) Under Windows, font sizes are now specified in points, not pixels. The mapping between pointsize and pixels depends on Windows having accurate metrics for the monitor (plug&play helps). Font metrics are still reported in pixels. (CS) 1/21/97 (bug fix) Grid no longer reports rows or columns "out of range" when requesting their constraints. (SAU) 1/21/97 (bug fix) Fixed some window manager related bugs on the Macintosh. Now better support global grabs. (RJ) 1/21/97 (bug fix) For Windows: Fixed problems with canvas items that used end caps. Fixed arc implementation to more closely approximate X. Stippling now works properly on fat lines. (SS) 1/21/97 (bug fix) Small interlaced GIF images were not properly decoded. (SS) 1/21/97 (bug fix) More changes to image code to try to handle 16-bit displays properly under Windows. (SS) 1/21/97 (bug fix) Numerous display bugs on Unix and Macintosh are now fixed. Numerous binding problems for menubars under Unix are now fixed. Deletion of menu separators under Windows is now fixed. (SRP) 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: Brian Lewis PC port (native look and feel etc.): Scott Stanton Mac port (native look and feel etc.): Ray Johnson 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 Standard dialogs: Ken Corey