Tcl Source Code

View Ticket
Login
Ticket UUID: 4f06d7ca089e8a6d2321cdf59da48be09654013d
Title: package require in secondary interpreters fails for static packages
Type: Bug Created on: 2026-05-09 05:20:33
Submitter: apnadkarni Assigned to: nobody
Subsystem: 39. Package Manager Severity: Minor
Priority: 5 Medium Last modified: 2026-05-16 15:58:40
Status: Open Closed by: nobody
Resolution: None Closed on:
Version: 8.6
Description:

The failure is demonstrated as below (this needs to be a static Tcl shell)

% info pat
8.6.18
% package req registry
1.3.5
% interp create ip
ip
% ip eval {package require registry}
can't find package registry
% ip eval {load {} Registry}
% exit

The original report came from @morganw on the chat with the script below that does not print 1 2 3 in a static shell.

set scriptDir [file dirname [file normalize [info script]]]
set libDir [file join $scriptDir "lib"]
lappend auto_path $libDir

package require Thread

set workerThread [thread::create [subst {
    lappend auto_path $libDir
    package require registry
    thread::wait
}]]

thread::send -async $workerThread { list 1 2 3 } result
vwait result
puts $result
User Comments:
apnadkarni added on 2026-05-09 05:22:26:

As far as I can tell, this bug is present in Tcl versions that go way back and a workaround is to "load {} Registry" (or appropriate static package) so I do not feel this need hold up 8.6.18 or change its status as the "final" 8.6 release.


apnadkarni added on 2026-05-16 15:58:40:
Fixed for 9.0 in [624bac9741].

9.1 fix proposed in TIP 755.