Newsgrouper 🗨 💬 🗯 💭
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.
We ask that you log in (anonymous if you wish) to create tickets.
This deters abuse of the ticketing system:
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:
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 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:
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
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()` — 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()` — returns name of encoding from user settings](https://core.tcl-lang.org/tips/doc/trunk/tip/716.md)
- [`Tcl_AttemptCreateHashEntry()` — 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()` — C API for new list operations](https://core.tcl-lang.org/tips/doc/trunk/tip/649.md)
- [`Tcl_UtfToNormalized()`, `Tcl_UtfToNormalizedDString()` — C API for Unicode normalization](https://core.tcl-lang.org/tips/doc/trunk/tip/726.md)
- [`Tcl_UtfToExternalEx()` and `Tcl_ExternalToUtfEx()` — 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:
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 |
|______________________________________________________________________|