Tcl package Thread source code

View Ticket
Login
Ticket UUID: 16bf24d70b875e15d9bbde64f090eef1dae943a6
Title: Installed Thread for Tcl 8.7 breaks availability of Thread in 8.6
Type: Bug Version: 2.8.8
Submitter: dgp Created on: 2022-11-18 18:37:35
Subsystem: - New Builtin Commands Assigned To: jan.nijtmans
Priority: 5 Medium Severity: Important
Status: Closed Last Modified: 2022-11-18 19:57:31
Resolution: Fixed Closed By: jan.nijtmans
    Closed on: 2022-11-18 19:57:31
Description:
In any scenario where builds against both 8.6 and 8.7 are getting installed, this can happen.

$ ./tclsh
% info patch
8.6.12
% package require Thread
version conflict for package "Tcl": have 8.6.12, need 8.7a6
% package versions Thread
2.6.6 2.6.7 2.7.0 2.7b1 2.7.1 2.7.3 2.8.0 2.8.1 2.8.4 2.8.5 2.8.7 2.8.8
% package require -exact Thread 2.8.7
2.8.7

If the [load] is going to fail when attempted in an 8.6 interpreter, then
the pkgIndex.tcl script needs to prevent [package ifneeded] from being
called in an 8.6 interpreter.
User Comments: jan.nijtmans added on 2022-11-18 19:57:31:

This is not a problem in Thread 2.8.8, it's built-in in Tcl 8.7's header-file on purpose: Whenever Tcl API's are unstable, we don't want extensions compiled against such header-files to be used in stable builds. Whenever the Tcl version changes (e.g. vrom a2 to a3) we want all extensions to be re-compiled otherwise crashes could occur due to API changes (we have seen that happen!)

Now, 8.7 is quite stable, approaching b1. Therefore, this protection is no longer necessary (it hurts in case of Thread 2.8.8). So, I removed it now: 52902124b815667a