Don't make to much out of the transition to 1.xxx, since the numbering for Djinn is a little odd. Basically, I use the changes in the history file to set the version number (I have a python script that parses it). So the transition to 1.xxx basically means I need to go outside more!
As with 0.992 this is mainly a bug fix with a small strength increase (approx. 20 elo I would estiimate from my testing). Here are the changes since the last version was released:
Code: Select all
17-DEC-2013 (ver. 1.006) ------------------------ E o Modified the way the penalty/bonus for a Queen vs. 2 Rooks trade was being scored. I also ran this under CLOP to get optimal (or at least not "sub-optimal") scaling values. 16-DEC-2013 ----------- E o I changed the way the pawns were being scored in front of the king. Previously, the pawns occupying the six squares in front of the king's actual location were used to access a "Shelter" array. But using the king's actual position would occasionally cause the program to move the king forward (in an unsafe manner) so that it would be closer to any kingside pawns that had advanced. Now the program now uses the canonical kingside square, (either G1/G8 or C1/C8). This seems to result in less unsafe king forays. 07-DEC-2013 ----------- S o Removed the "Botvinnik-Markoff" extension. Extensive testing showed no real elo gain from it and removing it simplifies the code. E o Clopped the rook mobility tables. 04-DEC-2013 ----------- E o Added safe king mobility to the evaluation function. For some odd reason this was left out when I added the mobility for all the other pieces to the evaluation function. Clopped both the penalty and mobility multiplier portions. 20-NOV-2013 ----------- S o Changed the criteria for beta pruning, so that it is only applied if the hash move is empty. It's also skipped if either alpha or beta is a mate score, (worth about 5 elo). B o Potential bug fix for the Windows version. I realized that the "unsigned long" type on Windows is only 4 bytes, (under Linux it's 8 bytes). It's possible that some of my time management and node counting variables were under/overflowing. So rather than worry about it I simply changed everything to "unsigned long long" which is 8 bytes on both operating systems. 17-NOV-2013 ----------- I o Dusted off Andrei Fortuna's "Chant" utility and started making modifications to both Djinn and the Chant viewer (Andrei was kind enough to give me the source code) so that more information is shown. I'm also planning to speed up the loading of the database file so that the viewing of large files isn't so slow. 13-NOV-2013 ----------- O o Micro-Optimized to the swapoff routine that separates winning, even and losing captures. Since the captures are generated in MVV/LVA order and stable sorted, we don't need the full SEE score. Instead, we only need to know if the SEE score is >= 0. This is always satisfied if the piece capturing is of lesser or equal value to the piece being captured. If that is true we skip the (relatively) expensive call to the full swapoff routine. 05-NOV-2013 ----------- B o Found a minor bug in the "toolbox::convert_string_to_double()" function which could actually cause an interface crash if the input was pathological. 03-NOV-2013 ----------- B o While going over the evaluation routines, I ran across a bug. Basically, the king attacks were being left out of the attack bitmaps if the endgame evaluation function exited early, (specifically, if it was a king/pawn-only endgame). Probably, not a big elo hit, but certainly not the intent. E o Added a new function that calculates the attack bitmaps from scratch. This is a useful debug routine. This is now used to restrict the definition of "safe" squares that the queen and rook can move to (i.e. their mobility). 27-OCT-2013 ----------- B o Fixed a memory overrun bug found by Valgrind in the hash routines. It was possible for the slot pointers to read or write past the end of the allocated memory if the initial hash value into the table was the last (or 2nd to last) slot. B o Fixed a buffer underflow read into "ThreatMove" array (found by the LLVM Clang compiler using the '-fsanitize=address' option).