Advantages and disadvantages of different Tcl versions

This page supplements the "Tcl/Tk Version Comparison" [L1 ], the related Wiki page "Changes in Tcl/Tk", and a page on "Tcl benchmarks" which specifically compares speed differences between versions.

A(lmost? a)ll of the following versions (plus others missing from this list) are available from the Tcl project on SourceForge.[L2 ]

Tk 2.1 (? 1993?) was the first standard release with a canvas.

Tcl 7.4 and Tk 4.0 were released together on 1 July 1995. Tk 4.0 is a major overhaul [L3 ], with improved focus, image-handling, binding, text, ... All substantial Tk 3.6 scripts require a rewrite to operate properly with Tk 4.0.

7.5 has clock, socket, fileevent, interp, load and package. Versions for MacOS and Win* are standard. The [clock] command has some Y2K issues that were fixed in 8.0. [7.6?].

Tcl 7.5 was the first to offer a --enable-shared configuration.

Tk 4.1, which corresponds to 7.5, acquired grid. 4.2 (7.6) improved grid substantially.

7.6 is smaller than 8.*. It's nicely stable. Quite a few extensions have good 7.6 releases.

Was it 7.6 where the MacOS and Win* versions of Tk first worked well?

7.6 has no support for Unicode. The Windows port of 7.6 has problems with pipes and fileevents. There is no thread support in 7.6. The new superiour regular expression handling isn't in 7.6. 7.6 does not have the new string commands. 7.6 does not have the stubs support, allowing better compatibility with extensions. 7.6 has numerous bugs which have been fixed in newest versions.

8.0 includes byte-code compilation, for most of Tcl, but none of Tk. 8.0 understands binary data, and is the first version where a Tcl string can contain a null character. 8.0 acquired namespaces.

Was 8.0 the last Tk that supported Win3.1?

8.0's expr gained rand() and srand() as built-in functions.

8.0 was the first version to deprecate the use of interp->result. Any extensions that predate 8.0 have to be carefully scrubbed to eliminate this usage.

8.0.5 (9 March 1999) was an extremely stable release, and a great number of extensions still rely on it.


8.1 was the first Tcl version with full support for Unicode.

Alas, the Unicode support made pervasive changes throughout the libraries, and 8.1 was never as stable as later versions. There are very few compatibility changes that keep code from moving forward from 8.1 to later releases, so 8.1 is not recommended even for backward compatibility requirements.


8.3 includes many small but vital improvements [L4 ], including, in particular, Jan Nijtmans's pointer warping, GIF writes, dashed line support, and much more from his long-maintained Dash and Img patch-extensions. 8.3 is highly compatible with 8.1 and 8.2.

8.3.2, released on 9 August 2000, handles stacked channels properly.

8.3.2 generates cleanly under Win* with gcc.

8.4 brings several enhancements to tk: a new spinbox widget, a new panedwindow widget, support for setting disabled widget colors (eg: entry .foo -disabledforeground gray), ...

stay tuned as 8.4 progresses!

Jacl Rules !!!

TV Basically, I think it only has disadvantages to have different versions! But of course given progress, what can one do... Then again: how many new features do I use? Not so many; I notice a tendency to stay with fairly far backward compatible code. That must say something about the language, too.