Sorry but that violates basic software engineering principles. A "robust" program can't be crashed by _any_ possible input errors. It would be much more helpful for an engine to point out input errors rather than just crashing, since many users use UCI engines directly without a GUI (you can find references here in CCC where some type UCI commands in directly).mcostalba wrote:No, we don't sanity-check the FEN string.bob wrote:That will cause many problems for programs that don't at least sanity-check the FEN before starting a search.
Personally I don't believe in fixing downstream, I believe more in fixing upstream (read the GUI)...incidentally that's the reason why SF currently experiences time losses with Arena and, if it is up to me, it will experience also in the future
My approach is to fix any problem I can. One can't solve all GUI problems, but one can avoid crashes that result from a GUI mistake, or possibly an end-user mistake. It isn't reasonable to expect end users to be perfect.
I've watched Linus Torvalds have this same argument with the glibc group. They made a change to memcpy() that caused the adobe 64 bit flash player to misbehave. The change was not necessary. But with the standard saying that memcpy() should not have overlapping strings, and with Adobe using overlapping strings, the change to glibc caused the flash player to start screwing up sound conversions. Torvalds said "why break something that worked." The glibc folks said both ways follow the standard, so this is something Adobe needs to fix. Linus said glibc was working fine before the change, there is no justification to copying the strings right to left rather than left to right, so why not revert. You are causing _real users_ a problem here, and finger-pointing is not helping. He was dead on...