Released September 10, 2002
Tcl 8.4 development was about 2 years from first code to first stable release. It includes lots of new features and enhancements, as well as significant performance improvements in many areas (for about 25% overall speed increase from 8.3). See Tcl Benchmarks for performance differences.
Tcl: New Commands
Tcl: New Subcommands
Removed Tcl subcommands
Tcl: Expanded Syntax / New Options
array names <arrayName> ?mode? ?pattern? ;# mode option to specify pattern type is new binary scan <string> wW ... binary format wW ... ;# wide (64-bit) integer support in 'binary' command expr wide(...) ;# wide (64-bit) integer support in 'expr' expr {$a ne $b || $c eq $d} ;# new true string (in)equality operators in 'expr' fconfigure <serial> ;# TIP#35 improved x-platform serial port control -mode <baud,parity,data,stop> -handshake <type> -queue -timeout <msec> -ttycontrol <signalMap> -ttystatus -xchar <charPair> -pollinterval <msec> -sysbuffer <sizeList> -lasterror [L5 ] glob -tails <pattern> ... ;# new -tails option info script ?filename? ;# can now specify a filename lindex <list> ?index ...? ;# TIP#22 'lindex' can now take multiple index args ;# for accessing items in nested lists more easily [L6 ] lsearch ;# TIP#80 additional options to lsearch for improved -all ;# control and speed -ascii -decreasing -dictionary -increasing -inline -integer -not -real -sorted -start [L7 ] regsub ?switches? exp string subSpec ?varName? ;# TIP#76 regsub can now return modified result string [L8 ] unset ?-nocomplain? ?--? ?name ...? ;# new optional -nocomplain arg to unset
New Tcl global variables
Tcl: Updated packages
Tcl: Changed behavior
fcopy now respects encodings of its channels.
format %ld and likewise treat argument as wide integer
glob now respects the platform-specific notion of hidden files.
scan %ld and likewise no longer ignore the field width specifier
source treats the byte 0x1a as an end-of-file character on all platforms, as does tclsh for the initial script.
subst treats break and continue during command substitution differently
Global variables tcl_traceExec and tcl_traceCompile only have their tracing function in the TCL_COMPILE_DEBUG variant of Tcl.
Tk: New Commands
Tk: New Subcommands
Tk: Removed Privates
Tk: Expanded syntax/new options
bell ?-nice? button pathName -compound checkbutton pathName -compound -overrelief -offrelief entry pathName -state readonly -disabledbackground -disabledforeground -readonlybackground grid configure ... ;# TIP#21 asymmetric padding for pack/grid geometry managers pack configure ... -padx {left right} -pady {top bottom} [L19 ] grid rowconfigure|columnconfigure master index -uniform ;# TIP#37 -uniform option for grid rows/cols [L20 ] listbox pathName -activestyle dotbox|underline|none ;# TIP#94 -activestyle option -disabledforeground -state [L21 ] menu add type ?... -compound ...? menubutton pathName ?... -compound ...? photo copy sourceImage ?... -compositingrule ...? radiobutton pathName -compound -offrelief -overrelief text pathName ?-autoseparators? ?-undo? ;# TIP#26 text widget undo/redo support [L22 ] text edit ... text delete index1 index2 index3 ... ;# TIP#93 extended get/delete commands [L23 ] text get index1 index2 index3 ... text -maxundo <int> [L24 ] tk_getOpenFile -multiple -message tk_getSaveFile -message
Tk: New Event Types (TIP#47 [L25 ])
Tk: New virtual events on Text widgets (TIP#26 [L26 ])
Tk: New Bind Substitutions (TIP#47 [L27 ])
Tk: Changed behavior
tk_getOpenFile and tk_getSaveFile are different in whether the returned file name includes the extension.
wm transient .t .t now raises an error.
A transient toplevel now mirrors the state of its master.
photo copy now copies transparency info correctly, and animated GIFs work.
wish treats a 0x1a character (^Z - the Windows end-of-file marker) as an end of file character in the initial script on all platforms.
All Tk dialogs are now localized, including use of ampersand magic.
Improved Input Method Editor interfacing on Unix (XIM) (but only tested on SuSE Linux) and Windows IME which allows for over-the-spot editing.
[grid slave -col] no longer works. It must be spelled out as [grid slave -column] because -col is an ambiguous option.