Wow. Nasty. That goes to show how subtle these optimisations are. I've spent some more time coming up with a new proposal how to eliminate the excessive copying, and this bug shows just how hard it is to get right.
Anyway, I'll post a new thread at a later time with my ideas. Regards, Elias On 25 May 2014 18:01, "Juergen Sauermann" <[email protected]> wrote: > Hi, > > Oops - this is created by an optimization that fired back: > > ]log 38 > Log facility 'optimization messages ' is now ON > ⍴⍬ > 0 > 0 42 42⍴⍬ > optimizing A⍴B > ⍴⍬ > 0 42 42 > > I will look into this. In the meantime you could change line 144 in > PrimitiveFunction.cc from > > * if (len_Z <= len_B && B->is_temp())* > > to: > * if (0)* > > /// Jürgen > > > On 05/24/2014 09:30 PM, David B. Lamkins wrote: > > (I'm adding Jürgen to the Cc: list. I have evidence that this may not be > related to gnu-apl-mode, but rather to gnu-apl itself.) > > It appears that reshape is somehow mutating certain empty objects to > which is applied. > > 0 0⍴⍬ > ⍴⍬ > 0 0 > 0 0⍴'' > ⍴'' > 0 > > The above is from my gnu-apl-mode session. Interestingly, I *do* see the > bug when reshaping zilde, but *not* when reshaping the empty character. > > Here's the interesting bit: I *can* reproduce the reshape zilde bug > without gnu-apl-mode. The transcript in GNU APL by itself (started in a > Bash shell as `$ apl`) is identical to the transcript shown above. > > Furthermore, here's evidence to suggest that the bug may only be tickled > by a reshape of a constant value. (This is a transcript of a > gnu-apl-mode session after having restarted APL to clear the mutated > zilde.) > > b←⍬ > ⍴b > 0 > 0 0⍴b > ⍴b > 0 > ⍴⍬ > 0 > 0 0⍴⍬ > ⍴⍬ > 0 0 > ⍴b > 0 > > > On Sat, 2014-05-24 at 10:57 -0500, Blake McBride wrote: > > More interesting facts in emacs mode: > > > ⍴'' > 0 > 1 1⍴' ' > > ⍴'' > 0 > 0 0⍴' ' ⍝ reshape of space > ⍴'' > 0 > 0 0⍴'' ⍝ reshape of quote quote > ⍴'' > 0 0 > )CLEAR > CLEAR WS > ⍴'' > 0 0 > > > > > > > > > > > >
