changes.md at [b4f354f6d7]
Not logged in

File changes.md artifact 6886c3dbe0 part of check-in b4f354f6d7


The source code for Tcl is managed by fossil. Tcl developers coordinate all changes to the Tcl source code at

Tcl Source Code

Release Tcl 9.0b3 arises from the check-in with tag core-9-0-b3.

Highlighted differences between Tcl 9.0 and Tcl 8.6 are summarized below, with focus on changes important to programmers using the Tcl library and writing Tcl scripts.

64-bit capacity: Data values larger than 2Gb

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.

Unix notifiers available using epoll() or kqueue()

  • relieves limits on file descriptors imposed by legacy select()

Notable incompatibilities

  • Unqualified varnames resolved in current namespace, not global.
  • No --disable-threads build option. Always thread-enabled.
  • I/O malencoding default response: raise error (-profile strict)
  • Windows platform needs Windows 7 or Windows Server 2008 R2 or later
  • Ended interpretation of ~ as home directory in pathnames
  • Removed the "identity" encoding
  • $::tcl_precision no longer controls string generation of doubles
  • Removed Tcl 7 legacies: [case], [puts] [read] variant syntaxes
  • Removed subcommands [trace variable|vdelete|vinfo]
  • No -eofchar option for channels anymore for writing.
  • On Windows 10+ (Version 1903 or higher), system encoding is always utf-8.
  • Removed command ::tcl::unsupported::inject.

Incompatibilities in C public interface

  • Many arguments expanded type from int to Tcl_Size
  • Ended support for Tcl_ChannelTypeVersion less than 5
  • Introduced versioning of the Tcl_ObjType struct
  • Removed macros CONST*: Tcl 9 support means dropping Tcl 8.3 support
  • Removed routines: > Tcl_Backslash(), Tcl_VA(), Tcl_*MathFunc(), Tcl_MakeSafe(), > Tcl_(Save|Restore|Discard|Free)Result(), Tcl_EvalTokens(), > Tcl_(Get|Set)DefaultEncodingDir(), > Tcl_UniCharN(case)cmp(), Tcl_UniCharCaseMatch()

New commands

  • array default, array for
  • coroinject, coroprobe
  • clock add weekdays
  • const, info const*
  • dict getdefault
  • file tempdir, file home, file tildeexpand
  • info commandtype
  • ledit
  • lpop
  • lremove
  • lseq
  • package files
  • string insert, string is dict
  • tcl::process
  • *::build-info

New command options

  • regsub ... -command ...
  • lsearch ... -stride ...
  • clock scan ... -validate ...
  • socket ... -nodelay ... -keepalive ...
  • vwait controlled by several new options

Numbers

  • 0NNN format is no longer octal interpretation. Use 0oNNN.
  • 0dNNNN format to compel decimal interpretation.
  • NN_NNN_NNN, underscores in numbers for optional readability
  • Functions: isinf() isnan() isnormal() issubnormal() isunordered()
  • fpclassify
  • Function int() no longer truncates to word size

tcl::oo facilities

  • private variable and methods
  • method -export, method -unexport