Lance Perkins has stated in this thread that he uses it in Thinker. Some other chess programs that use setjmp include BCE, Witz, Rattate Chess Bologna, RomiChess, Hanzo The Razor, and the funny little concept program Toledo. That's 9 so farbob wrote:I missed #6. Movei was copied from TSCP so it does not count. It appears that Rybka/Strelka were copied from fruit. So that is two legitimate users. Which program did I miss? I did post earlier that gnu does not use setjmp. I also checked arasan, glaurung and a couple of others I have on my box. Nothing. I use fruit 2.1 on my cluster testing, it has it as we have heard and I verified it as well.chrisw wrote:Six users of setjmp() now, another "bad" programmer using "bad" techniques crawled out of the woodwork this afternoon.bob wrote:It is suspicious to those of us that understand software development. Plagiarism involves copying good pieces of code most often, but when it is about copying a bad piece of code, it is just stronger evidence that copying was done.chrisw wrote:And some people don't like their evidence being challengedZach Wegner wrote:You don't think it is rare? What, five total engines, one which has since been removed, out of how many hundreds??chrisw wrote:Entirely agreed its no good solution, but that's not the point. You said it was rare/unique whatever. It isn't. And therefore it's another nail in the probably used the same code coffin. It isn't.
Bob sums it up perfectly: "I never claimed it to be the ultimate proof. I simply said it was another suspicious detail because it is such a lousy way of writing a program."
Some people will always refuse to accept evidence when it is presented.
It's spurious to say 5 out of 500 because no exhaustive search has been done on the 500. It's 5 only for the unscientific reason that two programmers happened to remember some past detail.
As to how many in total? Difficult. Some by random because they were old engines, SMP wasn't a problem and jumping out of the Search is a lazy but effective method, if politically incorrect. Some because they read TSCP. Some not because they read Crafty. What does Gnu do?
To pillory a programmer and his work it is necessary to produce evidence that stands beyond all reasonable doubt. This use of setjmp() is no longer in the beyond all reasonable doubt camp. Sorry about that, but that's the way it can go in adversarial investigation processes like this one.
Each point you bring will be challenged. Some will fall and some will stand, presumably. Do you want it any other way? Just blind acceptance because you're getting frustrated otherwise? If it were you, Zach, you'ld expect a vigorous defence and counter to each and every allegation and piece of evidence. Would you not?
setjmp() is not even a suspicious detail. It's history. Sorry.
Perhaps there are several ways to skin a cat, Bob? Your way isn't necessarily the "unique", "real programmer" and most "interesting" one?
Could it be so?
You mentioned a program you "thought" used it, but I have been counting concrete cases. And so far, there appear to be two legitimate users of setjmp()/longjmp(), fruit and TSCP.
When the total number reaches say 10, out of probably at least 500 chess engines, then that will be 1 in 50 which is still rare, but becoming "less" rare. But we are nowhere near that yet.

I once looked at TSCP, noticed this funny setjmp call, looked it up in my old tattered copy of K&R, and tried it out for myself in my weak little program Tony's Chess. I found it wanting and removed it later. Somehow, I don't feel guilty about it, and I wouldn't refer to myself as a "cut and paster" just because I saw setjmp in use in another program and wanted to try it out for myself.
The use of setjmp might be a small piece in the large "Rybka, is it or isn't it?" puzzle, but in and of itself I cannot see how the use of a standard library function is suspicious.