Tk 4.1b2 Release Announcement February 23, 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.5b2 and Tk 4.1b2. These releases consist almost entirely of bug fixes. There are just a couple of feature changes, mostly to improve the backwards compatibility of the new I/O sysetm. The "b2" in the release names indicates that these are the second "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 are likely to have bugs and we do not promise to maintain backward compatibility between these releases and the eventual Tcl 7.5 and Tk 4.1 releases (we may make changes in new features if we find problems during beta testing). We would like to get the final releases out as quickly as possible, so we'd appreciate rapid feedback on problems with these beta releases. Where to get the new releases: ------------------------------ Tcl 7.5b2 and Tk 4.1b2 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.5b2.tar.gz and tk4.1b2.tar.gz contain the unified source releases for all platforms (there are also .Z and .zip versions of these files). - win41b2.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.1b2.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.5b2: --------------------- Below is a list of all the changes in the release, taken from the "changes" file in the distribution. 2/7/96 (bug fix) Fixed off by one error in argument parsing code under Windows. (SS) 2/7/96 (bug fix) Fixed bugs in VC++ makefile that improperly initialized the tcl75.dll. Fixed bugs in Borland makefile that caused build failures under Windows NT. (SS) 2/9/96 (bug fix) Fixed deadlock problem in AUTO end of line translation mode which would cause a socket server with several concurrent clients writing in CRLF mode to hang. (JL) 2/9/96 (API change) Replaced -linemode option to fconfigure with a new -buffering option, added "none" setting to enable immediate write. (JL) *** INCOMPATIBILITY with b1 *** 2/9/96 (new feature) Added C API Tcl_InputBuffered which returns the count of bytes currently buffered in the input buffer of a channel, and o for output only channels. (JL) 2/9/96 (new feature) Implemented asynchronous connect for sockets. Currently only supported on Unix. (JL) 2/9/96 (new feature) Added C API Tcl_SetDefaultTranslation to set (per channel) the default end of line translation mode. This is the mode that will be installed if an output operation is done on the channel while it is still in AUTO mode. (JL) 2/9/96 (bug fix) Changed Tcl_OpenCommandChannel interface to properly handle all of the combinations of stdio inheritance in background pipelines. See the Tcl_OpenFileChannel(3) man page for more info. This change fixes the bug where exec of a background pipeline was not getting passed the stdio handles properly. (SS) 2/9/96 (bug fix) Removed the new Tcl_CreatePipeline interface, and restored the old version for Unix platforms only. All new code should use Tcl_CreateCommandChannel instead. (SS) 2/9/96 (bug fix) Changed Makefile.in to use -L and -ltcl7.5 for Tcl library so that shared libraries are more likely to be found correctly on more platforms. (JO) 2/13/96 (new feature) Added C API Tcl_SetNotifierData and Tcl_GetNotifierData to allow notifier and channel driver writers to associate data with a Tcl_File. The result of this change is that Tcl_GetFileInfo now always returns an OS file handle, and Tcl_GetFile can be used to construct a Tcl_File for an externally constructed OS handle. (SS) 2/13/96 (bug fix) Changed Windows socket implementation so it doesn't set SO_REUSEADDR on server sockets. Now attempts to create a server socket on a port that is already in use will be properly identified and an error will be generated. (SS) 2/13/96 (bug fix) Fixed problems with DLL initialization under Visual C++ that left the C run time library uninitialized. (SS) 2/13/96 (bug fix) Fixed Windows socket initialization so it loads winsock the first time it is used, rather than at the time tcl75.dll is loaded. This should fix the bug where the modem immediately starts trying to connect to a service provider when wish or tclsh are started. (SS) 2/13/96 (new feature) Added C APIs Tcl_MakeFileChannel and Tcl_MakeTcpClientChannel to wrap up existing fds and sockets into channels. Provided implementations on Unix and Windows. (JL) 2/13/96 (bug fix) Fixed bug with seek leaving EOF and BLOCKING set. (JL) 2/14/96 (bug fix) Fixed reentrancy problem in fileevent handling and made it more robust in the face of errors. (JL) 2/14/96 (feature change) Made generic IO level emulate blocking mode if the channel driver is unable to provide it, e.g. if the low level device is always nonblocking. Thus, now blocking behavior is an advisory setting for channel drivers and can be ignored safely if the channel driver is unable to provide it. (JL) 2/15/96 (new feature) Added "binary" end of line translation mode, which is a synonym of "lf" mode. (JL) 2/15/96 (bug fix) Fixed reentrancy problem in fileevent handling vs deletion of channel event handlers. (JL) 2/15/96 (bug fix) Fixed bug in event handling which would cause a nonblocking channel to not see further readable events after the first readable event that had insufficient input. (JL) 2/17/96 (bug fix) "info complete" didn't properly handle comments in nested commands. (JO) 2/21/96 (bug fix) "exec" under Windows NT/95 did not properly handle very long command lines (>200 chars). (SS) 2/21/96 (bug fix) Sockets could get into an infinite loop if a read event arrived after all of the available data had been read. (SS) 2/22/96 (bug fix) Added cast of st_size elements to (long) before sprintf-ing in "file size" command. This is needed to handle systems like NetBSD with 64-bit file offsets. (JO) Changes in Tk 4.1b2: -------------------- Below is a list of all the changes in the release, taken from the "changes" file in the distribution. 2/2/96 (bug fix) Frames were getting a default size of 200x200, whereas there should be no default. (JO) 2/2/96 (bug fix) Argc wasn't getting reset properly after Tk removed the arguments it understood from those on the command line. (JO) 2/6/96 (bug fix) Fixed off by one error in argument parsing code under Windows. (SS) 2/6/96 (bug fix) "wm transient" now works under Windows. The resulting toplevel is created with a modal dialog box frame and will not appear in the taskbar under Windows '95. (SS) 2/9/96 (bug fix) Changed Makefile.in to use -L and -l for Tcl and Tk libraries so that shared libraries are more likely to be found correctly on more platforms. (JO) 2/14/96 (feature change) Eliminated tk_CanvasTagsOption variable because it can't be exported safely across DLL boundaries. Instead, exported Tk_CanvasTagsParseProc and Tk_CanvasTagsPrintProc procedures for use by canvas type managers in creating their own custom options. (JO) *** POTENTIAL INCOMPATIBILITY *** 2/14/96 (bug fix) "winfo pointerxy" when applied to a non-toplevel window crashed wish. (SS) 2/14/96 (bug fix) "tkwait visibility" would hang under Windows. (SS) 2/14/96 (bug fix) Cursors were not being updated until an enter event. In cases where the cursor left the toplevel and reentered before Tk noticed, the cursor would get "stuck" until the next enter event. Similarly, if the cursor attribute of a window was updated while the mouse was in the window, the cursor would not change until the next time the mouse entered the window. (SS) 2/15/96 (bug fix) If a top-level was resizable in one direction (e.g. "wm resizable . 0 1"), once the user resized it any changes in the internally requested size (by the widgets) were ignored, even for the non-resizable dimension. Fixed to handle the two dimensions totally independently, so the widget's requests are honored as long as that dimension hasn't been set by the user. (JO) 2/17/96 (bug fix) If a text widget had very long lines (e.g. more than 32K pixels), integer overflow could occur, resulting in parts of the line not being visible. (JO) 2/20/96 (feature change) Changed the -minsize option of grid to take screen units instead of pixels. (SU) 2/20/96 (bug fix) grid row and column weights are compared against MINWEIGHT (0.001) instead of 0.0 to guard against divide by zero errors during weight normalization. (SU) 2/20/96 (bug fix) Menu commands were not being invoked sometimes. There was a race condition that caused events to be processed while a menu was being unposted. (SS)