Tcl package Thread source code

View Ticket
Login
Ticket UUID: d3f41333aa42ca4db36821fddfae90342259381e
Title: Compiling for Tcl 8 with Tcl 9 headers redefines typedefs
Type: Bug Version: 3.0.4
Submitter: jmroot Created on: 2026-04-13 23:08:01
Subsystem: 80. Thread Package Assigned To: jan.nijtmans
Priority: 5 Medium Severity: Important
Status: Closed Last Modified: 2026-04-21 03:26:57
Resolution: Fixed Closed By: jmroot
    Closed on: 2026-04-21 03:26:57
Description:
When using a pre-C11 compiler to build thread for Tcl 8 using the Tcl  9 headers, as is done in the main Tcl 9.0.3 distribution, compilation fails:

In file included from /opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/threadSvCmd.c:16:
In file included from /opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/tclThreadInt.h:18:
/opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/tclThread.h:33:26: error: redefinition of typedef 'Tcl_ObjCmdProc' is invalid in C [-Wtypedef-redefinition]
  typedef Tcl_ObjCmdProc Tcl_ObjCmdProc2;
                         ^
In file included from /opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/threadSvCmd.c:16:
In file included from /opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/tclThreadInt.h:18:
In file included from /opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/tclThread.h:23:
/opt/bblocal/var/buildworker/base/build/vendor/tcl/generic/tcl.h:604:25: note: instantiated from:
#define Tcl_ObjCmdProc2 Tcl_ObjCmdProc
                        ^
/opt/bblocal/var/buildworker/base/build/vendor/tcl/generic/tcl.h:590:14: note: previous definition is here
typedef int (Tcl_ObjCmdProc) (void *clientData, Tcl_Interp *interp,
             ^
In file included from /opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/threadSvCmd.c:16:
In file included from /opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/tclThreadInt.h:18:
/opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/tclThread.h:35:15: error: redefinition of typedef 'Tcl_Size' is invalid in C [-Wtypedef-redefinition]
  typedef int Tcl_Size;
              ^
In file included from /opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/threadSvCmd.c:16:
In file included from /opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/tclThreadInt.h:18:
In file included from /opt/bblocal/var/buildworker/base/build/vendor/tcl/pkgs/thread3.0.4/generic/tclThread.h:23:
/opt/bblocal/var/buildworker/base/build/vendor/tcl/generic/tcl.h:326:17: note: previous definition is here
    typedef int Tcl_Size;
                ^
User Comments: jmroot added on 2026-04-21 03:26:57:
Thank you. Confirming that Thread builds fine with the current core-9-0-branch.

jan.nijtmans added on 2026-04-20 13:27:54:

This should (finally) be fixed here


jmroot added on 2026-04-18 01:33:25:
That fixed the Tcl_Size error but not the Tcl_ObjCmdProc one.

Also, itcl is failing to build after that change. Should I open a separate ticket for that?

jan.nijtmans added on 2026-04-17 08:17:34:

This should be fixed with this commit in the Tcl repository.

Can you confirm it works?