Your trusted source for computer chess information!
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| computer_chess:engines:myrddin:index [2019/01/31 06:08] – jvmerlino | computer_chess:engines:myrddin:index [2025/12/13 17:51] (current) – jvmerlino | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== Myrddin ===== | ===== Myrddin ===== | ||
| - | {{myrddin.jpg}} | + | ==== THIS SITE IS NOW OUTDATED! ====== |
| + | **Go to [[https:// | ||
| - | First of all, thanks | + | Thanks |
| - | This version supports SMP via processes (up to 16 instances) and is about 35 ELO stronger than v0.86 at 1 CPU and about 90 ELO stronger at 4 CPUs. This version has not been formally tested above 4 CPUs so it is unknown how well it will scale above 4 CPUs. | ||
| - | |||
| - | ==== Download ==== | ||
| - | {{myrddin087.rar | Myrddin 0.87}} (released 1/25/15, [[http:// | ||
| == Old versions == | == Old versions == | ||
| - | {{myrddin086-ja.zip | Myrddin 0.86}} (released 12/21/12, CCRL rated approximately 2360)\\ | + | [[https:// |
| + | [[https:// | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | {{myrddin087.rar | Myrddin 0.87}} (released 1/25/15, CCRL rating of 2365 at 1 CPU and 2461 at 4 CPUs)\\ | ||
| + | {{myrddin086-ja.zip | Myrddin 0.86}} (released 12/21/12, CCRL rating of 2328)\\ | ||
| This package contains Windows32/ | This package contains Windows32/ | ||
| - | {{myrddin085.rar | Myrddin 0.85}} (released 5/ | + | {{myrddin085.rar | Myrddin 0.85}} (released 5/3/11, CCRL rating of 2171)\\ |
| - | {{myrddin084.rar | Myrddin 0.84}} (released 9/17/10, CCRL rated approximately 2115)\\ | + | {{myrddin084.rar | Myrddin 0.84}} (released 9/17/10, CCRL rating of 2052)\\ |
| - | {{myrddin083.rar | Myrddin 0.83}} (released 2/22/10, CCRL rated approximately 2015)\\ | + | {{myrddin083.rar | Myrddin 0.83}} (released 2/22/10, CCRL rating of 1938)\\ |
| - | {{myrddin082.rar | Myrddin 0.82}} (released 9/26/09, estimated CCRL rating of 1915)\\ | + | {{myrddin082.rar | Myrddin 0.82}} (released 9/26/09, estimated CCRL rating of 1875)\\ |
| - | {{myrddin_alpha_2.rar | Myrddin | + | {{myrddin_alpha_2.rar | Myrddin |
| - | {{myrddin_alpha_1.rar | Myrddin | + | {{myrddin_alpha_1.rar | Myrddin |
| ---- | ---- | ||
| ==== Release Notes ==== | ==== Release Notes ==== | ||
| - | Myrddin 0.87 -- 1/20/15 | + | Myrddin 0.92 -- 12/7/24 |
| Myrddin is a winboard-compliant chess engine to a reasonable degree. It supports protover 1 primarily to support the Chessmaster interface, and also protover 2. | Myrddin is a winboard-compliant chess engine to a reasonable degree. It supports protover 1 primarily to support the Chessmaster interface, and also protover 2. | ||
| - | If you don't know what Winboard is, and you only just want to play against this engine, you can download Winboard-compliant interfaces here:\\ | + | The 64-bit version of Myrddin should play approximately |
| - | * [[http:// | + | |
| - | * [[http:// | + | |
| - | * Aart Bik's excellent [[http:// | + | |
| - | + | ||
| - | The 64-bit version of Myrddin should play approximately | + | |
| The following winboard commands are supported: | The following winboard commands are supported: | ||
| Line 50: | Line 49: | ||
| * st | * st | ||
| * hard/easy | * hard/easy | ||
| + | * memory | ||
| * cores | * cores | ||
| * result | * result | ||
| Line 63: | Line 63: | ||
| * " | * " | ||
| * " | * " | ||
| + | * " | ||
| + | * " | ||
| None of these commands are supported while Myrddin is searching/ | None of these commands are supported while Myrddin is searching/ | ||
| ---- | ---- | ||
| Line 73: | Line 75: | ||
| ====General Notes==== | ====General Notes==== | ||
| - | -- This is the first version to support SMP. The implementation is based on Dan Homan's "lazy SMP" | + | -- Myrddin uses an " |
| + | -- Myrddin's "Very Lazy SMP" implementation uses (N-1) child processes to fill the transposition and eval hash tables so the parent process can search deeper in the same amount of time. I believe Myrddin is the only engine that has implemented SMP with this method (and probably rightly so!).\\ | ||
| -- Myrddin uses Pradyumna Kannan' | -- Myrddin uses Pradyumna Kannan' | ||
| - | -- Evaluation is rather simple: wood counting, piece square tables, pawn structure, rudimentary king safety, rooks behind passers. There' | + | -- Myrddin supports the [[https://github.com/ |
| - | -- Search is basic alpha/beta, with reasonable and generally conservative | + | -- Search is basic alpha/beta, with typical |
| -- All user-modifiable parameters are supported in the INI file, an example of which is included in the download.\\ | -- All user-modifiable parameters are supported in the INI file, an example of which is included in the download.\\ | ||
| - | -- Max search depth is 128.\\ | + | -- Max search depth is 128 ply.\\ |
| -- The [[http:// | -- The [[http:// | ||
| -- Draw claims from the opponent are not supported. Myrddin does, however, claim all draws by rule, as well as checkmate.\\ | -- Draw claims from the opponent are not supported. Myrddin does, however, claim all draws by rule, as well as checkmate.\\ | ||
| - | -- There is enough | + | -- There is enough |
| -- When the engine is in analysis mode, positive scores always favor White and negative scores always favor Black. When the engine is thinking or pondering, positive scores favor Myrddin.\\ | -- When the engine is in analysis mode, positive scores always favor White and negative scores always favor Black. When the engine is thinking or pondering, positive scores favor Myrddin.\\ | ||
| -- Logfiles will be in the " | -- Logfiles will be in the " | ||
| ---- | ---- | ||
| - | ==== Tournament Highlights ==== | + | ==== (Very Old) Tournament Highlights ==== |
| == ChessWar XIV == | == ChessWar XIV == | ||
| Line 99: | Line 102: | ||
| Versions 0.83 through 0.83k participated in [[http:// | Versions 0.83 through 0.83k participated in [[http:// | ||
| == ChessWar XVI == | == ChessWar XVI == | ||
| - | Version 0.84 participated in the F division of [[http:// | + | Version 0.84 participated in the F division of [[http:// |
| == CCRL Amateur Division 7 (Series 23) == | == CCRL Amateur Division 7 (Series 23) == | ||
| Version 0.84 (32-bit) was the first version to win any tournament, doing so in the 23rd Series the [[http:// | Version 0.84 (32-bit) was the first version to win any tournament, doing so in the 23rd Series the [[http:// | ||
| Line 109: | Line 112: | ||
| ==== Test Suite Results ==== | ==== Test Suite Results ==== | ||
| - | All results are for the 64-bit | + | All results are for version 0.91 using 1GB hash and 5-man Gaviota tablebases. The tests are run on an AMD Ryzen 5 3.6GHz machine |
| == WAC (Win at Chess) == | == WAC (Win at Chess) == | ||
| - | 300 positions at 5s per position. Almost exclusively tactical positions, many leading to mate. Myrddin finds 295 correct moves within the time limit. Regarding the five missed positions, two (141, 222) are found within 10 seconds, one (293) is found within | + | 300 positions at 5s per position. Almost exclusively tactical positions, many leading to mate. Myrddin finds 297 correct moves within the time limit. Regarding the three missed positions (224, 247, 293), only #246 is not found within |
| == Strategic Test Suite == | == Strategic Test Suite == | ||
| - | A series of (currently, but occasionally expanding) 14 individual suites of 100 positions each, primarily intending to test positional knowledge such as square vacancy, proper recapturing, | + | A series of (currently, but occasionally expanding) 14 individual suites of 100 positions each, primarily intending to test positional knowledge such as square vacancy, proper recapturing, |
| == O' | == O' | ||
| - | 176 positions at 10s per position. Combinative middlegame and endgame suite. Myrddin finds 134 positions within the time limit. You can download this test suite [[http:// | + | 176 positions at 10s per position. Combinative middlegame and endgame suite. Myrddin finds 139 positions within the time limit. You can download this test suite [[http:// |
| == Eigenmann Endgame Test == | == Eigenmann Endgame Test == | ||
| - | 100 positions at 10s per position. Myrddin does not do very well at this suite, getting only 20 correct moves within the time limit. You can download this test suite [[http:// | + | 100 positions at 10s per position. Myrddin does not do very well at this suite, getting only 51 correct moves within the time limit. You can download this test suite [[http:// |
| == IQ 8.1 == | == IQ 8.1 == | ||
| - | 182 positions at 10s per position. Challenging tactical suite. Myrddin finds 149 positions within the time limit. You can download this test suite [[http:// | + | 182 positions at 10s per position. Challenging tactical suite. Myrddin finds 165 positions within the time limit. You can download this test suite [[http:// |
| - | == Personal Test Positions == | + | |
| - | For a list of (hopefully) interesting test positions that I have accumulated during the development of Myrddin, [[computer_chess: | + | |
| - | ---- | + | |
| ====FULL DISCLOSURE==== | ====FULL DISCLOSURE==== | ||
| Many parts of the code from Myrddin contain ideas and/or algorithms gathered from studying the source code of other engines. Most notably, Stockfish, Fruit, Crafty and Greko are well-written, | Many parts of the code from Myrddin contain ideas and/or algorithms gathered from studying the source code of other engines. Most notably, Stockfish, Fruit, Crafty and Greko are well-written, | ||
| -- Myrddin' | -- Myrddin' | ||
| - | -- Myrddin' | + | -- Myrddin' |
| + | -- Move generation for sliding pieces (except Kings) uses Pradyu Kannan' | ||
| ---- | ---- | ||
| ====Version/ | ====Version/ | ||
| - | == Version 0.80 (Alpha 1) (3/9/09) == | + | == Version 0.93 (4/18/25) == |
| - | Initial Release, rated approximately 1200-1300 | + | -- Now using IIR instead of IID\\ |
| + | -- Minor adjustments to LMR conditions\\ | ||
| + | -- Now supporting the xboard " | ||
| + | -- Increased the maximum number of SMP processes to 32 (requested by Lars Hallerstrom)\\ | ||
| + | -- Fixed a bug in pondering introduced in v0.90. Myrddin would restart thinking at depth 1 even if the expected ponder move was made by the opponent.\\ | ||
| + | -- Fixed a rare bug that could cause Myrddin to crash when using logfiles\\ | ||
| + | -- Found a bug that caused the Eval hash size to be 2MB instead of 32MB.\\ | ||
| + | -- Default Transposition hash size is now 256MB\\ | ||
| - | == Version 0.81 (Alpha 2) (5/26/09) == | + | == Version 0.92 (12/7/24) == |
| - | -- Reduced move generation time by ~21% (perft 6 on initial position went from 57 to 44 seconds on P4-3.0)\\ | + | -- Now doing incremental updates to the NN accumulator during make/unmake move\\ |
| - | -- Search now pings the input command handler every 8K nodes (about 1/30-1/50 second, depending on position | + | -- Now compiling with clang (within MSVC IDE)\\ |
| - | -- Search will allocate extra thinking time when it gets noticeable drop in score\\ | + | -- Restored David Carteau' |
| - | -- Evaluation improvements | + | -- Now clearing Killer move scores with every depth\\ |
| - | -- Added MVV/LVA and PV Move Ordering\\ | + | -- Fixed potential instability/crash due to the move stack possibly becoming greater than MAX_DEPTH\\ |
| - | -- Added Killer | + | -- Minor optimizations to PVS implementation and cutoff ordering\\ |
| - | -- Added Null Move reductions\\ | + | |
| - | -- Added Late Move reductions\\ | + | == Version 0.91 (10/20/24) == |
| - | -- Added Opening Book (ProDeo | + | -- Added NNUE probing code by David Carteau |
| - | -- Added pondering, so "hard" | + | -- Network created by me using games from CCRL, Lichess, and Myrddin testing (both self-play and against other engines)\\ |
| - | -- "analyze", "?" and "result" commands | + | -- Fixed a rare bug that could cause the best move from the previous iteration to not be the first move searched\\ |
| - | -- " | + | -- If perft or divide are called with no parameters, the default depth will be one (and Myrddin will no longer crash)\\ |
| - | -- Added check for dirty pawn structure before evaluation\\ | + | |
| - | -- Search can be interrupted due to time management considerations\\ | + | == Version 0.90 (6/9/23) == |
| - | -- Added Hash Tables, with a fixed size of 128MB\\ | + | -- Fixed two bugs in SEE (stopped the calculation if the first capture was of equal value, and failed to include Kings in the calculation)\\ |
| - | -- Maximum search | + | -- Fixed a bug that could cause a save to the hash table even if there was no best move\\ |
| - | -- Fixed a bug with evaluating castling | + | -- Tuned PST files for the first time, and re-tuned all other eval terms\\ |
| - | -- Fixed a bug determining | + | -- Captures with negative SEE value can now be reduced\\ |
| - | -- Can now generate capturing moves only so quiescent search has less moves to sort/deal with\\ | + | -- IID is now more aggressive |
| - | -- Quiescent moves are added to PV\\ | + | -- LMR reduction is now one depth less for PV nodes\\ |
| - | -- Added code for pushing lone King towards edge of board\\ | + | -- No longer limiting the number of extensions for a single branch\\ |
| - | -- Added material | + | -- Reduced the number of aspiration windows before performing a full-width search from six to two\\ |
| - | -- Fixed a bug in the " | + | -- Fixed a rare bug such that if a tt probe or IID returned an underpromotion it would not be moved to the front of the movelist\\ |
| - | -- Fixed some bugs in the 3-fold | + | -- Fixed an issue when receiving the " |
| - | -- Fixed a stupid | + | -- Modified the compiler options |
| - | -- Significant code cleanup\\ | + | -- Various minor optimizations\\ |
| + | -- Added " | ||
| + | -- Added " | ||
| + | -- Removed " | ||
| + | |||
| + | == Version 0.89 (6/3/22) == | ||
| + | -- Added Late Move Pruning\\ | ||
| + | -- Late Move Reductions are now more aggressive | ||
| + | -- Bad captures are now subject to LMR\\ | ||
| + | -- Moved killer moves before equal captures in move ordering\\ | ||
| + | -- Moved bad captures after quiet moves in move ordering\\ | ||
| + | -- Moves that give check are no longer flagged as such at move generation, but instead during MakeMove()\\ | ||
| + | -- Reduced the number of fail high/low results at the root before searching on full-width window\\ | ||
| + | -- BitScan now uses an intrinsic function rather than MS Windows' | ||
| + | -- Null Move now uses a reduction of 3+(depth/6) instead of just 3\\ | ||
| + | -- Myrddin will now move instantly if TBs are available and <= 5 men on board. Previously it would " | ||
| + | -- Minor evaluation tuning adjustments, | ||
| + | -- Increased the aggressiveness of SMP depth adjustment for child processes\\ | ||
| + | |||
| + | == Version 0.88 (7/18/21) == | ||
| + | -- Added tapered eval\\ | ||
| + | -- Created rudimentary tuning system and tuned all eval parameters except PSTs (I'm too lazy)\\ | ||
| + | -- Time management is now less conservative overall\\ | ||
| + | -- Fixed a bug in which the best move from IID might move farther down in the move order if it was also a killer\\ | ||
| + | -- Significantly reduced the frequency of checking for input from stdin\\ | ||
| + | -- Fixed a crash that could occur when making a very long PV string\\ | ||
| + | -- Fixed a bug that could cause the setboard/ | ||
| + | -- Removed "Mate in N" announcement from PVs during fail highs and fail lows\\ | ||
| + | |||
| + | == Version 0.87 (1/20/15) == | ||
| + | -- Added SMP support for up to 16 instances | ||
| + | -- Fixed very embarrassing bug in passer eval calculating the distance between two squares that could cause any number of other issues, even a hang or crash\\ | ||
| + | -- Added support for the "cores" | ||
| + | -- Added a "tb" | ||
| + | -- Added "Mate in N" | ||
| + | -- Fixed a bug in saving scores near mate to the hash table\\ | ||
| + | -- Fixed a bug in determining valid knight outpost squares\\ | ||
| + | -- Fixed text output bug in kibitzing opening book moves on ICC\\ | ||
| + | -- Fixed a rare bug in determining material draw\\ | ||
| + | -- Fixed a bug in which Myrddin would hang or crash if the ' | ||
| + | -- Fixed a bug that could cause hash memory allocation to fail if more than 1GB was requested. Thanks to Graham Banks for reporting this issue.\\ | ||
| + | |||
| + | == Version 0.86 (12/21/12) == | ||
| + | -- Finished conversion to bitboards from 0x88\\ | ||
| + | -- Added pawn hash (thanks again, Dann!)\\ | ||
| + | -- Removed lazy eval\\ | ||
| + | -- Added support for winboard | ||
| + | -- Lots of bug fixes either discovered by the bitboard conversion or removed by them (of course, new bugs added!)\\ | ||
| + | |||
| + | == Version 0.85 (5/3/11) == | ||
| + | -- Almost complete rewrite of the evaluation, in particular the pawn structure evaluation and king safety. Also added mobility factor and significantly adjusted many piece table values\\ | ||
| + | -- Added SEE (thanks, Andrés!)\\ | ||
| + | -- Added futility pruning\\ | ||
| + | -- Added resign. See Myrddin' | ||
| + | -- Added second aspiration window at 150 centipawns\\ | ||
| + | -- Cleaned up code for how reductions/ | ||
| + | -- Will now claim draw by insufficient material, but only checking | ||
| + | -- Now generating | ||
| + | -- Now searching all moves in order of their move score order, instead of just the first four moves and then taking the rest as they were generated\\ | ||
| + | -- Some changes to the transposition table replacement strategy\\ | ||
| + | -- Fixed a bug in which the en passant square was not being passed to the Gaviota tablebase probe\\ | ||
| + | -- Fixed a bug in which the 50-move draw check was not checking that the drawing move was also checkmate\\ | ||
| + | -- Fixed a bug in which the flag for a mate threat found during null move was not being stored in the hash table\\ | ||
| + | -- Fixed a bug in which a hash entry could be saved when the engine was forcibly bailing out of a search \\ | ||
| + | -- Fixed a bug that could cause Gaviota tablebases folder | ||
| + | |||
| + | == Version 0.84 (9/17/10) == | ||
| + | -- Added Gaviota tablebases (thanks so much to Miguel Ballicora, also the author | ||
| + | -- Added initialization file for setting hash size, creating log file, turning on kibitz, and tablebase info\\ | ||
| + | -- Fixed a bug in which a hash probe would not return a hash move if the saved depth was less than the requested depth (thanks to Edmund Moshammer, author of Glass!), so in these cases the hash move would not be used for move ordering\\ | ||
| + | -- Implemented fail-hard\\ | ||
| + | -- Tweaked parameters for reductions (yet again)\\ | ||
| + | -- Adjusted queen value from 900 to 950 and minor piece value from 310 to 320\\ | ||
| + | -- Adjusted bishop pair bonus from 20 to 30\\ | ||
| + | -- Removed second aspiration window\\ | ||
| + | -- Lazy eval is now more conservative\\ | ||
| + | -- Will now analyze the entire depth if the first move searched fails low, or if first move fails high in a non-mate situation\\ | ||
| + | -- Increased maximum search time to half of the remaining clock (required due to above item)\\ | ||
| + | -- Added support for winboard " | ||
| + | -- Increased max half-moves in a game to 1024\\ | ||
| + | -- Fixed a bug in which the first move searched at the root was saved in the hash table as an exact value even if it did not improve alpha\\ | ||
| + | -- Fixed a bug in which Myrddin would run out of time by thinking indefinitely if it was told it had a negative amount of time on its clock (can happen on ICS due to lag)\\ | ||
| + | -- Modified the check to see if null move is allowable, previously was if any piece was on board, | ||
| + | |||
| + | == Version 0.83 (2/22/10) == | ||
| + | -- Only search to depth 1 when there is only one legal move and pondering is off\\ | ||
| + | -- No longer clearing the hash table before starting a depth 1 search\\ | ||
| + | -- Improved hash replacement strategy\\ | ||
| + | -- If a search depth was reduced by late-move reductions, and that search improves alpha, now researching at proper depth\\ | ||
| + | -- Reductions | ||
| + | -- Adjusted the second aspiration window from 300 to 110 centipawns\\ | ||
| + | -- Doubled (or worse) passed pawns after the leading pawn no longer get the passed pawn bonus\\ | ||
| + | -- Will now play a move in a checkmating line as soon as it is confirmed to be optimal\\ | ||
| + | -- Removed " | ||
| + | -- Rook and minor vs rook (with no pawns) is now hard-coded as a draw -- should be safe in 99.99% of cases\\ | ||
| + | -- Re-removed bad king safety | ||
| + | -- Now using piece square table for knight outposts, rather than a hard-coded bonus\\ | ||
| + | -- Modified piece square table for kings in opening | ||
| + | -- Added penalty for having no pawns, to help avoid trading down into pawnless endgames (e.g. rook vs. minor)\\ | ||
| + | -- Sending the ' | ||
| + | -- Fixed a bug in which most hash moves were not getting placed at the beginning of the move order\\ | ||
| + | -- Fixed a bug evaluating Black doubled | ||
| + | -- Fixed a bug in which the initial position was not being checked for draw by repetition\\ | ||
| + | -- Fixed a bug maintaining wood tables when unmaking a promotion move\\ | ||
| + | -- Fixed an asymmetrical problem | ||
| + | -- Fixed a problem with determining if a rook or queen was behind a passed pawn\\ | ||
| + | -- Fixed a problem with calculating the pawn shield of a king on column h, or a king not on his home row\\ | ||
| + | -- fixed a bug updating the board signature after making a null move when en passant was possible\\ | ||
| + | -- king+rook vs. king+minor is now being scored as a draw\\ | ||
| == Version 0.82 (9/25/09) == | == Version 0.82 (9/25/09) == | ||
| Line 201: | Line 317: | ||
| -- Logfiles are now created in a " | -- Logfiles are now created in a " | ||
| - | == Version 0.83 (2/22/10) == | + | == Version 0.81 (aka Alpha 2) (5/26/09) == |
| - | -- Only search to depth 1 when there is only one legal move and pondering is off\\ | + | -- Reduced |
| - | -- No longer clearing | + | -- Search now pings the input command handler every 8K nodes (about |
| - | -- Improved hash replacement strategy\\ | + | -- Search will allocate extra thinking time when it gets noticeable drop in score\\ |
| - | -- If a search depth was reduced by late-move reductions, and that search improves alpha, now researching at proper depth\\ | + | -- Evaluation improvements |
| - | -- Reductions are now less aggressively implemented\\ | + | -- Added MVV/LVA and PV Move Ordering\\ |
| - | -- Adjusted the second aspiration window from 300 to 110 centipawns\\ | + | -- Added Killer and History move ordering heuristics\\ |
| - | -- Doubled (or worse) passed pawns after the leading pawn no longer get the passed pawn bonus\\ | + | -- Added Null Move reductions\\ |
| - | -- Will now play a move in a checkmating line as soon as it is confirmed to be optimal\\ | + | -- Added Late Move reductions\\ |
| - | -- Removed " | + | -- Added Opening Book (ProDeo -- Thanks, Ed!)\\ |
| - | -- Rook and minor vs rook (with no pawns) is now hard-coded as a draw -- should be safe in 99.99% of cases\\ | + | -- Added pondering, so " |
| - | -- Re-removed bad king safety code\\ | + | -- " |
| - | -- Now using piece square table for knight outposts, rather than a hard-coded bonus\\ | + | -- " |
| - | -- Modified piece square table for kings in opening and middlegame\\ | + | -- Added check for dirty pawn structure before evaluation\\ |
| - | -- Added penalty for having no pawns, to help avoid trading down into pawnless endgames (e.g. rook vs. minor)\\ | + | -- Search can be interrupted due to time management considerations\\ |
| - | -- Sending the ' | + | -- Added Hash Tables, with a fixed size of 128MB\\ |
| - | -- Fixed a bug in which most hash moves were not getting placed at the beginning of the move order\\ | + | -- Maximum search depth increased |
| - | -- Fixed a bug evaluating Black doubled and passed pawns\\ | + | -- Fixed a bug with evaluating castling |
| - | -- Fixed a bug in which the initial position was not being checked for draw by repetition\\ | + | -- Fixed a bug determining which King piece table to use\\ |
| - | -- Fixed a bug maintaining wood tables when unmaking a promotion move\\ | + | -- Can now generate capturing moves only so quiescent search has less moves to sort/deal with\\ |
| - | -- Fixed an asymmetrical problem in the bishop piece square table\\ | + | -- Quiescent moves are added to PV\\ |
| - | -- Fixed a problem with determining if a rook or queen was behind a passed pawn\\ | + | -- Added code for pushing lone King towards edge of board\\ |
| - | -- Fixed a problem with calculating | + | -- Added material and 50-move draw detection\\ |
| - | -- fixed a bug updating | + | -- Fixed a bug in the " |
| - | -- king+rook vs. king+minor is now being scored as a draw\\ | + | -- Fixed some bugs in the 3-fold repetition detection\\ |
| + | -- Fixed a stupid | ||
| + | -- Significant code cleanup\\ | ||
| - | == Version 0.84 (9/17/10) == | + | == Version 0.80 (aka Alpha 1) (3/9/09) == |
| - | -- Added Gaviota tablebases (thanks so much to Miguel Ballicora, also the author of the Gaviota chess engine, for making this available!)\\ | + | Initial Release, rated approximately 1200-1300 |
| - | -- Added initialization file for setting hash size, creating log file, turning on kibitz, and tablebase info\\ | + | |
| - | -- Fixed a bug in which a hash probe would not return a hash move if the saved depth was less than the requested depth (thanks to Edmund Moshammer, author of Glass!), so in these cases the hash move would not be used for move ordering\\ | + | |
| - | -- Implemented fail-hard\\ | + | |
| - | -- Tweaked parameters for reductions (yet again)\\ | + | |
| - | -- Adjusted queen value from 900 to 950 and minor piece value from 310 to 320\\ | + | |
| - | -- Adjusted bishop pair bonus from 20 to 30\\ | + | |
| - | -- Removed second aspiration window\\ | + | |
| - | -- Lazy eval is now more conservative\\ | + | |
| - | -- Will now analyze the entire depth if the first move searched fails low, or if first move fails high in a non-mate situation\\ | + | |
| - | -- Increased maximum search time to half of the remaining clock (required due to above item)\\ | + | |
| - | -- Added support for winboard " | + | |
| - | -- Increased max half-moves in a game to 1024\\ | + | |
| - | -- Fixed a bug in which the first move searched at the root was saved in the hash table as an exact value even if it did not improve alpha\\ | + | |
| - | -- Fixed a bug in which Myrddin would run out of time by thinking indefinitely if it was told it had a negative amount of time on its clock (can happen on ICS due to lag)\\ | + | |
| - | -- Modified the check to see if null move is allowable, previously was if any piece was on board, now only if side to move has at least one piece\\ | + | |
| - | == Version 0.85 (5/3/11) == | ||
| - | -- Almost complete rewrite of the evaluation, in particular the pawn structure evaluation and king safety. Also added mobility factor and significantly adjusted many piece table values\\ | ||
| - | -- Added SEE (thanks, Andrés!)\\ | ||
| - | -- Added futility pruning\\ | ||
| - | -- Added resign. See Myrddin' | ||
| - | -- Added second aspiration window at 150 centipawns\\ | ||
| - | -- Cleaned up code for how reductions/ | ||
| - | -- Will now claim draw by insufficient material, but only checking for bare kings or at most one minor on board\\ | ||
| - | -- Now generating all moves in quiescent search if side to move is in check\\ | ||
| - | -- Now searching all moves in order of their move score order, instead of just the first four moves and then taking the rest as they were generated\\ | ||
| - | -- Some changes to the transposition table replacement strategy\\ | ||
| - | -- Fixed a bug in which the en passant square was not being passed to the Gaviota tablebase probe\\ | ||
| - | -- Fixed a bug in which the 50-move draw check was not checking that the drawing move was also checkmate\\ | ||
| - | -- Fixed a bug in which the flag for a mate threat found during null move was not being stored in the hash table\\ | ||
| - | -- Fixed a bug in which a hash entry could be saved when the engine was forcibly bailing out of a search \\ | ||
| - | -- Fixed a bug that could cause Gaviota tablebases folder to not be read properly from the INI file \\ | ||
| - | |||
| - | == Version 0.86 (12/21/12) == | ||
| - | -- Finished conversion to bitboards from 0x88\\ | ||
| - | -- Added pawn hash (thanks again, Dann!)\\ | ||
| - | -- Removed lazy eval\\ | ||
| - | -- Added support for winboard " | ||
| - | -- Lots of bug fixes either discovered by the bitboard conversion or removed by them (of course, new bugs added!)\\ | ||
| - | |||
| - | == Version 0.87 (1/20/15) == | ||
| - | -- Added SMP support for up to 16 instances (using processes and shared hash memory -- Very Lazy SMP!) -- only tested up to 4 instances! This use of shared memory for all hash tables (transposition, | ||
| - | -- Fixed very embarrassing bug in passer eval calculating the distance between two squares that could cause any number of other issues, even a hang or crash\\ | ||
| - | -- Added support for the " | ||
| - | -- Added a " | ||
| - | -- Added "Mate in N" announcements to PV output when applicable\\ | ||
| - | -- Fixed a bug in saving scores near mate to the hash table\\ | ||
| - | -- Fixed a bug in determining valid knight outpost squares\\ | ||
| - | -- Fixed text output bug in kibitzing opening book moves on ICC\\ | ||
| - | -- Fixed a rare bug in determining material draw\\ | ||
| - | -- Fixed a bug in which Myrddin would hang or crash if the ' | ||
| - | -- Fixed a bug that could cause hash memory allocation to fail if more than 1GB was requested. Thanks to Graham Banks for reporting this issue.\\ | ||
| ---- | ---- | ||
| ====Thanks and Contact Info==== | ====Thanks and Contact Info==== | ||
| Many thanks to the following brilliant people who helped/ | Many thanks to the following brilliant people who helped/ | ||
| - | * Ron Murawski -- [[http:// | + | * Ron Murawski -- [[http:// |
| - | * Andrés Valverde ([[http:// | + | * Martin Sedlak |
| * Lars Hallerström - The Mad Swedish Tester! I would never release anything without his (grudging) approval. | * Lars Hallerström - The Mad Swedish Tester! I would never release anything without his (grudging) approval. | ||
| * Dann Corbit -- Without whose generous help, huge speed improvements, | * Dann Corbit -- Without whose generous help, huge speed improvements, | ||
| + | * Bruce Moreland -- [[http:// | ||
| * Dr. Robert Hyatt -- [[http:// | * Dr. Robert Hyatt -- [[http:// | ||
| + | * Ed Schröder and Jeroen Noomen -- [[http:// | ||
| * Miguel Ballicora - [[https:// | * Miguel Ballicora - [[https:// | ||
| * Mark Lefler and the [[http:// | * Mark Lefler and the [[http:// | ||
| - | * Ed Schröder and Jeroen Noomen -- [[http:// | ||
| - | * [[http:// | ||
| * Tom Kerrigan -- [[http:// | * Tom Kerrigan -- [[http:// | ||
| - | * Bruce Moreland -- [[http:// | ||
| - | * Chris Tatham -- [[https:// | ||
| - | * Vladimir Medvedev -- [[http:// | ||
| - | * Pham Hong Nguyen -- **Firstchess** | ||
| * And finally, the [[http:// | * And finally, the [[http:// | ||