Tcl 7.5b3/Tk 4.1b3 Release Announcement March 8, 1996 John Ousterhout Sun Microsystems, Inc. john.ousterhout@eng.sun.com This message is to announce new releases of the Tcl scripting language and the Tk toolkit. The new releases are Tcl 7.5b3 and Tk 4.1b3. The changes in these releases consist of bug fixes plus a few API changes in the new I/O system. There are no major new features. We expect these to be the last beta releases for Tcl 7.5 and Tk 4.1, and we hope to make the final releases by the end of March. It would be a great help if as many people as possible could try out the b3 releases ASAP and let us know about problems. Problems reported after about March 20th are unlikely to get fixed in the final releases. The "b3" in the release names indicates that these are the third "beta" releases. The "beta" means that the releases have all of the features we expect to appear in the final Tcl 7.5 and Tk 4.1 releases, but they may still have bugs. These releases are now "feature complete": the only differences between these releases and the final releases should be bug fixes. We will not make any visible feature changes unless they are required to fix a truly awful problem. We expect these to be the last beta releases for Tcl 7.5 and Tk 4.1, and we hope to make the final releases by the end of March. It would be a great help if as many people as possible could try out the b3 releases ASAP and let us know about problems. Problems reported after about March 20th are unlikely to get fixed in the final releases. Where to get the new releases: ------------------------------ Tcl 7.5b3 and Tk 4.1b3 are currently available by public FTP from ftp.smli.com in the directory /pub/tcl. The releases should appear on the usual mirror sites within a few days. The following files are available: - tcl7.5b3.tar.gz and tk4.1b3.tar.gz contain the unified source releases for all platforms (there are also .Z and .zip versions of these files). - win41b3.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). - PC sources are also available in the "win" subdirectory of the release area. See the README file in that directory for details. - mactk4.1b3.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 Credits: -------- Although I'm posting this message, most of the new features in this release are due to other people. Credit for the PC port goes to Scott Stanton (scott.stanton@eng.sun.com) and credit for the Macintosh port goes to Ray Johnson (raymond.johnson@eng.sun.com). The new "interp" command and the new I/O system are the handiwork of Jacob Levy (jacob.levy@eng.sun.com). Stephen Uhler (stephen.uhler@eng.sun.com) is responsible for the new "grid" geometry manager. Changes in Tcl 7.5b3: --------------------- Below is a list of all the changes in the release, taken from the "changes" file in the distribution. 2/23/96 (bug fix) TCL_VARARGS macro in tcl.h wasn't defined properly when compiling with C++. (JO) 2/24/96 (bug fix) Removed dependencies on Makefile in the UNIX Makefile: this caused problems on some platforms (like Linux?). (JO) 2/24/96 (bug fix) Fixed configuration bug that made Tcl not compile correctly on Linux machines with neither -ldl or -ldld. (JO) 2/24/96 (new feature) Added a block of comments and definitions to Makefile.in to make it easier to have Tcl's TclSetEnv etc. replace the library procedures setenv etc, so that calls to setenv etc. in the application automatically update the Tcl "env" variable. (JO) 2/27/96 (feature change) Added optional Tcl_Interp * argument (may be NULL) to C API Tcl_Close and simplified closing of command channels. (JL) *** INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 *** 2/27/96 (feature change) Added optional Tcl_Interp * argument (may be NULL) to C type definition Tcl_DriverCloseProc; modified all channel drivers to implement close procedures that accept the additional argument. (JL) *** INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 *** 2/28/96 (bug fix) Fixed memory leak that could occur if an upvar referred to an element of an array in the same stack frame as the upvar. (JO) 2/29/96 (feature change) Modified both Tcl_DoOneEvent and Tcl_WaitForEvent so that they return immediately in cases where they would otherwise block forever (e.g. if there are no event handlers of any sort). (JO) 2/29/96 (new feature) Added C APIs Tcl_GetChannelBufferSize and Tcl_SetChannelBufferSize to set and retrieve the size, in bytes, for buffers allocated to store input or output in a channel. (JL) 2/29/96 (new feature) Added option -buffersize to Tcl fconfigure command to allow Tcl scripts to query and set the size of channel buffers. (JL) 2/29/96 (feature removed) Removed channel driver function to specify the buffer size to use when allocating a buffer. Removed the C typedef for Tcl_DriverBufferSizeProc. Channels are now created with a default buffer size of 4K. (JL) *** INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 *** 2/29/96 (feature change) The channel driver function for setting blocking mode on the device may now be NULL. If the generic code detects that the function is NULL, operations that set the blocking mode on the channel simply succeed. (JL) 3/2/96 (bug fix) Fixed core dump that could occur if a syntax error (such as missing close paren) occurred in an array reference with a very long array name. (JO) 3/4/96 (bug fix) Removed code in the "auto_load" procedure that deletes all existing auto-load information whenever the "auto_path" variable is changed. Instead, new information adds to what was already there. Otherwise, changing the "auto_path" variable causes all package- related information to be lost. If you really want to get rid of existing auto-load information, use auto_reset before setting auto_path. (JO) 3/5/96 (new feature) Added version suffix to shared library names so that Tcl will compile under NetBSD and FreeBSD (I hope). (JO) 3/6/96 (bug fix) Cleaned up error messages in new I/O system to correspond more closely to old I/O system. (JO) 3/6/96 (new feature) Added -myaddr and -myport options to the socket command, removed -tcp and -- options. This lets clients and servers choose a particular interface. Also changed the default server address from the hostname to INADDR_ANY. The server accept callback now gets passed the client's port as well as IP address. The C interfaces for Tcl_OpenTcpClient and Tcl_OpenTcpServer have changed to support the above changes. (BW) *** POTENTIAL INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 *** 3/6/96 (changed feature) The library function auto_mkindex will now default to using the pattern "*.tcl" if no pattern is given. (RJ) 3/6/96 (bug fix) The socket channel code for the Macintosh has been rewritten to use native MacTcp. (RJ) 3/7/96 (new feature) Added Tcl_SetStdChannel and Tcl_GetStdChannel interfaces to allow applications to explicitly set and get the global standard channels. (SS) 3/7/96 (bug fix) Tcl did close not the file descriptors associated with "stdout", etc. when the corresponding channels were closed. (SS) 3/7/96 (bug fix) Reworked shared library and dynamic loading stuff to try to get it working under AIX. Added new @SHLIB_LD_LIBS@ autoconf symbol as part of this. AIX probably doesn't work yet, but it should be a lot closer. (JO) 3/7/96 (feature change) Added Tcl_ChannelProc typedef and changed the signature of Tcl_CreateChannelHandler and Tcl_DeleteChannelHandler to take Tcl_ChannelProc arguments instead of Tcl_FileProc arguments. This change should not affect any code outside Tcl because the signatures of Tcl_ChannelProc and Tcl_FileProc are compatible. (JL) 3/7/96 (API change) Modified signature of Tcl_GetChannelOption to return an int instead of char *, and to take a Tcl_DString * argument. Modified the implementation so that the option name can be NULL, to mean that the call should retrieve a list of alternating option names and values. (JL) *** INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 *** 3/7/96 (API change) Added Tcl_DriverSetOptionProc, Tcl_DriverGetOptionProc typedefs, added two slots setOptionProc and getOptionProc to the channel type structure. These may be NULL to indicate that the channel type does not support any options. (JL) *** INCOMPATIBILITY with Tcl 7.5b2, but not with Tcl 7.4 *** 3/7/96 (feature change) stdin, stdout and stderr can now be put into nonblocking mode. (JL) Changes in Tk 4.1b3: -------------------- Below is a list of all the changes in the release, taken from the "changes" file in the distribution. 2/23/96 (bug fix) Alt-keys invoked in torn-off and popped up menus caused menus to be posted in the parent toplevel. (JO) 2/23/96 (bug fix) Canvases weren't always updating their scrollbars when they should. (JO) 2/23/96 (bug fix) Fixed core dump that could occur if a WM_DELETE_PROTOCOL handler generated an error. (JO) 2/24/96 (bug fix) Removed dependencies on Makefile in the UNIX Makefile: this caused problems on some platforms (like Linux?). (JO) 2/24/96 (feature change) Changed text and entry widgets so that they set the insertion cursor before inserting during a button-2 click. Also made optional bindings check for tk_strictMotif at the time of the event, rather than at the time the bindings are created. (JO) 2/24/96 (bug fix) Tk tended to crash with an X error when unsetting an icon window (e.g. "wm iconwindow . {}"). (JO) 2/25/96 (bug fix) Wasn't removing windows from the WM_COLORMAP_WINDOWS property when they were deleted. (JO) 3/1/96 (new feature) Added new "bbox" widget command for entries. Also modified mouse bindings for entries and texts so that the mouse position rounds to the nearest inter-character gap, rather than the left edge of the character under the mouse. This provides more natural selection behavior. (JO) 3/1/96 (bug fix) Fixed core dump that could occur in image code if an image was deleted while in use in a widet, then re-used in another widget while "deleted". (JO) 3/1/96 (bug fix) Calling wish with a single argument caused a crash under Windows due to an off-by-one error in the argument parsing code. (SS) 3/1/96 (bug fix) Palette management was broken and resulted in incorrect palette realization and refresh behavior. Also, images were being drawn incorrectly if they were attached to widgets that had a private colormap. (SS) 3/2/96 (bug fix) It was possible to press the mouse button over an option menu, drag to a pulldown menu, and have the pulldown menu popup in place of the option menu. Fixed this so that option menus are isolated from each other and from pulldowns. (JO) 3/2/96 (bug fix) Fixed yet another bug that caused long delays when raising toplevel windows. (JO) 3/2/96 (bug fix) Fixed bug in canvases where zero-sized rectangles and ovals didn't always redisplay right (could leave trailing garbage on screen when moved). (JO) 3/2/96 (bug fix) Entry widgets reset their insertion cursor, selection, and view whenever the text variable changed, plus whenever a "configure" widget command was invoked and there was a text variable for the widget. Fixed to preserve this information as much as possible. (JO) 3/5/96 (new feature) Added version suffix to shared library names so that Tk will compile under NetBSD and FreeBSD (I hope). (JO) 3/6/96 (bug fix) Changed the way certain configure & motion events are reported. This fixes several bugs in menus & "winfo rootx". (RJ) 3/7/96 (bug fix) Fixed tag remove bug that showed up when draging out a selection. If you had dragged left, then tried to drag back right, the left edge of the selection wasn't being updated because the tag remove wasn't doing anything. (BW) 3/7/96 (bug fix) Fixed the boundary conditions of tag prevrange. The second index argument wasn't effecting in stopping the search if it fell within a range. The second index has to come at or before the start of a range for the range to be found by tag prevrange. (BW) 3/7/96 (bug fix) "puts" to stdout or stderr when running from a script caused wish41.exe to exit silently. Now the output is silently discarded without generating an error. (SS) 3/7/96 (bug fix) Fixed bug where wish was treating empty lines in the input as end of input, if the input came from stdin. This would cause it to complain about missing closing braces etc. (JL)