Skip to content

Latest commit

 

History

History
87 lines (72 loc) · 3.09 KB

changes.md

File metadata and controls

87 lines (72 loc) · 3.09 KB

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