Spike-1002
Spike-1002

Reputation: 13

Which commands and functions are not supported in TCL based on the version

SO far I've been using TCL 8.6 , but recently I had to move back to 8.0 because the program I am using only supports 8.0

The issue is that I can't find a documentation or a comparison between what new commands and functions are compatible and what are not

Are there any websites that contain such info

//please note that I checked the tcl.tk website and it only features what is new per version but not so specific

Upvotes: 1

Views: 127

Answers (3)

Donal Fellows
Donal Fellows

Reputation: 137767

Only supporting 8.0? That's rather old. (I've still got some systems like that, but they're really just on life support.)

The second-most definitive source of what has changed between versions is the changes file in any Tcl source code distribution. (The first most accurate source is comparing the source code, but that's a bit annoying prior to 8.1 for various unimportant reasons.) You can use the current version for this, since those old parts of that file are effectively static; here's the equivalent for Tk. The file includes a lot more information than you probably need, including mentioning many of the more significant bugfixes as well as some cases where functionality flapped a bit during betas (we try to avoid doing that, but it happens occasionally).

However, the big things that far back are fairly simple, so we can probably narrow the things to watch out for to these big-ticket items:

  • Expansion syntax ({*}...) was introduced in Tcl 8.5. Before that, you use eval a lot more.
  • There's a large bunch of commands in modern Tcl that simply weren't there back then. There are workarounds for some of these; easier to just try and see what's actually missing that you expect and then ask here again than to try to anticipate them all. Some known exceptions that are known to be entirely unavailable for 8.0:
    • dictionaries
    • ensembles
    • coroutines
    • the TclOO object system
    • the Ttk widget set
  • Tcl 8.0 assumed that characters were always 8-bit quantities and made no attempt to understand encodings. It just slings bytes around. (This also means that the encoding command was absent, and so too was the -encoding option to fconfigure.)
    • Make sure you only use ASCII in your scripts themselves. Saves pain.
  • The RE engine in 8.0 was different to the one used from 8.1 onwards. It's much simpler, and supports only a fraction of what the newer engine does.
  • Threading support in 8.0 and before is not for the faint of heart. Assume your code is single-threaded and avoid a lot of difficult debugging.

Upvotes: 2

Colin Macleod
Colin Macleod

Reputation: 4382

http://www.tcl.tk/man/ has links to documentation for Tcl commands in various versions from 7.5 to 8.6, though it skips 8.1 for some reason.

Upvotes: 2

Peter Lewerin
Peter Lewerin

Reputation: 13282

This page, and the pages it links to, have fairly detailed information on command and syntax changes. You may have to search backwards to find the first version that supports the feature you're wondering about.

Upvotes: 2

Related Questions