Tcl 8.0p1/Tk 8.0p1 Release Announcement November 7, 1997 John Ousterhout Sun Microsystems, Inc. john.ousterhout@eng.sun.com This message is to announce the 8.0p1 releases of the Tcl scripting language and the Tk toolkit. These are patch releases. They contain only bug fixes for Tcl 8.0 and Tk 8.0; there should be no feature changes. Where to get the new releases: ------------------------------ Tcl 8.0p1 and Tk 8.0p1 are currently available by public FTP from ftp.sunlabs.com in the directory /pub/tcl. The easiest way to retrieve them is via the Web page for the 8.0 releases: http://sunscript.sun.com/TclTkCore/8.0.html For additional information: --------------------------- See the Web site for SunScript, the Sun team dedicated to Tcl and Tk. This site contains a variety of information about Tcl/Tk in general, the core Tcl and Tk distributions, and applications such as SpecTcl and the Tcl plugin. Visit the following URL: http://sunscript.sun.com Bugs fixed: ----------- Below is a list of all of the bugs fixed by these releases. This information has been copied from the "changes" files for the releases. Tcl 8.0p1: 8/19/97 (bug fix) Minimal fix for glob -nocomplain bugs: "glob -nocomplain unreadableDir/*" was generating an anonymous error. More in depth fixes will come with 8.1. (DL). 8/20/97 (bug fix) Removed check for FLT_MIN in binary command so underflow conditions are handled by the compiler automatic conversions. (SS) 8/20/97 (bug fixes) Fixed several compilation-related bugs: - Array cmd wasn't detecting arrays that, while compiled, do not yet exist (e.g., are marked undefined since they haven't been assigned to yet). - The GetToken procedure in tclCompExpr.c wasn't recognizing properly whether an integer token was invalid. For example, "0x$" is not a valid integer. - Performance bug in TclExecuteByteCode: the size of its stack frame was reduced by over 20% by moving errorInfo code elsewhere. - Uninitialized memory read error in tclCompile.c. (BL) 8/21/97 (bug fix) safe::interpConfigure now behave like Tk widget's configure : it changes only the options you provide and you can get the current value of any single option. New ?-nested boolean? and ?-statics boolean? for all safe::interp* commands but we still accept (upward compatibility) the previously defined non valued flags ?-noStatics? and ?-nestedLoadOk?. Improved the documentation. (DL). 8/22/97 (bug fix) Updated PrintDbl.3 to reflect the fact that the tcl_precision variable is still used and that it is now shared by all interpreters. (BL) 8/25/97 (bug fix) Fixed array access bug in IllegalExprOperandType procedure in tclExecute.c: it was not properly supporting the || and && operators. (BL) 8/27/97 (bug fix) In cases where a channel handler was created with an empty event mask while data was still buffered in the channel, the channel code would get stuck spinning on a timer that would starve idle handlers. This mostly happened in Tk when reading from stdin. (SS) 9/4/97 (bug fix) Slave interps now inherit the maximum recursion limit of their parent instead of starting back at the default. {nb: this still does not prevent stack overflow by multi-interps recursion or aliasing} (DL) 9/11/97 (bug fix) An uninitialized variable in Tcl_WaitPid caused pipes to fail to report eof properly under Windows. (SS) 9/12/97 (bug fix) "exec" was misidentifying some DOS executables as not executable. (CCS) 9/14/97 (bug fix) Was using the wrong structure in sizeof operation in tclUnixChan.c. (JL) 9/15/97 (bug fix) Fixed notifier to break out of do-one-event loop if Tcl_WaitForEvent returns 1, so that callers of Tcl_DoOneEvent will get a chance to check whether the event just handled is significant. This affected mainly recursive calls to Tcl_VWaitCmd; these did not get a chance to notice that the variable they were waiting for has been set and thus they didn't terminate the vwait. (JL, DL, SS) 9/15/97 (bug fix) Alignment problems in "binary format" would cause a crash on some platforms when formatting floating point numbers. (SS) 9/15/97 (bug fix) Fixed bug in Macintosh socket code. Now passes all tests in socket.test that are not platform specific. (Thanks to Mark Roseman for the pointer on the fix.) (RJ) 9/18/97 (bug fix) Fixed bug -dictionary option of lsort that could cause the compare function to run off the end of an array if the number only contained 0's. (Thanks to Greg Couch for the report.) (RJ) 9/18/97 (bug fix) TclFinalizeEnvironment was not cleaning up properly. (DL, JI) 9/18/97 (bug fix) Fixed long-standing bug where an "array get" command did not trigger traces on the array or its elements. (BL) 9/18/97 (bug fixes) Fixed compilation-related bugs: - Fixed errorInfo traceback information for toplevel coomands that contain nested commands. - In the expr command, && and || now accept boolean operands as well as numeric ones. (BL) 9/22/97 (bug fix) Fixed bug that prevented translation modes from being set independently for input and output on sockets if input was "auto". (JL) 9/24/97 (bug fix) Tcl_EvalFile(3) and thus source(n) now works fine on files containing NUL chars. (DL) 9/26/97 (bug fix) Fixed use of uninitialized memory in the environ array that later could cause random core dumps. Applies to all platforms. (JL) 9/26/97 (bug fix) Fixed use of uninitialized memory in socket address data structure under some circumstances. This could cause random core dumps. This applies only to Unix. (JL) 9/26/97 (bug fix) Opening files on PC-NFS volumes would cause a hang until the system timed after the file was closed. (SS) 10/6/97 (bug fix) The join(n) command, though objectified, was loosing NULs in the joinString and in list elements after the 2nd one. Now you can "join $list \0" for instance. (DL) 10/9/97 (bug fix) Under windows, if env(TMP) or env(TEMP) referred to a non-existent directory, exec would fail when trying to create its temporary files. (CCS) 10/9/97 (bug fix) Under mac and windows, "info hostname" would crash if sockets were installed but the hostname could not be determined anyhow. Tcl_GetHostName() was returning NULL when it should have been returning an empty string. (CCS) 10/10/97 (bug fix) "file attribute /" returned error on windows. (CCS) 10/10/97 (bug fix) Fixed the auto_load procedure to handle procedures defined in namespaces better. Also fixed pgk_mkIndex so it sees procedures defined in nested namespaces. Index entries are still only made for exported procedures. (BW) 10/13/97 (bug fix) On unix, for files with unknown group or owner attributes, querying the "file attributes" would return an error rather than returning the group's or owner's id number, although tha command accepts numbers when setting the file's group or owner. (CCS) 10/22/97 (bug fix) "fcopy" did not eval the callback script at the global scope. (SS) 10/22/97 (bug fix) Fixed the signature of the CopyDone callback used in the http package(s) so they can handle error cases properly. (BW) 10/28/97 (bug fixes) Fixed a problem where lappend would free the Tcl object in a variable if a Tcl_ObjSetVar2 failed because of an error calling a trace on the variable. (BL) 10/28/97 (bug fix) Changed binary scan to properly handle sign extension of integers on 64-bit or larger machines. (SS) 11/3/97 (bug fixes) Fixed several bugs: - expressions such as "expr ($x)" must be compiled out-of-line (call the expr command procedure at runtime) to ensure the correct behavior when "$x" is an expression such as "5+10". - "array set a {}" now creates a new array var with an empty array value if the var didn't already exist. - "lreplace $foo end end" no longer returns an error (just an empty list) if foo is empty. - upvar will no longer create a variable in a namespace that refers to a variable in a procedure. - deleting a command trace within a command trace callback would make the code that calls traces to reference freed memory. - significantly sped up "string first" and "string last" (fix from darrel@gemstone.com). - seg fault in Tcl_NewStringObj() when a NULL is passed as the byte pointer argument and Tcl is compiled with -DTCL_MEM_DEBUG. - documentation and error msg fixes. (BL) 11/3/97 (bug fix) Fixed a number of I/O bugs related to word sizes on 64-bit machines. (SS) 11/6/97 (bug fix) The exit code of the first process created by Tcl on Windows was not properly reported due to an initialization problem. (SS) Tk 8.0p1: 8/22/97 - (bug fix) Fixed syntax error in tk_popup; option menus now popup over their selected items like they did in tk4.2. Fixed problem where cascades sometimes did not work on X. On X, menubars with checkbuttons and radiobuttons in them would infinite loop when mappped. (SRP) 8/27/97 (new feature) Added support for new X11R6 colors under Windows and Mac platforms. (SS) 8/29/97 (bug fix) Wish crashed if stdin was closed. (SS) 9/10/97 (bug fix) "font actual {helvetica 10} -displayof ." wasn't taking into account the "-displayof" option. This problem also existed for the "font metrics" and "font measure" commands. (CCS) 9/16/97 (new feature) Added "resource delete" and "resource files" command to the Mac. Also fixed "resource write" when the resource was specified by id and already existed. (JI) 9/16/97 (bug fix) Added null bindings to for the text and entry widget on the Macintosh. This prevents unbound command key sequences from having the character echoed to the widget. Also fixed Cut & Copy bindings. (JI) (RJ) 9/18/97 (bug fix) Revamped Macintosh focus code. Cut, Copy & Paste virtual events now go to the correct (focus) window. (RJ) 9/19/97 (bug fix) Made Macintosh tearoff menus non-resizable. (RJ) 10/9/97 (bug fix) Image code could cause crashes during "exit" under some conditions (such as an image named "place"). (JO) 10/9/97 (bug fix) Fixed bug that sometimes prevented listboxes from scrolling far enough horizontally to see the rightmost character. (JO) 10/9/97 (bug fix) Default font for new canvas text items was hardcoded to "Helvetica 12" instead of using DEF_CANVTEXT_FONT defined in tk{platform}Default.h like all the other widget settings. (CCS) 10/10/97 (bug fix) In canvas text items, if the text ended with a \n, it was not counted in the bbox height, as it did in tk4.2. This caused "hello\n" to be the same height as "hello" and you couldn't see the cursor positioned on the next line. (CCS) 10/10/97 (bug fix) The grid geometry manager didn't always properly forget about windows after a "grid forget" or "grid remove" command: the windows could reappear on the screen later. (JO) 10/13/97 (bug fix) Selection could not be restored to a text widget after "selection clear" on Windows. (SS) 10/14/97 (bug fix) If a canvas had contained windows that were off-screen, the windows could sometimes reappear (in the wrong place) if the canvas was enlarged. (JO) 10/20/97 (bug fix) Omitting the arguments to the text widget "mark gravity" option caused a crash. (SS) 10/21/97 (bug fix) Tk did not reset the result after native dialog modal loops on Window so background events could perturb the dialog result. (SS) 10/23/97 (bug fix) Memory leak in unix's TkpGetFontFamilies. Thanks to James Bonfield for the fix. (DL) 10/27/97 (bug fix) Fixed event reporting for the Mac during a grab when the pointer was out of the toplevel window. (RJ) 10/28/97 (bug fix) Under Unix, override-redirect was getting set incorrectly for menus, so that "wm overrideredirect" returned 0. (JO) 10/28/97 (bug fix) Under Unix, focus code could sometimes cause the display to deadlock (it wasn't flushing the output buffer after issuing an ungrab command). (JO) 10/28/97 (bug fix) If a PPM image file wasn't complete (e.g. it consisted of nothing but space characters) Tk entered an infinite loop reading the header. (JO) 10/28/97 (bug fixes) On the Mac, menubars assigned to toplevels would disappear after a menu item was invoked from them. On Windows, clicking a system menu with added items and then again with a different set of added items would crash. On all platforms, a command menu entry that caused the entry to be deleted, another one created in its place, and the replacement deleted would cause a panic. On Unix, <> event bindings were firing every time the mouse moved, instead of everytime the active menu item changed. (SRP) 10/27/97 (bug fix) If a particular race condition occurred under Windows, Tk would crash complaining about trying to free a color that wasn't allocated. (SS) 10/28/97 (bug fix) Under Windows, button grabs did not report motion events that occurred outside of Tk windows. (SS) 10/28/97 (bug fix) Fixed incorrect display of transparent images on the Macintosh. (JI) 10/29/97 (bug fix) Reworked the handling of out-of-range indices in the widget command for listboxes: there were all sorts of quirks before (e.g., ".l delete -1" actually deleted the first element of the listbox). (JO) 10/29/97 (bug fix) Fixed crash on the Macintosh that could occur if a window is moved before it is mapped where the X window was created but the Macintosh port was not. (RJ) 10/29/97 (bug fix) Fixed several errors in how wm state was maintained on the Macintosh. Tk now also will iconify a toplevel window on the Mac if the new Appearance Manager is present. (RJ) 10/28/97 (bug fixes) In canvas' postscript command: User name information was leaked in safe interpreters on Unix (security fix). Errors while reading prolog.ps were not propagated and the error message was mixed with partial data. Note: postscript output does not work in safe interpreters on unix and windows. (DL) 10/28/97 (bug fix) Safe Tk interps on unix were leaking env(DISPLAY). (DL) 10/31/97 (bug fix) Fixed problems related to the input focus when one application had windows open simultaneously on several displays. (JO) 10/31/97 (bug fix) Fixed several problems with traversal of menus via the keyboard under Unix. (SRP) 11/4/97 (bug fix) Fixed various word-size related problems for 64-bit architectures. (SS) 11/5/97 (bug fix) Embedding on Windows was using freed data (crashing in safe.test with TCL_MEM_DEBUG). NB: Embedding is still not fully implemented on Windows ! (It works mostly when Tk is embeded into it's own Tk frame (safe::loadTk case), but not well with respect to resizing with a toplevel container or with an external process). (DL) Credits: -------- Virtually everyone in SunScript 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 Win32s support: Colin Stevens Mac port (native look and feel etc.): Ray Johnson, Jim Ingham Font mechanism: Colin Stevens Native menus: Syd Polk Safe-Tcl improvements: Jacob Levy, Laurent Demailly, Brent Welch Application embedding: John Ousterhout, Scott Stanton, Ray Johnson, Jim Ingham Http library: Brent Welch Text images, gridder support: Stephen Uhler Binary I/O, fcopy: Scott Stanton