I have tested the beta dll without the workaround and it works.

Thanks

Sent from my iPhone

> On Feb 28, 2017, at 5:24 AM, Henry Rich <[email protected]> wrote:
> 
> Yes, y =. ,,y will work for sure, but the binary that Eric built (referred to 
> below) should work without your having to change the J source.  Does that 
> indeed also fix the problem?
> 
> Henry Rich
> 
>> On 2/27/2017 11:09 PM, John Baker wrote:
>> I've tested Henry's patch.  The y=.,,y seems to do the trick.  
>> 
>> 
>> 
>>> On Mon, Feb 27, 2017 at 8:25 AM, John Baker <[email protected]> wrote:
>>> Thanks,
>>> 
>>> I will download and test your patch. I've pushed up a work around for JOD 
>>> but Henry's is better.
>>> 
>>> Also, is the addon builder running?  I committed an addon update and never 
>>> saw it appear in package manager updates.
>>> 
>>> Finally, I will hit the donation button. I get more fun out of J than I get 
>>> out of my yearly virus software renewals.
>>> 
>>> John
>>> 
>>> Sent from my iPhone
>>> 
>>> > On Feb 26, 2017, at 9:37 AM, Eric Iverson <[email protected]> 
>>> > wrote:
>>> >
>>> > John,
>>> >
>>> > Henry has fixed the bug and the fix has been pushed to the 806 beta 
>>> > source.
>>> >
>>> > I have built a windows 64 806 beta-1 j.dll binary and have put it at the
>>> > web site download/jengine page.
>>> >
>>> > If possible, please confirm that that binary does indeed fix the bug you
>>> > reported.
>>> >
>>> > We have not yet decided how to handle this bug fix. Regardless, it may 
>>> > take
>>> > a while for it get out to all users. You might want to consider using the
>>> > workaround Henry suggested until the fix is established in the field.
>>> >
>>> >
>>> >
>>> >
>>> >
>>> >> On Sun, Feb 26, 2017 at 8:42 AM, Henry Rich <[email protected]> wrote:
>>> >>
>>> >> Fix is in for the next release.  I used your script to produce a shorter
>>> >> testcase.
>>> >>
>>> >> The error was that
>>> >>
>>> >> name =. , name   NB. or =:
>>> >>
>>> >> would do assignment-in-place even if the value in (name) was in use
>>> >> somewhere else, like in another name, or a mapped file, or a boxed value.
>>> >>
>>> >> Workaround:  replace with
>>> >>
>>> >> name =. , , name
>>> >>
>>> >> Henry Rich
>>> >>
>>> >>
>>> >>
>>> >>> On 2/25/2017 8:09 PM, John Baker wrote:
>>> >>>
>>> >>> Henry,
>>> >>>
>>> >>> The following code reproduces the problem.  The (decomm) verb reassigns 
>>> >>> y
>>> >>> during execution and it lingers.
>>> >>>
>>> >>>
>>> >>> decomm=: 3 : 0
>>> >>> NB.*decomm v--  removes comments  from j words. The (x) argument
>>> >>> NB. specifies whether all blank lines are removed or retained.
>>> >>> NB.
>>> >>> NB. monad:  decomm ctWord
>>> >>> NB.
>>> >>> NB.   decomm jcr 'decomm'  NB. decomment self
>>> >>> NB.
>>> >>> NB. dyad:  pa decomm ctWord
>>> >>> NB.
>>> >>> NB.   1 decomm jcr 'decomm'  NB. remove blanks (default)
>>> >>> NB.   0 decomm jcr 'decomm'  NB. retain all blank lines
>>> >>> 1 decomm y
>>> >>> :
>>> >>> NB. mask of unquoted comment starts
>>> >>> c=. ($y)$'NB.' E. ,y
>>> >>> c=. +./\"1 c > ~:/\"1 y e. ''''
>>> >>> y=. ,y
>>> >>> NB. blank out comments
>>> >>> y=. ' ' (I. ,c)} y
>>> >>> y=. y $~ $c
>>> >>> NB. remove blank lines - default
>>> >>> if. x do. y #~ y +./ . ~: ' ' end.
>>> >>> )
>>> >>>
>>> >>>
>>> >>>
>>> >>> NB. character table representation of j                 words, call:  
>>> >>> jcr 'verb'
>>> >>> jcr=:[: ];._1 (10{a.) , [: 5!:5 <
>>> >>>
>>> >>>
>>> >>> vanishshape=:3 : 0
>>> >>>
>>> >>>
>>> >>> NB. run dewhitejcr (changes shape of y)
>>> >>>
>>> >>> smoutput 'shape of y before';$y
>>> >>>
>>> >>> NB. should  not change shape of y
>>> >>> decomm y
>>> >>>
>>> >>> smoutput 'shape of y after - has changed';$y
>>> >>> )
>>> >>>
>>> >>> NB. run to show shape shifting
>>> >>> vanishshape jcr 'decomm'
>>> >>>
>>> >>>
>>> >>>
>>> >>> On Sat, Feb 25, 2017 at 5:47 PM, John Baker <[email protected] 
>>> >>> <mailto:
>>> >>> [email protected]>> wrote:
>>> >>>
>>> >>>    Boy talk about responsive support. I don't think any of us are
>>> >>>    expecting mostly volunteer J developers to leave parties to
>>> >>>    address bugs.
>>> >>>
>>> >>>    Cheers
>>> >>>
>>> >>>    On Sat, Feb 25, 2017 at 5:09 PM, Henry Rich <[email protected]
>>> >>>    <mailto:[email protected]>> wrote:
>>> >>>
>>> >>>        I got away from the party & can confirm that the error is in
>>> >>>        inplaced y=. ,y .  I still need your testcase so I can verify
>>> >>>        the fix.
>>> >>>
>>> >>>        hhr
>>> >>>
>>> >>>
>>> >>>        On 2/25/2017 6:38 PM, John Baker wrote:
>>> >>>
>>> >>>            Hi Henry,
>>> >>>
>>> >>>            I will put together a simple script that reproduces the
>>> >>>            problem. I will
>>> >>>            send a zip directly to your                 email to avoid 
>>> >>> all the line
>>> >>>            wrapping issues
>>> >>>            people suffer when sending j code through forum mail.
>>> >>>
>>> >>>            Cheers
>>> >>>
>>> >>>            On Sat, Feb 25, 2017 at 4:26 PM, Henry Rich
>>> >>>            <[email protected] <mailto:[email protected]>> wrote:
>>> >>>
>>> >>>                Please send me a simple case to reproduce this.
>>> >>>
>>> >>>                Henry Rich
>>> >>>
>>> >>>
>>> >>>                On 2/25/2017 6:15 PM, John Baker wrote:
>>> >>>
>>> >>>                    Greetings,
>>> >>>
>>> >>>                    While preparing a minor JOD update to better
>>> >>>                    support editing when running
>>> >>>                    JOD from
>>> >>>                    jconsole I noticed the compj verb in JOD was no
>>> >>>                    longer completely
>>> >>>                    compressing words.
>>> >>>
>>> >>>                    This caused my JOD build scripts to fail so I
>>> >>>                    started debugging and
>>> >>>                    noticed
>>> >>>                    J 8.05 can lose the shape of explicit J y
>>> >>>                    arguments under some
>>> >>>                    circumstances. This is
>>> >>>                    a very serious bug! Observe the following
>>> >>>                    debugging trace of the
>>> >>>                    (compressj) word listed
>>> >>>                    at the end of this message.
>>> >>>
>>> >>>                    NB. debugging trace - of running JOD session with
>>> >>>                    all objects created
>>> >>>
>>> >>>                          JVERSION
>>> >>>
>>> >>>                    Engine: j805/j64/windows
>>> >>>
>>> >>>                    Release: commercial/2016-12-11T08:02:16
>>> >>>
>>> >>>                    Library: 8.05.11
>>> >>>
>>> >>>                    Qt IDE: 1.5.3/5.6.2
>>> >>>
>>> >>>                    Platform: Win 64
>>> >>>
>>> >>>                    Installer: J805 install
>>> >>>
>>> >>>                    InstallPath: c:/j64/j64-805
>>> >>>
>>> >>>                    Contact: www.jsoftware.com <http://www.jsoftware.com>
>>> >>>
>>> >>>
>>> >>>
>>> >>>                         dbr 1
>>> >>>
>>> >>>                    1 pick compj_3_ 'docfmt2'
>>> >>>
>>> >>>                    |stop: compressj
>>> >>>
>>> >>>                    | w=.1 e.CWSONLY E.,y
>>> >>>
>>> >>>                    |compressj[13]
>>> >>>
>>> >>>                    $y
>>> >>>
>>> >>>                    28 71
>>> >>>
>>> >>>                    |stop
>>> >>>
>>> >>>                    | iy=.y
>>> >>>
>>> >>>                    |compressj[16]
>>> >>>
>>> >>>                    |stop
>>> >>>
>>> >>>                    | u=.dewhitejcr y
>>> >>>
>>> >>>                    |compressj[17]
>>> >>>
>>> >>>                    |stop
>>> >>>
>>> >>>                    | w
>>> >>>
>>> >>>                    |compressj[18]
>>> >>>
>>> >>>                    $ y
>>> >>>
>>> >>>                    1988
>>> >>>
>>> >>>                    $ iy
>>> >>>
>>> >>>                    1988
>>> >>>
>>> >>>                    At no point is y reassigned in the local scope yet
>>> >>>                    its shape has changed.
>>> >>>                    Even the shape
>>> >>>                    of the copy iy was also changed.  The verb
>>> >>>                    dewhitejcr seems to strip  the
>>> >>>                    shape from y
>>> >>>                    in the local scope.  This verb has been working
>>> >>>                    fine for years so this is
>>> >>>                    clearly some
>>> >>>                    change in J system code.
>>> >>>
>>> >>>                    Local values losing their shape due to system side
>>> >>>                    effects is one of those
>>> >>>                    all out the water bugs.  All the code compressj
>>> >>>                    references is attached
>>> >>>                    below.
>>> >>>
>>> >>>                    Please contact me if you need help reproducing the
>>> >>>                    error.
>>> >>>
>>> >>>                    NB. compressj code follows
>>> >>>
>>> >>>                    compressj=:3 : 0
>>> >>>
>>> >>>
>>> >>>                    NB.*compressj v-- removes all white space from J
>>> >>>                    words and
>>> >>>
>>> >>>                    NB. shortens local                 names. This 
>>> >>> process reduces the
>>> >>>                    readability of
>>> >>>
>>> >>>                    NB. code and should only be applied to production
>>> >>>                    code.
>>> >>>
>>> >>>                    NB.
>>> >>>
>>> >>>                    NB. monad: cl =. compressj ct
>>> >>>
>>> >>>                    NB.
>>> >>>
>>> >>>                    NB. compressj jcr 'verbname'
>>> >>>
>>> >>>                    NB.
>>> >>>
>>> >>>                    NB. NB. call in object context
>>> >>>
>>> >>>                    NB. compressj__UT__JODobj jcr_ajod_ 'compressj_base_'
>>> >>>
>>> >>>
>>> >>>                    NB. check for presence of white space only removal 
>>> >>> tag
>>> >>>
>>> >>>                    w=. 1 e. CWSONLY E. ,y
>>> >>>
>>> >>>
>>> >>>                    NB. always remove white space
>>> >>>
>>> >>>                    u=. dewhitejcr y
>>> >>>
>>> >>>                    if. w do. u return. end.
>>> >>>
>>> >>>
>>> >>>                    NB. do not compress identifiers in code that cannot 
>>> >>> be
>>> >>>
>>> >>>                    NB. reliably classified by the namecats verb.
>>> >>>
>>> >>>                    if. badrc m=. 1 namecats__MK y do. u return. end.
>>> >>>
>>> >>>                    d=. ~. ;(<2 3 4;1){m=. rv m
>>> >>>
>>> >>>
>>> >>>                    NB. check for presence of obfuscation tag
>>> >>>
>>> >>>                    if. o=. 1 e. OBFUSCATE E. ,y do.
>>> >>>
>>> >>>                    NB. local names less J arguments
>>> >>>
>>> >>>                    l=. ;(<1;1){m
>>> >>>
>>> >>>                    l=. l -. JARGS__MK
>>> >>>
>>> >>>                    else.
>>> >>>
>>> >>>                    NB. local names less any single char names
>>> >>>
>>> >>>                    l=. ;(<1;1){m
>>> >>>
>>> >>>                    s=. l #~ 1 = #&> l
>>> >>>
>>> >>>                    l=. l -. s
>>> >>>
>>> >>>                    end.
>>> >>>
>>> >>>
>>> >>>                    NB. remove object                 references
>>> >>>
>>> >>>                    l=. l -. exobrefs l,;(<0;1){m
>>> >>>
>>> >>>
>>> >>>                    NB. local names less any declared and for. names
>>> >>>
>>> >>>                    if. 0=#m=. l -. d do. u return. end.
>>> >>>
>>> >>>
>>> >>>                    NB. remove any names with embedded locale references
>>> >>>
>>> >>>                    if. 0=#m=. m #~ -. islocref&> m do. u return. end.
>>> >>>
>>> >>>
>>> >>>                    if. o do.
>>> >>>
>>> >>>                    NB. form obsfucated name replacements - drop
>>> >>>                    trailing _ in (NAMEALPHA)
>>> >>>
>>> >>>                    bnr=. (<:#NAMEALPHA)&#.@((}:NAMEALPHA)&i.)^:_1
>>> >>>
>>> >>>                    r=. ' ' -.~ ,'/' ,"1 (>m) ,"1 '/' ,"1 OBFUSCPFX
>>> >>>                    ,"1 bnr (#m)?OBFUSCCNT
>>> >>>
>>> >>>                    else.
>>> >>>
>>> >>>                    NB. form replacements from any remaining chars
>>> >>>                    !(*)=. SHORTNAMES
>>> >>>
>>> >>>                    NB. J arguments m n x y u v are not on SHORTNAMES
>>> >>>
>>> >>>                    if. 0=#r=. SHORTNAMES -. ,&.> s do. u return. end.
>>> >>>
>>> >>>                    if. (#r) < #m do.
>>> >>>
>>> >>>                    NB. we have more                 replacements than 
>>> >>> available
>>> >>>                    SHORTNAMES
>>> >>>
>>> >>>                    NB. form base (#r)                 numbers using 
>>> >>> SHORTNAMES digits
>>> >>>
>>> >>>                    bnr=. (#r)&#.@((;r)&i.)^:_1
>>> >>>
>>> >>>                    r=. r,<"1(#r) }. bnr i. #m
>>> >>>
>>> >>>                    end.
>>> >>>
>>> >>>                    r=. ; '/' ,&.> m ,. (#m) {. r
>>> >>>
>>> >>>                    end.
>>> >>>
>>> >>>
>>> >>>                    NB. replace tokens
>>> >>>
>>> >>>                    r changetok u
>>> >>>
>>> >>>                    )
>>> >>>
>>> >>>
>>> >>>
>>> >>>                    decomm=:3 : 0
>>> >>>
>>> >>>                    NB.*decomm v-- removes comments from j words. The
>>> >>>                    (x) argument
>>> >>>
>>> >>>                    NB. specifies whether all blank lines are removed
>>> >>>                    or retained.
>>> >>>
>>> >>>                    NB.
>>> >>>
>>> >>>                    NB. monad: decomm ctWord
>>> >>>
>>> >>>                    NB.
>>> >>>
>>> >>>                    NB. decomm jcr 'decomm' NB. decomment self
>>> >>>
>>> >>>                    NB.
>>> >>>
>>> >>>                    NB. dyad: pa decomm ctWord
>>> >>>
>>> >>>                    NB.
>>> >>>
>>> >>>                    NB. 1 decomm jcr 'decomm' NB. remove blanks (default)
>>> >>>
>>> >>>                    NB. 0 decomm jcr                 'decomm' NB. retain 
>>> >>> all blank lines
>>> >>>
>>> >>>                    1 decomm y
>>> >>>
>>> >>>                    :
>>> >>>
>>> >>>                    NB. mask of unquoted comment starts
>>> >>>
>>> >>>                    c=. ($y)$'NB.' E. ,y
>>> >>>
>>> >>>                    c=. +./\"1 c > ~:/\"1 y e. ''''
>>> >>>
>>> >>>                    y=. ,y
>>> >>>
>>> >>>                    NB. blank out comments
>>> >>>
>>> >>>                    y=. ' ' (I. ,c)} y
>>> >>>
>>> >>>                    y=. y $~ $c
>>> >>>
>>> >>>                    NB. remove blank lines - default
>>> >>>
>>> >>>                    if. x do. y #~ y +./ . ~: ' ' end.
>>> >>>
>>> >>>                    )
>>> >>>
>>> >>>
>>> >>>
>>> >>>                    dewhitejcr=:3 : 0
>>> >>>
>>> >>>
>>> >>>                    NB.*dewhitejcr v-- removes all redundant blanks
>>> >>>                    from J code.
>>> >>>
>>> >>>                    NB. Result is a character list in linear
>>> >>>                    representation format.
>>> >>>
>>> >>>                    NB.
>>> >>>
>>> >>>                    NB. monad: cl =. dewhitejcr ct
>>> >>>
>>> >>>                    NB.
>>> >>>
>>> >>>                    NB. dewhitejcr jcr 'anyword'
>>> >>>
>>> >>>
>>> >>>                    tt=. ;:&.> <"1 (ljust@:decomm) y NB. list of
>>> >>>                    tokenized lines
>>> >>>
>>> >>>                    ; (blkaft&.> tt) ,&.> LF NB. insert blanks, LF's
>>> >>>                    and raise
>>> >>>
>>> >>>                    )
>>> >>>
>>> >>>
>>> >>>                    NB. extract object references from blcl of names
>>> >>>
>>> >>>                    exobrefs=:a:"_ -.~ [: ~. [: ; [: <;._1&.> ([:
>>> >>>                    +./\&.> (<'__')"_ E.&.> ])
>>> >>>                    #&.> ]
>>> >>>
>>> >>>
>>> >>>                    NB. 1 if name is a locale reference 0 otherwise
>>> >>>
>>> >>>                    islocref=:('_'"_ = {:)                 +. [: +./ 
>>> >>> '__'"_ E. ]
>>> >>>
>>> >>>
>>> >>>                    NB. left justify table
>>> >>>
>>> >>>                    ljust=:' '&$: :(] |."_1~ i."1&0@(] e. [))
>>> >>>
>>> >>>
>>> >>>                    NB. ok return value
>>> >>>
>>> >>>                    rv=:>@(1&{)
>>> >>>                    ------------------------------
>>> >>> ----------------------------------------
>>> >>>                    For information about J forums see
>>> >>>                    http://www.jsoftware.com/forums.htm
>>> >>>                    <http://www.jsoftware.com/forums.htm>
>>> >>>
>>> >>>                ------------------------------
>>> >>> ----------------------------------------
>>> >>>                For information about J forums see
>>> >>>                http://www.jsoftware.com/forums.htm
>>> >>>                <http://www.jsoftware.com/forums.htm>
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>>        ------------------------------------------------------------
>>> >>> ----------
>>> >>>        For information about J forums see
>>> >>>        http://www.jsoftware.com/forums.htm
>>> >>>        <http://www.jsoftware.com/forums.htm>
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>>    --     John D. Baker
>>> >>>    [email protected] <mailto:[email protected]>
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>> --
>>> >>> John D. Baker
>>> >>> [email protected] <mailto:[email protected]>
>>> >>>
>>> >>
>>> >> ----------------------------------------------------------------------
>>> >> For information about J forums see http://www.jsoftware.com/forums.htm
>>> >>
>>> > ----------------------------------------------------------------------
>>> > For information about J forums see http://www.jsoftware.com/forums.htm
>> 
>> 
>> 
>> -- 
>> John D. Baker
>> [email protected]
> 
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to