Artifact ef9193d0e2a3c56e6d2e221de0b30a8c96ed497dde02d9b7317a7efbc6c47a11:
- File changes.md — part of check-in [2047813f1c] at 2024-08-13 14:00:18 on branch main — b3 -> b4, as preparation for release (user: jan.nijtmans size: 3477) [more...]
The source code for Tcl is managed by fossil. Tcl developers coordinate all changes to the Tcl source code at
Release Tcl 9.0b4 arises from the check-in with tag core-9-0-b4.
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.
- Removed the encoding alias "binary" to "iso8859-1".
- $::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.
- %b/%d/%o/%x format modifiers (without size modifier) for "format" and "scan" always truncate to 32-bits on all platforms.
- %L size modifier for "scan" no longer truncates to 64-bit.
- 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 forchan isbinarycoroinject,coroprobeclock add weekdaysconst,info const*dict getwithdefaultfile tempdir,file home,file tildeexpandinfo commandtypeleditlpoplremovelseqpackage filesstring insert,string is dicttcl::process*::build-inforeadFile,writeFile,foreachLine
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