I have just committed VarReform [Patch 1750051] to HEAD. This has
potential incompatibilities as described in the ChangeLog entry
Extensions known to need a source adaptation and recompile include
incrTcl (I'll fix that one myself), XOTcl, tbcload.
Should your extension be concerned, please do not hesitate to ask me for
assistance in adapting it to the new code for variables.
*** POTENTIAL INCOMPATIBILITY *** (tclInt.h and tclCompile.h)
Extensions that access internals defined in tclInt.h and/or
tclCompile.h may lose both binary and source compatibility. The
relevant changes are:
1. 'struct Var' is completely changed, all acceses to its internals
(either direct or via the TclSetVar* and TclIsVar* macros) will
malfunction. Var flag values and semantics changed too.
2. 'struct Bytecode' has an additional field that has to be
initialised to NULL
3. 'struct Namespace' is larger, as the varTable is now one
pointer larger than a Tcl_HashTable. Direct access to its fields
4. 'struct CallFrame' grew one more field (the second such growth
with respect to Tcl8.4).
5. api change for the functions TclFindCompiledLocal,
TclDeleteVars and many internal functions in tclVar.c
Additionally, direct access to variable hash tables via the
standard Tcl_Hash* interface is to be considered as deprecated. It
still works in the present version, but will be broken by further
specialisation of these hash tables. This concerns especially the
table of array elements in an array, as well as the varTable field
in the Namespace struct.
Odds on BLT will also be broken by this, as it pokes its nose in very
deep into Tcl's internals.