Changes in Tcl/Tk 8.4

Released September 10, 2002

Tcl

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

  • array statistics
  • file link
  • file normalize
  • file separator
  • file system
  • info functions
  • interp recursionlimit & interp recursionlimit (TIP#87 [L3 ])
  • memory active (TCL_MEM_DEBUG)
  • memory init (TCL_MEM_DEBUG)
  • memory onexit (TCL_MEM_DEBUG)
  • memory tag (TCL_MEM_DEBUG)
  • namespace exists
  • trace add variable|command|execution (TIP#62 [L4 ])
  • trace remove variable|command|execution
  • trace info variable|command|execution

Removed Tcl subcommands

  • memory display (TCL_MEM_DEBUG)

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_platform(wordSize)

Tcl: Updated packages

  • dde 1.2
  • http 2.4.2
  • msgcat 1.3
  • tcltest 2.2

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

Tk: New Commands

Tk: New Subcommands

  • clipboard get
  • image inuse
  • photo transparency (TIP#15 [L11 ], TIP#98 [L12 ])
  • text edit (TIP#26 [L13 ])
  • tk caret (TIP#96 [L14 ])
  • tk windowingsystem (TIP#108 [L15 ])
  • wm attributes (TIP#95 [L16 ])
  • wm stackorder (TIP#74 [L17 ])

Tk: Removed Privates

  • All private commands matching tk[A-Z]* are now ::tk::[A-Z]*
  • tkPriv array is now ::tk::Priv (TIP#44 [L18 ])

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 ])

  • <CirculateRequest>
  • <ConfigureRequest>
  • <Create>
  • <MapRequest>
  • <ResizeRequest>

Tk: New virtual events on Text widgets (TIP#26 [L26 ])

  • <<Selection>>
  • <<Modified>>

Tk: New Bind Substitutions (TIP#47 [L27 ])

  • %i
  • %P

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.

See also