Artifact d20baefea0bb4303486a3553f791949926d5477fa436eb90e22d6fc267ca6c66:
- File changes.md — part of check-in [23ac90825d] at 2024-05-14 18:11:17 on branch core-9-0-b2-rc — More conventional Markdown (user: dgp size: 3119) [more...]
The source code for Tcl is managed by fossil. Tcl developers coordinate all changes to the Tcl source code at
Release Tcl 9.0b2 arises from the check-in with tag core-9-0-b2.
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.
encodingoptions -profile, -failindex manage encoding of I/O.msgcatsupports custom locale search listsourcedefaults 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.
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 forcoroinject,coroprobeclock add weekdaysconst,info const*dict getdefaultfile tempdir,file home,file tildeexpandinfo commandtypeleditlpoplremovelseqpackage filesstring insert,string is dicttcl::process*::build-info
New command options
regsub ... -command ...lsearch ... -stride ...clock scan ... -validate ...socket ... -nodelay ... -keepalive ...vwaitcontrolled 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