Hi Henry, I noticed that no one answered your question of how bugs get fixed and released. I believe J Software still maintains and releases their version of the code. But I assume you are referring to the community maintained version of J. A community version is hosted at
https://github.com/openj Anyone can submit a patch after which one of the maintainers reviews it and decides whether or not to apply it to the code. The latest stable version of the code can also be obtained from the same place. So to update your J you would need to download the latest code and compile it. So for this bug to be fixed a generous person needs to hunt down the bug in the interpreter, write the code and submit the patch. On Wed, Apr 25, 2012 at 4:51 PM, Henry Rich <henryhr...@nc.rr.com> wrote: > I have tracked this down to numeric dyad E. which seems to cause wild > stores to memory, sometimes wiping out data, sometimes scripts. > > In our new open-source environment, how do bugs get fixed and released? > > Henry Rich > > On 4/24/2012 9:52 PM, Henry Rich wrote: >> Working on R. E.'s latest problem, I hit an interpreter bug. The >> session log is >> >> load 'C:\JPrograms\temp\interpbug.ijs' >> jtree G >> |domain error: jtree >> | jtree G >> X >> 10 12 >> Y >> 12 15 >> (<10 12) joinroutes (<12 15) >> ┌──────────┐ >> │┌────────┐│ >> ││10 12 15││ >> │└────────┘│ >> └──────────┘ >> jtree G >> |domain error: joinroutes >> | y(+./@:E.}.;)(1{.y) ,x,(l}.y) >> jtree G >> |length error: joinroutes >> | 'f l'=.0 1+(0 1+#y) |y i.x >> G >> +---+-+---+---+---+---+--+---+---+---+---+----+----+----+-----+-----+-----+-----+-----+-----+-----+-----+ >> |0 1| |2 3|2 4|3 5|4 6| |5 7|5 8|6 7|7 9|7 10|8 10|9 11|10 12|10 11|11 >> 13|11 14|11 15|12 16|12 15|12 14| >> +---+-+---+---+---+---+--+---+---+---+---+----+----+----+-----+-----+-----+-----+-----+-----+-----+-----+ >> >> You can see that the variable G has been corrupted; also, the errors >> running jtree are bogus, I think. The script file follows. The first >> line is wrapped, and the name 'joinroutes' is defined and then overwritten: >> >> G =:<"1 ] 0 1 2 2 3 4 4 5 5 6 7 7 8 9 10 10 11 11 11 12 12 12 ,. 1 2 3 >> 4 5 6 5 7 8 7 9 10 10 11 12 11 13 14 15 16 15 14 >> NB. x is new pair >> NB. y is old route >> NB. Result is merged routes >> joinroutes =: 4 : 0&.> >> select. (#y)> 'f l' =. y i. x >> case. 1 1 do. >> y ; (f {. y) , x , ((>:l) }. y) >> case. 0 1 do. >> y ;^:(l~:0)< x , ((>:l) }. y) >> case. 1 0 do. >> y ;^:(f~:<:#y)< (f {. y) , x >> case. do. >> y ; x >> end. >> ) >> joinroutes =: 4 : 0&.> >> X =: x >> Y =: y >> >> 'f l' =. 0 1 + (0 1 + #y) | y i. x >> y (+./@:E. }. ;) (f {. y) , x , (l }. y) >> ) >> jtree =: ([: ~.@; joinroutes)/ >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm