From 860272731a4a8aa933a3a4d0e962afa023b69c1a Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 28 Aug 2024 17:17:17 +0000 Subject: Release branch for Tcl 9.0.0 --- README.md | 2 +- generic/tcl.h | 6 +++--- library/init.tcl | 2 +- unix/configure | 2 +- unix/configure.ac | 2 +- unix/tcl.spec | 2 +- win/configure | 2 +- win/configure.ac | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9bd1100..fed9f62 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # README: Tcl -This is the **Tcl 9.0b4** source distribution. +This is the **Tcl 9.0.0** source distribution. You can get any source release of Tcl from [our distribution site](https://sourceforge.net/projects/tcl/files/Tcl/). diff --git a/generic/tcl.h b/generic/tcl.h index 36e9c28..f83df17 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -52,11 +52,11 @@ extern "C" { #endif #if TCL_MAJOR_VERSION == 9 # define TCL_MINOR_VERSION 0 -# define TCL_RELEASE_LEVEL TCL_BETA_RELEASE -# define TCL_RELEASE_SERIAL 4 +# define TCL_RELEASE_LEVEL TCL_FINAL_RELEASE +# define TCL_RELEASE_SERIAL 0 # define TCL_VERSION "9.0" -# define TCL_PATCH_LEVEL "9.0b4" +# define TCL_PATCH_LEVEL "9.0.0" #endif /* TCL_MAJOR_VERSION */ #if defined(RC_INVOKED) diff --git a/library/init.tcl b/library/init.tcl index 79a7375..2ed31dc 100644 --- a/library/init.tcl +++ b/library/init.tcl @@ -15,7 +15,7 @@ # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -package require -exact tcl 9.0b4 +package require -exact tcl 9.0.0 # Compute the auto path to use in this interpreter. # The values on the path come from several locations: diff --git a/unix/configure b/unix/configure index 3cb8b1f..13758dd 100755 --- a/unix/configure +++ b/unix/configure @@ -2710,7 +2710,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu TCL_VERSION=9.0 TCL_MAJOR_VERSION=9 TCL_MINOR_VERSION=0 -TCL_PATCH_LEVEL="b4" +TCL_PATCH_LEVEL=".0" VERSION=${TCL_VERSION} EXTRA_INSTALL_BINARIES=${EXTRA_INSTALL_BINARIES:-"@:"} diff --git a/unix/configure.ac b/unix/configure.ac index 5f9f945..461b394 100644 --- a/unix/configure.ac +++ b/unix/configure.ac @@ -26,7 +26,7 @@ m4_ifdef([SC_USE_CONFIG_HEADERS], [ TCL_VERSION=9.0 TCL_MAJOR_VERSION=9 TCL_MINOR_VERSION=0 -TCL_PATCH_LEVEL="b4" +TCL_PATCH_LEVEL=".0" VERSION=${TCL_VERSION} EXTRA_INSTALL_BINARIES=${EXTRA_INSTALL_BINARIES:-"@:"} diff --git a/unix/tcl.spec b/unix/tcl.spec index f123e27..19fe9fb 100644 --- a/unix/tcl.spec +++ b/unix/tcl.spec @@ -4,7 +4,7 @@ Name: tcl Summary: Tcl scripting language development environment -Version: 9.0b4 +Version: 9.0.0 Release: 2 License: BSD Group: Development/Languages diff --git a/win/configure b/win/configure index ae1bf30..8b1ff7a 100755 --- a/win/configure +++ b/win/configure @@ -2411,7 +2411,7 @@ SHELL=/bin/sh TCL_VERSION=9.0 TCL_MAJOR_VERSION=9 TCL_MINOR_VERSION=0 -TCL_PATCH_LEVEL="b4" +TCL_PATCH_LEVEL=".0" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.4 diff --git a/win/configure.ac b/win/configure.ac index 0bd254d..6ab8727 100644 --- a/win/configure.ac +++ b/win/configure.ac @@ -15,7 +15,7 @@ SHELL=/bin/sh TCL_VERSION=9.0 TCL_MAJOR_VERSION=9 TCL_MINOR_VERSION=0 -TCL_PATCH_LEVEL="b4" +TCL_PATCH_LEVEL=".0" VER=$TCL_MAJOR_VERSION$TCL_MINOR_VERSION TCL_DDE_VERSION=1.4 -- cgit v0.12 From eb26f62883bf596e054e5234181898417e5d68db Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 11 Sep 2024 16:57:08 +0000 Subject: Update changes.md version to 9.0.0. http -> 2.10.0 --- changes.md | 2 +- library/http/http.tcl | 2 +- library/http/pkgIndex.tcl | 2 +- library/manifest.txt | 2 +- unix/Makefile.in | 4 ++-- win/Makefile.in | 4 ++-- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/changes.md b/changes.md index 615b101..2619018 100644 --- a/changes.md +++ b/changes.md @@ -4,7 +4,7 @@ changes to the Tcl source code at > [Tcl Source Code](https://core.tcl-lang.org/tcl/timeline) -Release Tcl 9.0b4 arises from the check-in with tag core-9-0-b4. +Release Tcl 9.0.0 arises from the check-in with tag core-9-0-0. 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 diff --git a/library/http/http.tcl b/library/http/http.tcl index 910ffe0..6050ed9 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -11,7 +11,7 @@ package require Tcl 8.6- # Keep this in sync with pkgIndex.tcl and with the install directories in # Makefiles -package provide http 2.10b4 +package provide http 2.10.0 namespace eval http { # Allow resourcing to not clobber existing data diff --git a/library/http/pkgIndex.tcl b/library/http/pkgIndex.tcl index dbeab7a..209c2c0 100644 --- a/library/http/pkgIndex.tcl +++ b/library/http/pkgIndex.tcl @@ -1,2 +1,2 @@ if {![package vsatisfies [package provide Tcl] 8.6-]} {return} -package ifneeded http 2.10b4 [list tclPkgSetup $dir http 2.10b4 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] +package ifneeded http 2.10.0 [list tclPkgSetup $dir http 2.10.0 {{http.tcl source {::http::config ::http::formatQuery ::http::geturl ::http::reset ::http::wait ::http::register ::http::unregister ::http::mapReply}}}] diff --git a/library/manifest.txt b/library/manifest.txt index e169ccd..a6eaec1 100644 --- a/library/manifest.txt +++ b/library/manifest.txt @@ -4,7 +4,7 @@ apply {{dir} { set isafe [interp issafe] foreach {safe package version file} { - 0 http 2.10b4 {http http.tcl} + 0 http 2.10.0 {http http.tcl} 1 msgcat 1.7.1 {msgcat msgcat.tcl} 1 opt 0.4.9 {opt optparse.tcl} 0 cookiejar 0.2.0 {cookiejar cookiejar.tcl} diff --git a/unix/Makefile.in b/unix/Makefile.in index 007f453..0ff1258 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -1078,9 +1078,9 @@ install-libraries: libraries do \ $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)/cookiejar0.2"; \ done - @echo "Installing package http 2.10b4 as a Tcl Module" + @echo "Installing package http 2.10.0 as a Tcl Module" @$(INSTALL_DATA) $(TOP_DIR)/library/http/http.tcl \ - "$(MODULE_INSTALL_DIR)/9.0/http-2.10b4.tm" + "$(MODULE_INSTALL_DIR)/9.0/http-2.10.0.tm" @echo "Installing package opt0.4 files to $(SCRIPT_INSTALL_DIR)/opt0.4/" @for i in $(TOP_DIR)/library/opt/*.tcl; do \ $(INSTALL_DATA) $$i "$(SCRIPT_INSTALL_DIR)/opt0.4"; \ diff --git a/win/Makefile.in b/win/Makefile.in index ff50c97..cf35bee 100644 --- a/win/Makefile.in +++ b/win/Makefile.in @@ -939,8 +939,8 @@ install-libraries: libraries install-tzdata install-msgs $(ROOT_DIR)/library/cookiejar/*.gz; do \ $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/cookiejar0.2"; \ done; - @echo "Installing package http 2.10b4 as a Tcl Module"; - @$(COPY) $(ROOT_DIR)/library/http/http.tcl "$(MODULE_INSTALL_DIR)/9.0/http-2.10b4.tm"; + @echo "Installing package http 2.10.0 as a Tcl Module"; + @$(COPY) $(ROOT_DIR)/library/http/http.tcl "$(MODULE_INSTALL_DIR)/9.0/http-2.10.0.tm"; @echo "Installing package opt 0.4.7"; @for j in $(ROOT_DIR)/library/opt/*.tcl; do \ $(COPY) "$$j" "$(SCRIPT_INSTALL_DIR)/opt0.4"; \ -- cgit v0.12 From 08cb5cef6e83acc7168490f1c2ee80b0353cd7e0 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 11 Sep 2024 21:04:48 +0000 Subject: Add "Known bugs" section --- changes.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/changes.md b/changes.md index 4c028eb..1cca7bb 100644 --- a/changes.md +++ b/changes.md @@ -97,3 +97,9 @@ writing Tcl scripts. - configurable properties - `method -export`, `method -unexport` +## Known bugs + - [changed behaviour wrt command names, namespaces and resolution](https://core.tcl-lang.org/tcl/tktview/f14b33) + - [unset traces enable calling an object command mid-destruction](https://core.tcl-lang.org/tcl/tktview/708422) + - [classmethod fails if no argument supplied to class create](https://core.tcl-lang.org/tcl/tktview/680503) + - [windows dos device paths inconsistencies and missing functionality](https://core.tcl-lang.org/tcl/tktview/d8f121) + - [zlib-8.8, zlib-8.16 fail on Fedora 40, gcc 14.1.1](https://core.tcl-lang.org/tcl/tktview/73d5cb) -- cgit v0.12 From ef7b5493aace7ee3c9eb76e4aff1480e97c66d9c Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Thu, 12 Sep 2024 22:56:50 +0000 Subject: One more "Known bug" --- changes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changes.md b/changes.md index 1cca7bb..c73c9da 100644 --- a/changes.md +++ b/changes.md @@ -103,3 +103,5 @@ writing Tcl scripts. - [classmethod fails if no argument supplied to class create](https://core.tcl-lang.org/tcl/tktview/680503) - [windows dos device paths inconsistencies and missing functionality](https://core.tcl-lang.org/tcl/tktview/d8f121) - [zlib-8.8, zlib-8.16 fail on Fedora 40, gcc 14.1.1](https://core.tcl-lang.org/tcl/tktview/73d5cb) + - [Temporary folder with file "tcl9registry13.dll" remains after "exit"](https://core.tcl-lang.org/tcl/tktview/6ce3c0) + \ No newline at end of file -- cgit v0.12 From c5aa0c5057f6d18f3bf1d76b7d93a3ddea00b404 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 17 Sep 2024 10:29:49 +0000 Subject: Remove 'known bug' listing for issue that was fixed several months ago --- changes.md | 1 - 1 file changed, 1 deletion(-) diff --git a/changes.md b/changes.md index c73c9da..678f42c 100644 --- a/changes.md +++ b/changes.md @@ -99,7 +99,6 @@ writing Tcl scripts. ## Known bugs - [changed behaviour wrt command names, namespaces and resolution](https://core.tcl-lang.org/tcl/tktview/f14b33) - - [unset traces enable calling an object command mid-destruction](https://core.tcl-lang.org/tcl/tktview/708422) - [classmethod fails if no argument supplied to class create](https://core.tcl-lang.org/tcl/tktview/680503) - [windows dos device paths inconsistencies and missing functionality](https://core.tcl-lang.org/tcl/tktview/d8f121) - [zlib-8.8, zlib-8.16 fail on Fedora 40, gcc 14.1.1](https://core.tcl-lang.org/tcl/tktview/73d5cb) -- cgit v0.12 From a3e8589a96875b491acd1c7ef19c4c86c151f357 Mon Sep 17 00:00:00 2001 From: dkf Date: Tue, 17 Sep 2024 14:24:16 +0000 Subject: Extend the notes in the changes file --- changes.md | 150 ++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 94 insertions(+), 56 deletions(-) diff --git a/changes.md b/changes.md index 678f42c..211f015 100644 --- a/changes.md +++ b/changes.md @@ -4,100 +4,138 @@ changes to the Tcl source code at > [Tcl Source Code](https://core.tcl-lang.org/tcl/timeline) -Release Tcl 9.0.0 arises from the check-in with tag core-9-0-0. +Release Tcl 9.0.0 arises from the check-in with tag `core-9-0-0`. 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. +# Major Features + ## 64-bit capacity: Data values larger than 2Gb + - Strings can be any length (that fits in your available memory) + - Lists and dictionaries can have very large numbers of elements ## 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. + - 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 + - `source` defaults to `-encoding utf-8` ## Zip filesystems and attached archives. + - Packaging of the Tcl script library with the Tcl binary library, + meaning that the `TCL_LIBRARY` environment variable is usually not required. + - Packaging of an application into a virtual filesystem is now a supported + core Tcl feature. + +## Unix notifiers available using `epoll()` or `kqueue()` + - This relieves limits on file descriptors imposed by legacy `select()` and fixes a performance bottleneck. -## Unix notifiers available using epoll() or kqueue() - - relieves limits on file descriptors imposed by legacy select() +# Incompatibilities ## 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) + Note that in almost all cases where this causes a change, the change is actually the removal of a latent bug. + - 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. + - Ended interpretation of `~` as home directory in pathnames. + (See `file home` and `file tildeexpand` for replacements when you need them.) + - Removed the `identity` encoding. + (There were only ever very few valid use cases for this; almost all uses + were systematically wrong.) + - Removed the encoding alias `binary` to `iso8859-1`. + - `$::tcl_precision` no longer controls string generation of doubles. + (If you need a particular precision, use `format`.) + - Removed pre-Tcl 8 legacies: `case`, `puts` and `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. + - `%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`. + (See `coroinject` and `coroprobe` for supported commands with significantly + more comprehensible semantics.) ## 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 + - Many arguments expanded type from `int` to `Tcl_Size`, a signed integer type + large enough to support 64-bit sized memory objects. + The constant `TCL_AUTO_LENGTH` is a value of that type that indicates that + the length should be obtained using an appropriate function (typically `strlen()` for `char *` values). + - 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. + (Replaced with standard C `const` keyword going forward.) - 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() + + `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()` + +Note that builds of extensions against Tcl 8.6 and before are expected to not work with Tcl 9.0; ABI compatibility was a non-goal for 9.0. +In _most_ cases, rebuilding the code against Tcl 9.0 should work except when a removed API function is used. + +# New Features ## New commands - - `array default`, `array for` - - `chan isbinary` - - `coroinject`, `coroprobe` - - `clock add weekdays` - - `const`, `info const*` - - `dict getwithdefault` - - `file tempdir`, `file home`, `file tildeexpand` - - `info commandtype` - - `ledit` - - `lpop` - - `lremove` - - `lseq` - - `package files` - - `string insert`, `string is dict` - - `tcl::process` - - `*::build-info` - - `readFile`, `writeFile`, `foreachLine` - - `tcl::idna::*` + - `array default` — Specify default values for arrays (note that this alters the behaviour of `append`, `incr`, `lappend`). + - `array for` — Cheap iteration over an array's contents. + - `chan isbinary` — Test if a channel is configured to work with binary data. + - `coroinject`, `coroprobe` — Interact with paused coroutines. + - `clock add weekdays` — Clock arithmetic with week days. + - `const`, `info const*` — Commands for defining constants (variables that can't be modified). + - `dict getwithdefault` — Define a fallback value to use when `dict get` would otherwise fail. + - `file home` — Get the user home directory. + - `file tempdir` — Create a temporary directory. + - `file tildeexpand` — Expand a file path containing a `~`. + - `info commandtype` — Introspection for the kinds of commands. + - `ledit` — Equivalent to `lreplace` but on a list in a variable. + - `lpop` — Remove an item from a list in a variable. + - `lremove` — Remove a sublist from a list in a variable. + - `lseq` — Generate a list of numbers in a sequence. + - `package files` — Describe the contents of a package. + - `string insert` — Insert a string as a substring of another string. + - `string is dict` — Test whether a string is a dictionary. + - `tcl::process` — Commands for working with subprocesses. + - `*::build-info` — Obtain information about the build of Tcl. + - `readFile`, `writeFile`, `foreachLine` — Simple procedures for basic working with files. + - `tcl::idna::*` — Commands for working with encoded DNS names. ## New command options + - `chan configure ... -inputmode ...` — Support for raw terminal input and reading passwords. - `clock scan ... -validate ...` - `info loaded ... ?prefix?` - - `lsearch ... -stride ...` - - `regsub ... -command ...` + - `lsearch ... -stride ...` — Search a list by groups of items. + - `regsub ... -command ...` — Generate the replacement for a regular expression by calling a command. - `socket ... -nodelay ... -keepalive ...` - `vwait` controlled by several new options - `expr` string comparators `lt`, `gt`, `le`, `ge` + - `expr` supports comments inside expressions ## 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 + - 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()` + - Command: `fpclassify` + - Function `int()` no longer truncates to word size + +## TclOO facilities - private variables and methods - class variables and methods - abstract and singleton classes - configurable properties - `method -export`, `method -unexport` -## Known bugs +# Known bugs - [changed behaviour wrt command names, namespaces and resolution](https://core.tcl-lang.org/tcl/tktview/f14b33) - [classmethod fails if no argument supplied to class create](https://core.tcl-lang.org/tcl/tktview/680503) - [windows dos device paths inconsistencies and missing functionality](https://core.tcl-lang.org/tcl/tktview/d8f121) -- cgit v0.12 From 6db25dbb4a9efbd48d795450836aeeb3ccfd6580 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Wed, 18 Sep 2024 20:28:20 +0000 Subject: One more "Known bugs" --- changes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changes.md b/changes.md index 211f015..f387ffc 100644 --- a/changes.md +++ b/changes.md @@ -136,6 +136,7 @@ In _most_ cases, rebuilding the code against Tcl 9.0 should work except when a r - `method -export`, `method -unexport` # Known bugs + - [Command line built with list not properly quoted](https://core.tcl-lang.org/tcl/tktview/e38dce) - [changed behaviour wrt command names, namespaces and resolution](https://core.tcl-lang.org/tcl/tktview/f14b33) - [classmethod fails if no argument supplied to class create](https://core.tcl-lang.org/tcl/tktview/680503) - [windows dos device paths inconsistencies and missing functionality](https://core.tcl-lang.org/tcl/tktview/d8f121) -- cgit v0.12 From 05b86315c5a7b9913e7764e181a26fb069497579 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 24 Sep 2024 08:14:36 +0000 Subject: =?UTF-8?q?—=20->=20=E2=80=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- changes.md | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/changes.md b/changes.md index 3dc9636..cb50c13 100644 --- a/changes.md +++ b/changes.md @@ -86,35 +86,35 @@ writing Tcl scripts. # New Features ## New commands - - `array default` — Specify default values for arrays (note that this alters the behaviour of `append`, `incr`, `lappend`). - - `array for` — Cheap iteration over an array's contents. - - `chan isbinary` — Test if a channel is configured to work with binary data. - - `coroinject`, `coroprobe` — Interact with paused coroutines. - - `clock add weekdays` — Clock arithmetic with week days. - - `const`, `info const*` — Commands for defining constants (variables that can't be modified). - - `dict getwithdefault` — Define a fallback value to use when `dict get` would otherwise fail. - - `file home` — Get the user home directory. - - `file tempdir` — Create a temporary directory. - - `file tildeexpand` — Expand a file path containing a `~`. - - `info commandtype` — Introspection for the kinds of commands. - - `ledit` — Equivalent to `lreplace` but on a list in a variable. - - `lpop` — Remove an item from a list in a variable. - - `lremove` — Remove a sublist from a list in a variable. - - `lseq` — Generate a list of numbers in a sequence. - - `package files` — Describe the contents of a package. - - `string insert` — Insert a string as a substring of another string. - - `string is dict` — Test whether a string is a dictionary. - - `tcl::process` — Commands for working with subprocesses. - - `*::build-info` — Obtain information about the build of Tcl. - - `readFile`, `writeFile`, `foreachLine` — Simple procedures for basic working with files. - - `tcl::idna::*` — Commands for working with encoded DNS names. + - `array default` — Specify default values for arrays (note that this alters the behaviour of `append`, `incr`, `lappend`). + - `array for` — Cheap iteration over an array's contents. + - `chan isbinary` — Test if a channel is configured to work with binary data. + - `coroinject`, `coroprobe` — Interact with paused coroutines. + - `clock add weekdays` — Clock arithmetic with week days. + - `const`, `info const*` — Commands for defining constants (variables that can't be modified). + - `dict getwithdefault` — Define a fallback value to use when `dict get` would otherwise fail. + - `file home` — Get the user home directory. + - `file tempdir` — Create a temporary directory. + - `file tildeexpand` — Expand a file path containing a `~`. + - `info commandtype` — Introspection for the kinds of commands. + - `ledit` — Equivalent to `lreplace` but on a list in a variable. + - `lpop` — Remove an item from a list in a variable. + - `lremove` — Remove a sublist from a list in a variable. + - `lseq` — Generate a list of numbers in a sequence. + - `package files` — Describe the contents of a package. + - `string insert` — Insert a string as a substring of another string. + - `string is dict` — Test whether a string is a dictionary. + - `tcl::process` — Commands for working with subprocesses. + - `*::build-info` — Obtain information about the build of Tcl. + - `readFile`, `writeFile`, `foreachLine` — Simple procedures for basic working with files. + - `tcl::idna::*` — Commands for working with encoded DNS names. ## New command options - - `chan configure ... -inputmode ...` — Support for raw terminal input and reading passwords. + - `chan configure ... -inputmode ...` — Support for raw terminal input and reading passwords. - `clock scan ... -validate ...` - `info loaded ... ?prefix?` - - `lsearch ... -stride ...` — Search a list by groups of items. - - `regsub ... -command ...` — Generate the replacement for a regular expression by calling a command. + - `lsearch ... -stride ...` — Search a list by groups of items. + - `regsub ... -command ...` — Generate the replacement for a regular expression by calling a command. - `socket ... -nodelay ... -keepalive ...` - `vwait` controlled by several new options - `expr` string comparators `lt`, `gt`, `le`, `ge` -- cgit v0.12 From 5ba9c979637577fe3e3e5054108db42ba46043ce Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 25 Sep 2024 13:49:46 +0000 Subject: A few more compatibility warnings in the release notes. --- changes.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/changes.md b/changes.md index cb50c13..d34895b 100644 --- a/changes.md +++ b/changes.md @@ -71,6 +71,7 @@ writing Tcl scripts. - Introduced versioning of the `Tcl_ObjType` struct - Removed macros `CONST*`: Tcl 9 support means dropping Tcl 8.3 support. (Replaced with standard C `const` keyword going forward.) + - Removed registration of several `Tcl_ObjType`s. - Removed API functions: `Tcl_Backslash()`, @@ -83,6 +84,8 @@ writing Tcl scripts. `Tcl_UniCharN(case)cmp()`, `Tcl_UniCharCaseMatch()` + - Revised many internals; beware reliance on undocumented behaviors. + # New Features ## New commands -- cgit v0.12