Changes in Tcl/Tk 9.0

26 September, 2024.

See also the Tcl 9 page on the Tcl homepage: https://www.tcl-lang.org/software/tcltk/9.0.html

Tcl Changes

Major Features

64-bit capacity: Data values larger than 2 GB

  • Strings can be any length (that fits in your available memory)
  • Lists and dictionaries can have very large numbers of elements

Internationalization of text

  • Full Unicode range of codepoints
  • New encodings: utf-16/utf-32/ucs-2(le|be), CESU-8, etc.
  • encoding options -profile, -failindex manage encoding of I/O.
  • msgcat supports custom locale search list
  • source defaults to -encoding utf-8

Zip filesystems and attached archives

  • Packaging of the Tcl script library with the Tcl binary library, meaning that the TCL_LIBRARY environment variable is usually not required.
  • Packaging of an application into a virtual filesystem is now a supported core Tcl feature.

Unix notifiers available using epoll() or kqueue()

  • This relieves limits on file descriptors imposed by legacy select() and fixes a performance bottleneck.

New Numeric Syntax

  • 0NNNN gets decimal interpretation, not octal
  • 0dNNNN forces decimal interpretation
  • NN_NNN_NNN, underscores allowed in numbers for digit grouping

Changes to Tcl Commands

New Commands

New Subcommands

Expanded Syntax / New Options

Changes to Tcl variables

New encodings

  • utf-16, utf-16le, utf-16be
  • ucs-2, ucs-2le, ucs2be
  • CESU-8

Removed encoding

Changed Tcl behavior

  • source defaults to encoding utf-8
  • Unqualified varnames resolved in current namespace
  • Invalid encoding during I/O raises error by default
  • Pathnames no longer interpret ~ as home directory

Tk Changes

Changes to Tk Commands

New Subcommands

Expanded Syntax / New Options

Changed Tk behavior

  • Scaling-aware widgets and themes with SVG support
  • Improved support of two-finger gestures

Changes to Bundled Packages

New packages

  • cookiejar 0.2.0
  • tcl::idna 1.0.1

Updated packages