From: Jeff H. <jeffh@ActiveState.com> - 2002-09-18 16:58:40
|
Tcl/Tk 8.4.0 Release Announcement September 18, 2000 The Tcl Core Team are pleased to announce the 8.4.0 releases of the Tcl scripting language and the Tk toolkit. This is the first stable release of Tcl/Tk 8.4. More details can be found below. We'd like to thank all those that submit bugs and patches as they are the primary source of information for us to identify problems in the core. Where to get the new releases: ------------------------------ Tcl/Tk 8.4.0 are freely available in open source from the Tcl Developer Xchange web site at http://www.tcl.tk/software/tcltk/8.4.html This web page also contains additional information about the releases, including new features and notes about installing and compiling the releases. For additional information: --------------------------- Please visit the Tcl Developer Xchange web site: http://www.tcl.tk/ This site contains a variety of information about Tcl/Tk in general, the core Tcl and Tk distributions, the TclPro tool suite, and much more. Thank you for your contributions: --------------------------------- As usual, this release includes contributions from the Tcl community. We have a page honoring these contributions at: http://www.tcl.tk/software/tcltk/contributors.html Summary of Changes since Tcl/Tk 8.3.4: -------------------------------------- Development of Tcl/Tk 8.4 began in May 2000, shortly after the release of Tcl/Tk 8.3.1. The number of new features, bug fixes, and changes over those 28 months is quite large. This section attempts to summarize the most evident user-visible changes, organized by package and type of change. For more details see the "changes" and "ChangeLog*" files included in the distribution. The Tcl Core Team (TCT) began governing additions of new features in Tcl/Tk in September 2000. The TCT documents their decisions in Tcl Improvement Proposals available at: http://www.tcl.tk/cgi-bin/tct/tip/ Where changes below are due to a TIP, the relevant TIP number is noted. See the documentation for full details on new features. > Changes in Tcl * Key New Features o extensible "virtual filesystem" interface allows extensions to present data sources to Tcl as "virtual files". (TIP 17) o 64-bit native filesystem support (where the OS supports it) enables ability to operate on files larger than 2 GiB (TIP 72) o [expr] handles "wide integers" (>= 64-bit) even on 32-bit OSes (TIP 72) o traces on command renames and deletes o traces on command execution (TIP 62) o direct list element access via [lset] and [lindex] (TIPs 22,33,45) o serial port support as Tcl channel (TIP 35) o CONST-ified C interface (TIP 27) o support for [source]-ing starkits (formerly "scripted documents") o greater consistency of error messages * New Commands o [array statistics] - hash table details for debugging & profiling o [file link] - cross-platform creation of filesystem links (TIP 99) o [file normalize] - unique name of file (TIP 17) o [file separator] - file path separator for filesystem (TIP 17) o [file system] - name of filesystem providing a file (TIP 17) o [info functions] - list functions known by [expr] (TIP 15) o [interp recursionlimit] - get and set (trusted interp) limit (TIP 87) o [lset] - Directly set element of list (to any nesting depth) (TIP 33) o [memory] - debugging command (--enable-memdebug configuration) o [namespace exists] - test for existence o [trace add] - create a trace (variable, command, execution) o [trace remove] - remove a trace (variable, command, execution) o [trace info] - get info about current traces (TIP 102) * Expanded Syntax / New Options o [array names] options -regexp, -exact, and -glob o [expr] support for "eq" and "ne" string comparison operators o [fconfigure] - serial port configuration options o [fcopy] respects channel encodings o [info script] allows setting the script. o [lindex] accepts multiple indices into nested lists. o [lsearch] - new options -all -ascii -decreasing -dictionary -increasing -inline -integer -not -real -sorted -start (TIP 80) o [regsub] can return substituted result (TIP 76) o [unset -nocomplain] - silence non-existence errors o 64-bit support in [binary], [expr] o "Inf" and "Nan" recognized as numbers o Safe Base no longer limits file name length or format in [source] o new global variable: tcl_platform(wordSize) * Changes in Public C Interface o Many functions have new CONST modifiers on the pointer arguments by default. See "Compatibility issues" below. (TIP 27) o Tcl_VarTraceProc's can now return (Tcl_Obj *) or dynamic string (TIP 52) o 81 new functions, including o Tcl_Attempt* - non-panic'ing mem allocation functions o Tcl_CommandTraceInfo, Tcl_TraceCommand, Tcl_UntraceCommand - command rename and delete traces o Tcl_CreateObjTrace - C level access to command execution traces (TIP 32) o Tcl_FS* - interface to virtual file systems (TIP 17) o Tcl_GetChannelThread - what thread manages a channel (TIP 10) o Tcl_GetMathFuncInfo, Tcl_ListMathFuncs - [expr] introspection (TIP 15) o Tcl_GetTime - cross-platform time - higher res on Windows o Tcl_GetUnicodeFromObj - pull UCS-16 strings from Tcl_Obj o Tcl_InitCustomHashTable, Tcl_InitObjHashTable - support for new hash table key types including (Tcl_Obj *)'s. o Tcl_JoinThread - support for joinable threads. o Tcl_OutputBuffered - bytes pending in an output queue (TIP 49) o Tcl_SubstObj - C level access to [subst] functionality (TIP 36) o Tcl_*WideInt* - operations on Tcl_Obj's holding wide integers (TIP 72) * Platform/Environment Support o configure dropped support for --enable-gcc; define CC=gcc instead o new configure options --enable-langinfo= and --enable-memdebug o configure supports --include-dir= and --libdir= options o unix/dltest/configure absorbed into /unix/configure o new make targets: 'make gdb'; 'make shell' o added tclPlatDecls.h to default install o New or improved support for AIX-4 (64-bit xlc), AIX-5, Borland compiler on Windows, Cray, DJGPP on DOS, FreeBSD (--enable-threads), GNU HURD , IRIX (64-bit), Mac OS 9, Mac OS X / Darwin, mingw 1.1 (gcc on Windows), OSF (--disable-shared), VC++ 5.0 o new and updated encodings, including ISO-8859-15 and koi8-u o corrected unsafe use of tmpnam() on Unix o Unix file output now avoids zero-byte writes (STREAMs) o [exec] argument quoting fixes on Windows * Performance Enhancements o optimization of bytecode execution engine o thread-enabled memory allocator o boolean Tcl_Obj values are now cached o [proc foo args {}] compiles to 0 bytecodes -- efficient no-op (TIP 53) o string growth algorithm now allows use of more of available memory o greater timer resolution on Windows (TIP 7) o [binary scan] - caching scheme saves memory o [glob] - excess stat calls on Windows suppressed o [lsearch] - sorted or typed lists use faster algorithms o [for],[if],[while] - byte-compiled optimization for constant conditions o variable lookup speed improved by Tcl_Obj use. o new or improved byte compiling of [append], [lappend], [list], [regexp], [regsub], [return], [string] > Changes in Tk * New Commands o [clipboard get] means [selection get -selection CLIPBOARD] o [image inuse] o [labelframe] widget (TIP 18) o [panedwindow] widget (TIP 41) o [spinbox] widget o [$photo transparency] - get/set transparency of pixel in photo (TIP 14) o [$text edit] - interface to undo/redo stack (TIP 26) o [tk caret] - caret handling (accessibility;XIM) (TIP 96) o [tk windowingsystem] - underlying library Tk built on (TIP 108) o [wm attributes] - access to wm-specific interfaces (TIP 95) o [wm stackorder] - query stacking order (TIP 74) o private commands moved into ::tk namespace (TIP 44) * Expanded Syntax / New Options o [bell]: -nice option to not reset screen saver o [button] support for -repeatdelay, -repeatinterval o [*button],[label],[$menu add],[menubutton]: -compound option adds both text and image (TIP 11) o [*button]: -overrelief, -offrelief relief changes on mouseover (TIP 82) o [entry]: new -state readonly o [grid],[pack]: -padx, -pady allow asymmetric padding (TIP 21) o [grid (row|column)configure]: -uniform layout (TIP 37) o [listbox]: -activestyle, -disabledforegroud, -state (TIP 94) o [$photo copy]: -compositingrule transparency control (TIP 98) o [raise] is now non-blocking (avoid 2-second delay) (TIP 107) o [text]: -undo, -autoseparators configuration of undo stack (TIP 26) o [$text delete],[$text get]: accept multiple index pairs (TIP 93) o [tk_(get|save)OpenFile]: -multiple, -message o [tk useinputmethods 1] is now default o [wm transient] changed behavior; can't be parent of self o better multi-display support o new default bgerror dialog; easier stack trace access o new event types: , , , , o new virtual events: <>, <> o new bind substitutions: %i, %P * Changes in Public C Interface o Many functions have new CONST modifiers on the pointer arguments by default. See "Compatibility issues" below. (TIP 27) o Reorganized Tk to allow usage in writing an X wm (TIP 47) o New Tk_OptionType value, TK_OPTION_CUSTOM o Tk registers its Tcl_ObjTypes o 24 new functions, including o Interface to a style engine (TIP 48) o Tk_CollapseMotionEvents - make full motion events available (TIP 84) o Tk_CreateAnonymousWindow - create C-controlled anonymous window o Tk_PhotoPut*Block - added compositing control (TIP 98) o Tk_SetCaretPos - control over caret position (TIP 96) o Tk_SetClassProcs - more control in widget creation (TIP 5) * Platform/Environment Support o menu indicator drawing corrected on Windows o new button size default on Windows o more Unicode use in native Windows widgets o Windows mirrors B2 bindings to B3. o native directory browser on Windows o [button]: -width accepts negative value for minimum width on Windows o [wm iconbitmap $path -default $filename] icon on Windows (winico) (TIP 8) o new or improved support for AIX-4 (64-bit xlc), AIX-5, Borland compiler on Windows, Mac OS X / Aqua, mingw 1.1 (gcc on Windows), o improved --enable-threads support o new make target: `make gdb` o added tkPlatDecls.h to default install o dialogs use msgcat package for localization o message catalogs use "ampersand magic" o test suite uses tcltest package * Performance Enhancements o Tcl-Obj-ified commands: [bindtags], [clipboard], [grid], [message], [pack], [place], [selection], [tkwait], [wm] o Internal use of "window" Tcl_ObjType > Changes in bundled packages * New major release o tcltest 2.2 has replaced tcltest 1.0. tcltest 2.2 works compatibly with test suites written for tcltest 1.0, but offers many improvements. See the documentation for details * New public commands o [msgcat::mcload],[msgcat::mcmax],[msgcat::mcmset] (msgcat 1.2) * Expanded Syntax / New Options o [dde request]: -binary gets result as byte array (dde 1.2) o XPG4 locales supported (msgcat 1.3) * Platform/Environment Support o More Windows registry locale codes recognized (msgcat 1.3) o locale initialization from LC_ALL and LC_MESSAGES (msgcat 1.3) Compatibility issues: -------------------- The Tcl/Tk 8.4.0 releases are highly compatible with prior releases of Tcl/Tk since 8.1. There are a handful of changes that may cause programs and scripts written for prior releases to behave differently with Tcl/TK 8.4.0. Here we summarize the known things to watch out for. Script-visible incompatibilities in Tcl: * The variables ::tcl_traceCompile and ::tcl_traceExec now govern the printing of trace messages only in the TCL_COMPILE_DEBUG variant of Tcl. In the default build of Tcl, they have no special effects. * Literal integer values between 2147483648 and 4294967296 are now treated as positive wide integers. They used to be negative 32-bit integers. * [glob] now respects platform conventions for hidden files. Hidden files will not be returned by default. Supply the "-types hidden" option to force their inclusion in the returned list. * [info level $level] will now return a [namespace eval] in the call stack. * [fcopy] now respects the encodings of its channels. * [subst] has changed the way it reacts to a [break] (TCL_BREAK) or [continue] (TCL_CONTINUE) during substitution. * The strings "Inf" and "Nan" are now recognized by the Tcl parser as numbers. * read traces during [array get] that modify the array are handled differently * [memory] command (in the --enable-memdebug variant) has changed; [checkmem] has been removed. * [auto_import] pattern matching is now namespace-aware. * The search patch for init.tcl on Windows no longer includes the current directory, and is no longer influenced by values in the registry. * The string growth algorithm has changed, which may change memory use patterns, especially for applications that use large strings. * Several error messages have changed. Script-visible incompatibilities in Tk: * default button size has changed on Windows * transient toplevels now mirror the state of their master * a window cannot be a transient master of itself * [tk_get(Save|Open)File] on unix ensures that the returned file has a file extension if one was noted in the file types, to match Windows. * The private commands and variables provided by Tk that match the glob pattern tk[a-z]* have been moved into the ::tk namespace. Use the new commands [::tk::unsupported::ExposePrivateCommand *] and [::tk::unsupported::ExposePrivateVariable *] to restore their availability as in previous releases. See TIP 44 and http://wiki.tcl.tk/3670 for more details. Incompatibilities in configuring/building/installing Tcl/Tk: * cygwin support dropped; use mingw instead * changed the binary extension format on Mac from MachO to .dylib * support for the --include-dir= and --libdir= configuration options implies that redefinition of exec_prefix during install no longer fully controls installation. C interface incompatibilities in Tcl/Tk: * The public header files tcl.h now assumes at least minimal compiler support for features of ANSI C that have been in the language for years. If you have a truly ancient compiler, you may need special configuration to successfully compile. * The Tcl C library no longer defines a function matherr(). * The size of some of Tcl public structs, notably Tcl_HashTable, have changed. If you define structs that include one of these changed Tcl structs inline, the size and field offsets of your structs can be changed, causing errors. See http://wiki.tcl.tk/3708 for more details. * The C interface has been fully CONST-ified. That is, wherever a function accepts an argument or returns a result that is intended to be a read-only string, it now has type (const char *) even where prior releases of Tcl/Tk had type (char *). This causes some source incompatibilities. #define USE_NON_CONST will restore an interface that is source-compatible with Tcl 8.3. See TIP 27 and http://wiki.tcl.tk/3669 for more information. * The functions Tk_PhotoPutBlock and Tk_PhotoPutZoomedBlock now take an additional argument controlling the compositing rule. To use the previous declaration, #define USE_COMPOSITELESS_PHOTO_PUT_BLOCK. (TIP 98) -- Tcl Core Team and Maintainers Jeff Hobbs, Tcl Core Release Manager |