The source code for Tcl is managed by fossil. Tcl developers coordinate all changes to the Tcl source code at
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.
- 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 listsource
defaults to -encoding utf-8
- relieves limits on file descriptors imposed by legacy select()
- 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.
- 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()
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
regsub ... -command ...
lsearch ... -stride ...
clock scan ... -validate ...
socket ... -nodelay ... -keepalive ...
vwait
controlled by several new options
- 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
- private variable and methods
method -export
,method -unexport