Version 6 of Migration to 8.4: Internal Hash Table

Updated 2002-07-17 14:10:05

Michael A. Cleverly reports on comp.lang.tcl:

 #if (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 4)
 #define Tcl_InitHashTableEx(x, y, z) Tcl_InitCustomHashTable(x, y, z)
 #endif

was needed to compile Ck.

MC (17 July): Actually in retrospect it was only needed because I was building with genkit (to build a tclkitck). Ck itself has been updated by its maintainer for Tcl 8.4 at all yet, though it does compile and run fine. Sorry for any confusion.


So, apparently Ck was written to the interface of Tcl 8.4a2? It should be updated to use the interface of Tcl 8.4b1. As noted below, the name changed during alpha development.


From the tcl ChangeLog:

  2001-01-18  Andreas Kupries  <[email protected]>

        * Everything below belongs together, it fixes bug #123153.

        * generic/tcl.h (line 342): A bit more explanation about the
          default value for TCL_PRESERVE_BINARY_COMPATABILITY.

        * generic/tcl.h (line 1208): Define the macro 'Tcl_InitHashTable'
          only when TCL_PRESERVE_BINARY_COMPATIBILITY is not set
          as it kills binary compatibility to 8.3 and earlier
          versions. This is the main part of the patch/change.

        * generic/tcl.decls (line 1469):
        * generic/tclHash.c (Tcl_InitHashTable):
        * generic/tclHash.c (Tcl_InitHashTableEx):
        * generic/tclObj.c (Tcl_InitObjHashTable): Changed
          'Tcl_InitHashTableEx' to 'Tcl_InitCustomHashTable'. This change
          is more of an estethical nature, replacing the ubiquitous 'Ex'
          suffix with a more meaningful name. The introduced binary
          incompatibility is deemed acceptable as it is between alpha
          versions.  Updated callers.

        * doc/Hash.3:
        * unix/mkLinks: Changed 'Tcl_InitHashTableEx' to
          'Tcl_InitCustomHashTable'.

Changes in Tcl/Tk 8.4 Category Porting