]> git.ipfire.org Git - people/mfischer/ipfire-2.x.git/commit
tcl: Update to version 9.0.1
authorAdolf Belka <adolf.belka@ipfire.org>
Fri, 28 Feb 2025 16:59:46 +0000 (17:59 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 5 Mar 2025 11:16:42 +0000 (11:16 +0000)
commitd18f8eed367b1ad870a28963775113bec94e6c0d
treec41c6a8b3739f7f7fad23253d60a27624ecf05a0
parentddb0b84333a38ab3116ae10b617702bf3f3100b0
tcl: Update to version 9.0.1

- Update from version 8.6.14 to 9.0.1
- Update of rootfile
- Changelog
    9.0.1
# Completed 9.0 Features and Interfaces
 - [TIP 701 - Tcl_FSTildeExpand C API]
   (https://core.tcl-lang.org/tips/doc/trunk/tip/701.md)
 - [TIP 707 - ptrAndSize internal rep in Tcl_Obj]
   (https://core.tcl-lang.org/tips/doc/trunk/tip/707.md)
 - [Size modifiers j, q, z, t not implemented]
   ( https://core.tcl-lang.org/tcl/info/c4f365)
# Bug fixes
 - [regression in tzdata, %z instead of offset TZ-name]
   (https://core.tcl-lang.org/tcl/tktview/2c237b)
 - [Tcl will not start properly if there is an init.tcl file in the current
   dir](https://core.tcl-lang.org/tcl/tktview/43c94f)
 - [clock scan "24:00", ISO-8601 compatibility]
   (https://core.tcl-lang.org/tcl/tktview/aee9f2)
 - [Temporary folder with file "tcl9registry13.dll" remains after "exit"]
   (https://core.tcl-lang.org/tcl/tktview/6ce3c0)
 - [Wrong result by "lsearch -stride -subindices -inline -all"]
   (https://core.tcl-lang.org/tcl/info/5a1aaa)
 - [TIP 609 - required Tcl_ThreadAlert() skipped with nested event loop]
   (https://core.tcl-lang.org/tcl/info/c7e4c4)
 - [buffer overwrite for non-BMP characters in utf-16]
   (https://core.tcl-lang.org/tcl/tktview/66da4d)
 - [zipfs info on mountpoint of executable returns zero offset in field 4"]
   (https://core.tcl-lang.org/tcl/info/aaa84f)
 - [zlib-8.8, zlib-8.16 fail on Fedora 40, gcc 14.1.1]
   (https://core.tcl-lang.org/tcl/tktview/73d5cb)
 - [install registry and dde in $INSTALL_DIR\lib always]
   (https://core.tcl-lang.org/tcl/tktview/364bd9)
 - [cannot build .chm help file (Windows)]
   (https://core.tcl-lang.org/tcl/tktview/bb110c)
# Incompatibilities
 - No known incompatibilities with the Tcl 9.0.0 public interface.
# Updated bundled packages, libraries, standards, data
 - Itcl 4.3.2
 - sqlite3 3.47.2
 - Thread 3.0.1
 - TDBC\* 1.1.10
 - tcltest 2.5.9
 - tzdata 2024b, corrected
    9.0.0
# Major Features
## 64-bit capacity: Data values larger than 2 GB
 - 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.
 - `msgcat` supports custom locale search list
 - `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.
# Incompatibilities
## Notable incompatibilities
 - Unqualified varnames resolved in current namespace, not global.
   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.
   (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`]
 - Removed `-eofchar` option for write channels.
 - 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`.
   (See `coroinject` and `coroprobe` for supported commands with
   significantly more comprehensible semantics.)
## Incompatibilities in C public interface
 - Extensions built against Tcl 8.6 and before will not work with
   Tcl 9.0;
   ABI compatibility was a non-goal for 9.0.  In _most_ cases,
   rebuilding against Tcl 9.0 should work except when a removed API
   function is used.
 - 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 registration of several `Tcl_ObjType`s.
 - Removed API functions:
    - `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()`
 - Revised many internals; beware reliance on undocumented behaviors.
# 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.
## New command options
 - `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.
 - `socket ... -nodelay ... -keepalive ...`
 - `vwait` controlled by several new options
 - `expr` string comparators `lt`, `gt`, `le`, `ge`
 - `expr` supports comments inside expressions
## Numbers
 - <code>0<i>NNN</i></code> format is no longer octal interpretation.
   Use <code>0o<i>NNN</i></code>.
 - <code>0d<i>NNNN</i></code> format to compel decimal interpretation.
 - <code>NN_NNN_NNN</code>, 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`
    8.6.16
Bug fixes and corrections to erratic behavior
   * Regression in [clock] timezones due to revised tzdata format
   * Improper startup if [pwd] contains a file named init.tcl
   * Fix crashes or hangs in...
      - TclOO + coroutine, oo-1.25
      - lifecycle management of the attributes of a menu entry
      - [grid] and [pack] handling of half-dead argument
      - Tk_DeleteErrorHandler()
      - overwrite of thread data by Tk initialization in second interp
   * Prevent negative zlib stream checksums, zlib-15.1
   * Filesystem path efficiency from skipping unnecessary normalization
   * Revised [clock scan] consistent with leap second timestamp validation
   * Updated bundled packages, libraries, standards, data
      - Itcl 4.3.2
      - sqlite3 3.47.2
      - Thread 2.8.11
      - TDBC* 1.1.10
      - tcltest 2.5.9
      - tzdata 2024b, corrected
    8.6.15
Bug fixes and corrections to erratic behavior
   * [TIP 692] Deprecate Tcl_GetAlias(). Migrate to Tcl_GetAliasObj()
   * Invoke binding scripts for events with detail field NotifyInferior
        *** POTENTIAL INCOMPATIBILITY ***
   * Tcl_NewObjectInstance() errors on namespace re-use.
        *** POTENTIAL INCOMPATIBILITY -- breaks Itcl 4.2 ***
   * TCL_PACKAGE_PATH change from Tcl list to platform path convention
        *** POTENTIAL INCOMPATIBILITY ***
   * Make [self] work inside [$obj eval]
   * Fix [$obj varname] for linked varnames
   * Restore access to alternate data streams (ADS) in NTFS filesystems.
   * Fix crashes or hangs in...
      - TclOO + coroutine, oo-22.[34]
      - entangled destructor and namespace deletion, oo-35.7.*
      - destruction of reflected channel, iocmd-32.3.*
      - select notifier with file descriptor >= FD_SETSIZE
      - [child invokehidden info frame], info-40.0
      - [focus -force], focus-8.1
      - [$canvas dchars], canvas-11.4
      - [$menubutton destroy]
   * Appearance improvements for...
      - focus ring, arrows, and classic theme.
      - last item in a [ttk::treeview].
      - down arrow in [ttk::combobox].
   * Repair [$photo read -from] flaws in GIF,PNG formats. imgPhoto-19.*
   * [$photo copy] coordinate check error. See imgPhoto-12.5
   * Detect corrupt GIF file and raise error. See imgPhoto-18.6.1
   * Fixes to [ttk::treeview] subcommands 'see' and 'bbox'.
   * Fix default font detection for high DPI
   * [treeview identify] now point aware
   * Fix broken undo/redo in [text] widget.
   * Fix GENFUNC mode of Tcl_ParseArgsObjv(). See tests indexObj-7.*
   * Fix removal of oo variable by [info exists]. See oo-19.4
   * Fix byte compiled [incr] with wide int increment. See incr-1.31
   * Repair encoding flaws in [info hostname] visible for non-ASCII names.
   * Fix incorrect [string is control] results on some private codepoints
   * Autoload of [::tcl::tm::path]
   * Fix missing error message in some [interp limit] failures.
   * Improved hash performance for some hash tables.
   * Performance optimizations in several encoding primitives.
   * Correction to rare failed startup search for system encoding
   * Add encodings: koi8-ru, koi8-t
   * Add keycodes ISO_Group_Shift and dead_hamza
   * Updated bundled packages, libraries, standards, data
      - Itcl 4.3.0 -- supports multi-thread operations
      - sqlite3 3.45.3
      - Thread 2.8.10
      - TDBC* 1.1.9
      - tcltest 2.5.8
      - libtommath 1.3.0
      - Unicode 16
      - tzdata 2024b

Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/rootfiles/common/tcl
lfs/tcl