Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Thu Jan 17 08:11:09 2019 +0100 Timestamp: 1547709069 Remove AdjacentFiles This is a non-functional simplification that removes the AdjacentFiles array. This array is simple enough to calculate that the pre-calculated array provides no benefit. Reduces the memory footprint. STC LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 74839 W: 16390 L: 16373 D: 42076 Elo +0.08 http://tests.stockfishchess.org/tests/view/5c3d75920ebc596a450cfb67 No functionnal change see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Mon Jan 14 15:03:31 2019 +0100 Timestamp: 1547474611 Simplify pawn moves (#1900) If we define dcCandidates with & pawnsNotOn7, we don't have to & it both times. This seems more clear to me as well. Tested for no regression. STC LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 44042 W: 9663 L: 9585 D: 24794 Elo +0.62 http://tests.stockfishchess.org/tests/view/5c21d9120ebc5902ba12e84d No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Joost VandeVondele
Date: Mon Jan 14 09:25:22 2019 +0100 Timestamp: 1547454322 Simplify time management a bit The new form is likely to trigger a bit more at LTC. Given that LTC appears to be an improvement, I think that is fine. The change is not very invasive: it does the same as before, use potentially less time for moves that are very stable. Most of the time, the full bonus was given if the bonus was given, so the gradual part {3, 4, 5} didn't matter much. Whereas previously 'stable' was expressed as the last 80% of iterations are the same, now I use a fixed depth (10 iterations). For TCEC style TC, it will presumably imply some more moves that are played quicker (and thus more time on the clock when it potentially matters). Note that 10 iterations of stability means we've been proposing that move for 99.9% of search time. passed STC http://tests.stockfishchess.org/tests/view/5c30d2290ebc596a450c055b LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 70921 W: 15403 L: 15378 D: 40140 Elo +0.12 passed LTC http://tests.stockfishchess.org/tests/view/5c31ae240ebc596a450c1881 LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 17422 W: 2968 L: 2842 D: 11612 Elo +2.51 No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Joost VandeVondele
Date: Thu Jan 10 16:46:04 2019 +0100 Timestamp: 1547135164 Remove pvExact The variable pvExact now overlaps with the pvHit concept. So you simplify the logic with small code tweaks to have pvHit trigger where pvExact previously triggered. passed STC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 20558 W: 4497 L: 4373 D: 11688 Elo +2.10 http://tests.stockfishchess.org/tests/view/5c36e9fd0ebc596a450c7885 passed LTC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 23482 W: 3888 L: 3772 D: 15822 Elo +1.72 http://tests.stockfishchess.org/tests/view/5c37072d0ebc596a450c7a52 Bench: 3739723 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: mstembera
Date: Thu Jan 10 16:36:59 2019 +0100 Timestamp: 1547134619 Minor cleanup to recent 'Flag critical search tree in hash table' patch No functional change see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Joost VandeVondele
Date: Wed Jan 9 16:57:24 2019 +0100 Timestamp: 1547049444 Small improvements to the CI infrastructure - avoid inlining for the debug testing so that suppressions work - provide more output for triggered errors No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: MJZ1977
Date: Wed Jan 9 15:05:33 2019 +0100 Timestamp: 1547042733 Flag critical search tree in hash table Introducing new concept, saving principal lines into the transposition table to generate a "critical search tree" which we can reuse later for intelligent pruning/extension decisions. For instance in this patch we just reduce reduction for these lines. But a lot of other ideas are possible. To go further : tune some parameters, how to add or remove lines from the critical search tree, how to use these lines in search choices, etc. STC : LLR: 2.94 (-2.94,2.94) [0.50,4.50] Total: 59761 W: 13321 L: 12863 D: 33577 Elo +2.66 http://tests.stockfishchess.org/tests/view/5c34da5d0ebc596a450c53d3 LTC : LLR: 2.96 (-2.94,2.94) [0.00,3.50] Total: 26826 W: 4439 L: 4191 D: 18196 Elo +3.21 http://tests.stockfishchess.org/tests/view/5c35ceb00ebc596a450c65b2 Special thanks to Miguel Lahoz for his help in transposition table in/out. Bench: 3399866 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Miguel Lahoz
Date: Sun Jan 6 16:02:31 2019 +0100 Timestamp: 1546786951 Introduce Multi-Cut This was inspired after reading about [Multi-Cut](https://www.chessprogramming.org/Multi-Cut). We now do non-singular cut node pruning. The idea is to prune when we have a "backup plan" in case our expected fail high node does not fail high on the ttMove. For singular extensions, we do a search on all other moves but the ttMove. If this fails high on our original beta, this means that both the ttMove, as well as at least one other move was proven to fail high on a lower depth search. We then assume that one of these moves will work on a higher depth and prune. STC: LLR: 2.96 (-2.94,2.94) [0.50,4.50] Total: 72952 W: 16104 L: 15583 D: 41265 Elo +2.48 http://tests.stockfishchess.org/tests/view/5c3119640ebc596a450c0be5 LTC: LLR: 2.95 (-2.94,2.94) [0.00,3.50] Total: 27103 W: 4564 L: 4314 D: 18225 Elo +3.20 http://tests.stockfishchess.org/tests/view/5c3184c00ebc596a450c1662 Bench: 3145487 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Joost VandeVondele
Date: Fri Jan 4 15:36:39 2019 +0100 Timestamp: 1546612599 Check tablebase files This addresses partially issue #1911 in that it documents in our Readme the command that users can use to verifying the md5sum of their downloaded tablebase files. Additionally, a quick check of the file size (the size of each tablebase file modulo 64 is 16 as pointed out by @syzygy1) has been implemented at launch time in Stockfish. Closes https://github.com/official-stockfish/Stockfish/pull/1927 and https://github.com/official-stockfish/Stockfish/issues/1911 No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Marco Costalba
Date: Fri Jan 4 14:23:14 2019 +0100 Timestamp: 1546608194 Delay castling legality check Delay legality check of castling moves at search time, just before making the move, as is the standard with all the other move types. This should avoid an useless and not trivial legality check when the castling is then not tried later. For instance due to a previous cut-off. The patch is also a big simplification and allows to entirely remove generate_castling() Bench changes due to a different move sequence out of MovePicker. STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 45073 W: 9918 L: 9843 D: 25312 Elo +0.58 http://tests.stockfishchess.org/tests/view/5c2f176f0ebc596a450bdfb3 LTC: LLR: 3.15 (-2.94,2.94) [-3.00,1.00] Total: 10156 W: 1707 L: 1560 D: 6889 Elo +5.03 http://tests.stockfishchess.org/tests/view/5c2e7dfd0ebc596a450bcdf4 Verified with perft both in standard and Chess960 cases. Closes https://github.com/official-stockfish/Stockfish/pull/1929 Bench: 3559104 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Marco Costalba
Date: Tue Jan 1 14:10:26 2019 +0100 Timestamp: 1546348226 Assorted trivial cleanups (#1894) To address https://github.com/official-stockfish/Stockfish/issues/1862 No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Tue Jan 1 13:38:09 2019 +0100 Timestamp: 1546346289 Remove openFiles in pawns. (#1917) A single popcount in evaluate.cpp replaces all openFiles stuff in pawns. It doesn't seem to affect performance at all. STC LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 28103 W: 6134 L: 6025 D: 15944 Elo +1.35 http://tests.stockfishchess.org/tests/view/5b7d70a20ebc5902bdbb1999 No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Tue Jan 1 13:36:56 2019 +0100 Timestamp: 1546346216 Remove "Any" predicate filter (#1914) This custom predicate filter creates an unnecessary abstraction layer, but doesn't make the code any more readable. The code is clear enough without it. No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Tue Jan 1 13:35:53 2019 +0100 Timestamp: 1546346153 Remove as useless micro-optimization in pawns generation (#1915) The extra condition is used as a shortcut to skip the following 3 assignments: ```C++ Bitboard b1 = shift<UpRight>(pawnsOn7) & enemies; Bitboard b2 = shift<UpLeft >(pawnsOn7) & enemies; Bitboard b3 = shift<Up >(pawnsOn7) & emptySquares; ``` In case of EVASION with no target on 8th rank (the common case), we end up performing the 3 statements for nothing because b1 = b2 = b3 = 0. But this is just a small micro-optimization and the condition is quite confusing, so just remove it and prefer a readable code instead. STC LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 78020 W: 16978 L: 16967 D: 44075 Elo +0.05 http://tests.stockfishchess.org/tests/view/5c27b4fe0ebc5902ba135bb0 No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: erbsenzaehler
Date: Sat Dec 29 11:49:16 2018 +0100 Timestamp: 1546080556 Improve the Readme I tried to improve the Readme because many people in my local chess club do not understand some of the UCO options properly. Starting point of this was Cfish's Readme by Ronald de Man, some internet resources and the Stockfish code itself. Closes https://github.com/official-stockfish/Stockfish/pull/1898 Initial commit by user @erbsenzaehler, with help from users Adrian Petrescu, @alayan-stk-2 and Elvin Liu. No functional change Co-Authored-By: Alayan-stk-2 <> Co-Authored-By: Adrian Petrescu <> Co-Authored-By: Elvin Liu <> see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: 31m059
Date: Thu Dec 27 21:38:31 2018 +0100 Timestamp: 1545943111 Always initialize and evaluate king safety Recent tests by @xoto10, @Vizvezdenec, and myself seemed to hint that Elo could be gained by expanding the number of cases where king safety is applied. Several users (@Spliffjiffer, @Vizvezdenec) have anticipated benefits specifically in evaluation of tactics. It appears that we actually do not need to restrict the cases in which we initialize and evaluate king safety at all: initializing and evaluating it in every position appears roughly Elo-neutral at STC and possibly a substantial Elo gain at LTC. Any explanation for this scaling is, at this point, conjecture. Assuming it is not due to chance, my hypothesis is that initialization of king safety in all positions is a mild slowdown, offset by an Elo gain of evaluating king safety in all positions. At STC this produces Elo gains and losses that offset each other, while at longer time control the slowdown is much less important, leaving only the Elo gain. It probably helps SF to explore king attacks much earlier in search with high numbers of enemy pieces concentrating but not essentially attacking king ring. Thanks to @xoto10 and @Vizvezdenec for helping run my LTC! Closes https://github.com/official-stockfish/Stockfish/pull/1906 STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 35432 W: 7815 L: 7721 D: 19896 Elo +0.92 http://tests.stockfishchess.org/tests/view/5c24779d0ebc5902ba131b26 LTC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 12887 W: 2217 L: 2084 D: 8586 Elo +3.59 http://tests.stockfishchess.org/tests/view/5c25049a0ebc5902ba132586 Bench: 3163951 ------------------ How to continue from there? * Next step will be to tune all the king danger terms once more after that :-) see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: noobpwnftw
Date: Mon Dec 24 11:24:29 2018 +0100 Timestamp: 1545647069 Simplify SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX loop (#1892) When iterating through 'SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX' structure, do not use structure member beyond known size. API is guaranteed to provide us at lease one element upon successful, and no element in the structure can have a zero size. No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: noobpwnftw
Date: Mon Dec 24 11:20:14 2018 +0100 Timestamp: 1545646814 Fix crash in best_group() (#1891) This pull request fixes a rare crashing bug on Windows inside our NUMA code, first reported by Dann Corbit in the following forum thread (thanks!): https://groups.google.com/forum/?fromgroups=#!topic/fishcooking/gA6aoMEuOwg The fix is to not use structure member beyond known size when iterating through 'SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX' structure. We note that the Microsoft API is guaranteed to provide us at least one element upon successful, and no element in the structure can have a zero size. No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: Joost VandeVondele
Date: Mon Dec 24 11:06:47 2018 +0100 Timestamp: 1545646007 Extend stack to ss-5, and remove conditions The `&& (ss-1)->killers[0] ` conditions are there seemingly to protect accessing ss-5. This is unneeded and not so intuitive (as the killer is checked for equality with currentMove, and that one is non-zero once we're high enough in the stack, this protects access to ss-5). We can just extend the stack from ss-4 to ss-5, so we can call update_continuation_histories(ss-1, ..) always in search. This goes a bit further than #1881 and addresses a comment in #1878. passed STC: http://tests.stockfishchess.org/tests/view/5c1aa8d50ebc5902ba127ad0 LLR: 3.12 (-2.94,2.94) [-3.00,1.00] Total: 53515 W: 11734 L: 11666 D: 30115 Elo +0.44 passed LTC: http://tests.stockfishchess.org/tests/view/5c1b272c0ebc5902ba12858d LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 140176 W: 23123 L: 23192 D: 93861 Elo -0.17 Bench: 3451321 see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Mon Dec 24 10:44:38 2018 +0100 Timestamp: 1545644678 Improve endgame KBN vs K (#1877) Even when playing without endgame table bases, this particular endgame should be a win 100% of the time when Stockfish is given a KRBK position, assuming there are enough moves remaining in the FEN to finish the game without hitting the 50 move rule. PROBLEM: The issue with master here is that the PushClose difference per square is 20, however, the difference in squares for the PushToCorners array is usually less. Thus, the engine prefers to move the kings closer together rather than pushing the weak king to the correct corner. What happens is if the weak king is in a safe corner, SF still prefers pushing the kings together. Occasionally, the strong king traps the weak king in the safe corner. It takes a while for SF to figure it out, but often draws the game by the 50 move rule (on shorter time controls). This patch increases the PushToCorners values to correct this problem. We also added an assert to catch any overflow problem if anybody would want to increase the array values again in the future. It was tested in a couple of matches starting with random KRBK positions and showed increased winning rates, see https://github.com/official-stockfish/Stockfish/pull/1877 No functional change see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: erbsenzaehler
Date: Sun Dec 23 18:17:44 2018 +0100 Timestamp: 1545585464 Update our continuous integration machinery (#1889) * Update our continuous integration machinery Ubuntu 16.04 can now be used with travis. Updating all the other stuff when there. Invoking the lld linker seems to save 5 minutes with clang on linux. No functional change. * fix see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: mstembera
Date: Sun Dec 23 16:10:07 2018 +0100 Timestamp: 1545577807 Use a bit less code to calculate hashfull() (#1830) * Use a bit less code to calculate hashfull(). Change post increment to preincrement as is more standard in the rest of stockfish. Scale result so we report 100% instead of 99.9% when completely full. No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: mstembera
Date: Sun Dec 23 16:09:03 2018 +0100 Timestamp: 1545577743 Turn on random access for Syzygy files in Windows (#1840) * This is the Windows version of https://github.com/official-stockfish/Stockfish/pull/1829 No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Sun Dec 23 16:05:24 2018 +0100 Timestamp: 1545577524 Simplify generate_castling (#1885) Although this is a compile-time constant, we stick the castlingSide into a CastlingRight, then pull it out again. This seems unecessarily complex. No functional change. see source |
Windows x64 for Haswell CPUs Windows x64 for modern computers Windows x64 Windows 32 Linux x64 for Haswell CPUs Linux x64 for modern computers Linux x64 | Author: protonspring
Date: Thu Dec 20 10:47:18 2018 +0100 Timestamp: 1545299238 Simplify KBNK endgame implementation We do not need to change the winnerKSq variable, so we can simplify a little bit the logic of the code by changing only the loserKSq variable when it is necessary. Also consolidate and clarify comments. See the pull request thread for a proof that the code is correct: https://github.com/official-stockfish/Stockfish/pull/1854 No functional change see source |