Tcl Source Code

View Ticket
Login
Ticket UUID: 3e30dc62e0125d706c1fd1b1f0c53099c394a16d
Title: compiled [lappend] in proc fails to fire read traces
Type: Bug Version: trunk
Submitter: dgp Created on: 2015-11-16 20:36:55
Subsystem: 47. Bytecode Compiler Assigned To: nobody
Priority: 5 Medium Severity: Important
Status: Open Last Modified: 2015-11-16 23:08:28
Resolution: None Closed By: nobody
    Closed on:
Description:
% set x {}           
% trace add variable x read {apply {args {puts $args}}}
% lappend x a
x {} read
a
% apply {{} {
set x {}  
trace add variable x read {apply {args {puts $args}}}
lappend x a
}}
a
% apply {{} {
set x {}  
trace add variable x read {apply {args {puts $args}}}
[subst lappend] x a
}}
x {} read
a
% apply {{} {
set x {}  
trace add variable x read {apply {args {puts $args}}}
lappend x a b
}}
x {} read
a b
User Comments: dgp added on 2015-11-16 23:08:28:
This mess is tied up with Bug 3057639, and

http://core.tcl.tk/tcl/info/21b6b23

where the loss of read traces was apparently intentionally
done, at least kinda sorta, with a claim that new tests
append*-9.* demand the changed behavior -- no read
traces from lappend

Trouble is that other tests including append-7.[234]
and trace-3.[12] demand that the traces be there.

This continuing inconsistency is left hanging in 3057639,
which is in fact still open.

Now the new wrinkle is that a whole new collection
of bytecodes INST_LAPPEND_LIST_*& have been invented
and they adopt the "traces? YES!" side of the dilemma.
So we have yet a new dimension of inconsistency, and
this one appears to be wrapped up in performance
differences too (the only reason I'm down this rabbit hole).