Hi Uri,
In the last days I did not work on improving the playing strength of movei but on building tools that will help me to check for bugs.
I still have bugs in these tools at this moment so it is not finished.
Chess engine debugging tools are not often talked about. It would be interesting to hear what some authors are using.
Coincidentally, today, I was thinking about writing some search debugging tools. For instance, I'm trying to figure out why my engine doesn't choose a certain line...it would be great to have a builtin routine to specify a PV and when the line is searched it prints out the score and the reasons why it was pruned/failed low/ etc etc... That's on the todo list.
For eval, I have a routine which analyses fens and compares 1 ply evals with their mirror.... this finds all kinds of stupid asymmetric bugs.
But I still don't have a test suite routine... still doing that by hand via Arena and Fritz. Another thing on the todo list....
And talking of bugs... I found one yesterday which was cause for great celebrations. Every time I let TRACE analyse overnight she crashed. Yet, she never crashed in OTB games. It has had me utterly perplexed for months. I thought it was something to do with a hash table collision. Then later, I thought it was some data being written past the end of an array. And finally I tried increasing the stack space.... but it still crashed .... then I noticed when it crashed the node counter was close to 2^32.... ah ha.....
It turned out my makemove() routine was returning like this
return ++nodes;
If a move is illegal it returns 0;
Well, you guessed it... the node counter was 'wrapping' back to 0 when it hit 2^32 and so it returned 0 when it should have returned non-zero....
What a relief it was to find it... however it means having to release 1.34 for anyone who wants to run long searches.
Uri, it will be interesting to see how Movei fares with IID. It helped me by about 18% IIRC. And do you plan to add hash pruning at some time? Would Movei benefit? I know TRACE would be too slow without the hash pruning... it does very little pruning apart from null move and qs pruning...
In the main search it only extends.... probably way too much...
Getting late here...
Regards,
Ross