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
