Tcl 9.0 Beta 1
Draft
Tcl 9.0 is the first major release of Tcl in many years. It contains a number of key features:
- 64 bit support - elimination of most 32-bit size constraints so that Tcl can process larger data sets
- full unicode support (including full emoji support in Tk)
- zip filesystem support, including for archives attached to executables (zipkits)
- support for a very large number of file descriptors on POSIX platforms which support the kqueue/epoll system calls (a.k.a. the 10k problem).
- the removal of many deprecated features
In addition, the companion Tk GUI toolkit contains some significant improvements:
- much improved macOS support, allowing the design and implementation of Tcl/Tk apps with a native look and feel
- improved X11 look and feel "out of the box"
- extended photo image functionality, including support for reading and writing metadata and alpha support
- support for reading SVG images
- scaling awareness for the Tk core, Ttk widgets, standard dialogs and built-in themes
- built-in print support
- significantly improved support for scrolling via two-finger gestures on macOS and Windows
Related documents
- Migration guide for Tcl scripts
- Migration guide for Tcl C extensions
- Apps migrated to Tcl 9
- Porting extensions to Tcl 9
Release Candidate 3 - 21 December 2023
Now available at Tcl @ Sourceforge are the RC3 candidate source code distribution pre-releases of Tcl 9.0b1 and Tk 9.0b1 and bundled packages.
These releases are nearly unchanged from RC2. The only changes are in some of the TDBC* packages. It is expected that these release artifacts will be renamed to become the Tcl/Tk 9.0b1 releases in the next several days. Only the most severe problems will stop that now, with remaining bugs deferred to be handled in future releases.
Release Candidate 2 - 14 December 2023
This release candidate is currently being prepared. Aside from bug fixes resulting from the previous release candidate, this one includes Tcl 9.0b1 rc1, Tk 9.0b1 rc1 and common packages that have been migrated to Tcl 9.0. These are included to make it easier to try Tcl9.0b1 with your existing programs, without the need to migrate these packages yourself.
The Tcl 9.0 beta1 rc1 distribution includes the following bundled packages:
- Thread - the Thread extension for Tcl 9.0
- [incr Tcl] - an object oriented extension for Tcl
- SQLite - the most used database engine in the world
- tdbc Core - the Tcl database connectivity core package
- tdbc SQLite - TDBC SQLite driver
- tdbc Postgres - the TDBC Postgres driver
- tdbc mysql - the TDBC MySQL driver
- tdbc ODBC - the TDBC ODBC driver
The package are built by default, but if you don't need them (or if they won't build on your platform) then remove the corresponding sub-folder from the pkgs folder.
The following packages are pkgs compliant, meaning they can be linked to from the tcl/pkgs folder (or copied there) and they will build along with Tcl:
- tdom - XML/DOM processing
- tcllib - The Tcl Library, a kitchen-sink of packages
- tklib - The Tk Library, a counterpart for tcllib
- tclvfs - Tcl Virtual Filesystems tools (used by the xlsx and ooxml packages for reading Excel spreadsheets)
The following packages need to be installed besides Tcl 9.0 and built separately:
- Tk - The GUI Toolkit for Tcl
- tcltls - TLS socket support
- [tklib] - the Tk counterpart to Tcllib - useful tools and widgets
- [incr Tk] - Facilities to make Tk widgets with [incr Tcl] objects.
Many other packages have been migrated to Tcl 9.0 and are documented at Porting extensions to Tcl 9.
Release Candidate 1 - 29 November 2023
This is the latest in a sequence of candidate releases leading to the release of Tcl 9.0b1 and TK 9.0b1. Testing of builds and operations on multiple platforms is invited. Open tickets on any problems discovered, or raise the issue in a reply to this message. The aim is to clean up the problems that are easily discovered so that a broader audience receiving the Tcl 9.0b1 and Tk 9.0b1 releases can focus attention on deeper issues needing beta testing to discover.
This pre-release includes a pre-release of the package Thread 3.0b1. The same level of vetting on it is also appreciated.
Primary objective
- to enable people to build and test Tcl 9.0 and Tk 9.0 on various platforms
Includes
- the Tcl source
- the Tk source
- the Thread extension for Tcl 9.0
- the SQLite 3.44.2 and itcl 4.2.4 bundled packages
Download from
Individual distributions of related packages are also available from this location
Release Candidate 0 - 14 November 2023
This is the first of a sequence of candidate releases leading to the release of Tcl 9.0b1. Testing of builds and operations on multiple platforms is invited. Open tickets on any problems discovered, or raise the issue in a reply to this message. The aim is to clean up the problems that are easily discovered so that a broader audience receiving the Tcl 9.0b1 release can focus attention on deeper issues needing beta testing to discover.
This pre-release includes a pre-release of the package Thread 3.0b1. The same level of vetting on it is also appreciated.
Primary objective
- to enable people to build and test Tcl 9.0 on various platforms
Includes
- the Tcl source
- the Thread extension for Tcl 9.0
Download from
An isolated distribution of the Thread 3.0b1rc0 pre-release is also available