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