Newsgrouper 🗨 💬 🗯 💭

Article with message-id: <[email protected]>

From: Don Porter <[email protected]>
Newsgroups: comp.lang.tcl
Subject: Tcl 9.1.0 RELEASED
Date: Tue, 29 Sep 2026 12:34:25 -0400

Tcl 9.1.0 Release Announcement
==============================

September 29, 2026

The Tcl Core Team is pleased to announce the release of Tcl 9.1.0.
This is the first stable release of Tcl 9.1.  This should replace all
prior alpha or beta releases.

Tcl is the Tool Command Language originated by John Ousterhout and his
team at U.C. Berkeley in the late 1980s.  Its development is continued
by the efforts of a global network of volunteers guided by the Tcl Core Team.

We would like to express our gratitude to all those who submit bug
reports and patches.  This information is invaluable in enabling us
to identify and eliminate problems. Such reports can be submitted here.

> [Tcl Ticket Tracker](https://core.tcl-lang.org/tcl/ticket)
We ask that you log in (anonymous if you wish) to create tickets. This deters abuse of the ticketing system:
> [Tcl Contributor Login](https://core.tcl-lang.org/tcl/login)
Where to get the new releases ============================= Tcl 9.1.0 sources are freely available as open source from the Tcl SourceForge project's file distribution area:
> [Tcl Source Distribution](https://sourceforge.net/projects/tcl/files/)
The Tcl 9.1.0 distribution is source code only. We keep links to some third parties offering pre-built binaries for various systems here:
> [Tcl Binary Distribution](https://www.tcl-lang.org/software/tcltk/bindist.html)
Tcl Summary =========== The Tcl distribution delivers C source code that builds into a C library providing interpreters and related supports to execute programs written in the Tcl programming language. Source code for the application program `tclsh` is also included. `tclsh` provides a shell for either interactive execution of Tcl commands, or execution of files containing Tcl programs. Tcl is an extensible language, and the Tcl C library provides interfaces for the creation of extension libraries adding new commands and features to the core Tcl command set. Tcl 9 debuts the full feature set needed to package an application written in C and Tcl into a single file executable exploiting virtual filesystem archives. Tcl 9.1 Release Summary ======================= This is a new minor version of Tcl. When compared with the prior release Tcl 9.0, there are new features to be enjoyed. The intention in a minor release is that new features are added without breaking extensions or applications that were written to the interfaces of the prior minor release. A small number of known incompatibilities are noted below. Tcl Improvement Proposals (TIPs) ================================ Each new user-visible feature in Tcl should find its origins in a Tcl Improvement Proposal (TIP). TIPs are published, edited, considered and voted in public, and should contain valuable information about how a feature came to be the way it is. See the full collection here:
> [TIP Index](https://tip.tcl-lang.org/)
Tcl Changes Summary =================== (from changes.md in the source code distribution) The source code for Tcl is managed by fossil. Tcl developers coordinate all changes to the Tcl source code at
> [Tcl Source Code](https://core.tcl-lang.org/tcl/timeline)
Release Tcl 9.1.0 arises from the check-in with tag `core-9-1-0`. Highlighted differences between Tcl 9.1 and Tcl 9.0 are summarized below, with focus on changes important to programmers using the Tcl library and writing Tcl scripts. # Incompatibilities - [Remove `expr` behavior from `lseq`](https://core.tcl-lang.org/tips/doc/trunk/tip/746.md) *Incompatibility* - [File paths are now treated as case-insensitive on MacOS](https://core.tcl-lang.org/tcl/tktview/e6ca0b1b) *Incompatibility* - New command `tcl::registry` as replacement for the `registry` command without needing the registry package to be loaded. The registry module is now part of the core Tcl DLL in all build configurations. - [Custom applications must call Tcl\_FindExecutable or TclZipfs_AppHook to initialize Tcl](https://core.tcl-lang.org/tips/doc/trunk/tip/732.md) *Potential incompatibility* - [Search path for locating Tcl core script and encodings is changed](https://core.tcl-lang.org/tips/doc/trunk/tip/732.md) *Potential incompatibility* # New commands and options - [New options `-backslashes`, `-commands` and `-variables` for `subst` command](https://core.tcl-lang.org/tips/doc/trunk/tip/712.md) - [New command `unicode` for Unicode normalization](https://core.tcl-lang.org/tips/doc/trunk/tip/726.md) - [New `timer` command, switch to monotonic clock and microsecond resolution](https://core.tcl-lang.org/tips/doc/trunk/tip/723.md) - [New `lfilter` command for selecting items from a list](https://core.tcl-lang.org/tips/doc/trunk/tip/735.md) - [Many new functions from C99](https://core.tcl-lang.org/tips/doc/trunk/tip/745.md), specifically: `acosh()`, `asinh()`, `atanh()`, `cbrt()`, `copysign()`, `dim()`, `erf()`, `erfc()`, `exp2()`, `expm1()`, `fma()`, `gamma()`, `ldexp()`, `lgamma()`, `log1p()`, `log2()`, `logb()`, `nextafter()`, `remainder()`, `signbit()`, and `trunc()`, and (for functions that return multiple values in their C99 API) the commands: `divmod`, `frexp`, `modf`, and `remquo`. (See [this page](https://en.cppreference.com/w/c/numeric/math.html) for more information about these functions; the Tcl functions are _intentionally_ only thin wrappers around the functions in the C99 standard.) - [New `switch` option `-integer` to compare values as integers](https://core.tcl-lang.org/tips/doc/trunk/tip/730.md) - [Reading and writing of child interpreter variables](https://core.tcl-lang.org/tips/doc/trunk/tip/728.md) - [Updated Tcl Bytecode opcodes](https://core.tcl-lang.org/tips/doc/trunk/tip/720.md) - [Add support for `\z` in regex as end-of-string anchor](https://core.tcl-lang.org/tcl/info/fbc56b259e) - New `tcltest::configure` option `-iterations` to control number of iterations of each test. # New public C API - [`Tcl_IsEmpty()` &mdash; checks if the string representation of a value would be the empty string](https://core.tcl-lang.org/tips/doc/trunk/tip/711.md) - [`Tcl_GetEncodingNameForUser()` &mdash; returns name of encoding from user settings](https://core.tcl-lang.org/tips/doc/trunk/tip/716.md) - [`Tcl_AttemptCreateHashEntry()` &mdash; version of `Tcl_CreateHashEntry()` that returns NULL instead of panic'ing on memory allocation errors](https://core.tcl-lang.org/tips/doc/trunk/tip/717.md) - [`Tcl_ListObjRange()`, `Tcl_ListObjRepeat()`, `Tcl_ListObjReverse()` &mdash; C API for new list operations](https://core.tcl-lang.org/tips/doc/trunk/tip/649.md) - [`Tcl_UtfToNormalized()`, `Tcl_UtfToNormalizedDString()` &mdash; C API for Unicode normalization](https://core.tcl-lang.org/tips/doc/trunk/tip/726.md) - [`Tcl_UtfToExternalEx()` and `Tcl_ExternalToUtfEx()` &mdash; C encoding API supporting output buffers larger than INT_MAX](https://core.tcl-lang.org/tips/doc/trunk/tip/737.md) - [New API for monotonic clock and microseconds resolution](https://core.tcl-lang.org/tips/doc/trunk/tip/723.md) - [Windows `auto_execok` enhancements and `exec` search reform](https://core.tcl-lang.org/tips/doc/trunk/tip/753.md) - [New timer API using long long in stead of Tcl_Time](https://core.tcl-lang.org/tips/doc/trunk/tip/752.md) - [`Tcl_RegisterPostInitProc` callback for post-initialization of interpreters](https://core.tcl-lang.org/tips/doc/trunk/tip/755.md) # Performance - [Memory efficient internal representations](https://core.tcl-lang.org/tcl/wiki?name=New+abstract+list+representations) for list operations on large lists. - [Continued 64-bit capacity: Command line arguments larger than 2Gb](https://core.tcl-lang.org/tips/doc/trunk/tip/626.md) - [Support for long paths on Windows](https://core.tcl-lang.org/tips/doc/trunk/tip/744.md) - [Faster UTF-8 encoding and I/O](https://core.tcl-lang.org/tcl/wiki?name=Faster+UTF+encoding) - Faster interpreter creation # Bug fixes - [Inconsistent `glob` matching on MacOS](https://core.tcl-lang.org/tcl/tktview/e6ca0b1b) - [`file normalize` does not uniquely identify a file on MacOS](https://core.tcl-lang.org/tcl/tktview/10890417) - [Inconsistencies between `cd` and `file normalize` for volume-relative paths on Windows](https://core.tcl-lang.org/tcl/tktview/bca391ab) - [Tcl cannot run from an arbitrary build directory with --disable-zipfs](https://core.tcl-lang.org/tcl/tktview/006bef5d) - [Crash on finalization with an active thread running.](https://core.tcl-lang.org/tcl/tktview/e55a589d) - [Crash on use-after-free in Windows socket thread.](https://core.tcl-lang.org/tcl/tktview/06f19cc4) # Updated bundled packages, libraries, standards, data - Unicode 18.0.0 - platorm 1.2.0: Add support for musl C runtime For additional information: =========================== Please visit the Tcl Developer Xchange web site:
> [Tcl Developer Xchange](https://www.tcl-lang.org/)
This site contains a variety of information about Tcl/Tk in general, the core Tcl and Tk distributions, Tcl development tools, and much more. -- Tcl Core Team and Maintainers Don Porter, Tcl Core Release Manager -- | Don Porter Applied and Computational Mathematics Division | | [email protected] Information Technology Laboratory | | http://math.nist.gov/~DPorter/ NIST | |______________________________________________________________________|