Stockfish (chess)

Stockfish is a free and open-source chess engine, available for various desktop and mobile platforms. It is developed by Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad, Stéphane Nicolet, Stefan Geschwentner, and Joost VandeVondele, with many contributions from a community of open-source developers.[2]

Stockfish
NewLogoSF.png
Developer(s)Marco Costalba
Joona Kiiski
Gary Linscott
Tord Romstad
Stéphane Nicolet
Stefan Geschwentner
Joost VandeVondele
Initial releaseNovember 2, 2008; 11 years ago (2008-11-02)
Stable release
12 / September 2, 2020; 58 days ago (2020-09-02)
Repository Edit this at Wikidata
Written inC++
Operating systemMicrosoft Windows
macOS
Linux
iOS
Android
TypeChess engine
LicenseGPLv3[1]
Websitestockfishchess.org Edit this on Wikidata

Stockfish is consistently ranked first or near the top of most chess-engine rating lists and is the strongest conventional chess engine in the world.[3] It won the unofficial world computer chess championships in seasons 6 (2014), 9 (2016), 11 (2018), 12 (2018), 13 (2018), 14 (2019), 16 (2019), 18 (2020) and 19 (2020). It finished runner-up in season 5 (2013), 7 (2014), 8 (2015), 15 (2019) and 17 (2020).

Stockfish is derived from Glaurung, an open-source engine by Tord Romstad released in 2004.

FeaturesEdit

Stockfish can use up to 512 CPU threads in multiprocessor systems. The maximal size of its transposition table is 32 TB. Stockfish implements an advanced alpha–beta search and uses bitboards. Compared to other engines, it is characterized by its great search depth, due in part to more aggressive pruning, and late move reductions.[4]

Stockfish supports Chess960, which is one feature that was inherited from Glaurung.

The Syzygy tablebase support, previously available in a fork maintained by Ronald de Man, was integrated into Stockfish in 2014.[5] In 2018 support for the 7-men Syzygy was added, shortly after becoming available.

HistoryEdit

The program originated from Glaurung, an open-source chess engine created by Romstad and first released in 2004. Four years later, Costalba, inspired by the strong open-source engine, decided to fork the project. He named it Stockfish because it was "produced in Norway and cooked in Italy" (Romstad is Norwegian, Costalba is Italian). The first version, Stockfish 1.0, was released in November 2008.[6][7] For a while, new ideas and code changes were transferred between the two programs in both directions, until Romstad decided to discontinue Glaurung in the favor of Stockfish, which was the more advanced engine at the time.[8] The last Glaurung (version 2.2) was released in December 2008.

Around 2011, Romstad decided to abandon his involvement with Stockfish in order to spend more time on his new iOS chess app.[citation needed]

On 18 June 2014 Marco Costalba announced that he had "decided to step down as Stockfish maintainer" and asked that the community create a fork of the current version and continue its development.[9] An official repository, managed by a volunteer group of core Stockfish developers, was created soon after and currently manages the development of the project.[10]

In June 2020, a efficiently updatable neural network (NNUE) fork called Stockfish NNUE was discussed by developers.[11][12] In July 2020 chess news reported that Stockfish NNUE had "broken new ground in computer chess by incorporating a neural network into the already incredibly powerful Stockfish chess engine."[13] A NNUE merge into Stockfish has been announced and development builds are available.[14][15]

"The NNUE branch maintained by @nodchip has demonstrated strong results and offers great potential, and we will proceed to merge ... This merge will introduce machine learning based coding to the engine, thus enlarging the community of developers, bringing in new skills. We are eager to keep everybody on board, including all developers and users of diverse hardware, aiming to be an inclusive community ...the precise steps needed will become clearer as we proceed, I look forward to working with the community to make this happen!"

— Joost VandeVondele, 25 July 2020[14]

On 2 September 2020, the twelfth version of Stockfish was released, incorporating the aforementioned neural network improvement. According to the blog announcement, this new version "plays significantly stronger than any of its predecessors", typically winning ten times more games than it loses when matched against version eleventh.[16]

FishtestEdit

Since 2013, Stockfish has been developed using a distributed testing framework named Fishtest, where volunteers can donate CPU time for testing improvements to the program.[17][18][19]

Changes to game-playing code are accepted or rejected based on results of playing of tens of thousands of games on the framework against an older "reference" version of the program, using sequential probability ratio testing. Tests on the framework are verified using the chi-squared test, and only if the results are statistically significant are they deemed reliable and used to revise the software code.

As of June 2018, the framework has used a total of more than 1200 years of CPU time to play over 840 million chess games.[20] After the inception of Fishtest, Stockfish experienced an explosive growth of 120 Elo points in just 12 months, propelling it to the top of all major rating lists.[21] In Stockfish 7, Fishtest author Gary Linscott was added to the official list of authors in acknowledgement of his contribution to Stockfish's strength.

Competition resultsEdit

Stockfish versus NakamuraEdit

Stockfish's strength relative to the best human chess players was most apparent in a handicap match with grandmaster Hikaru Nakamura (2798-rated) in August 2014. In the first two games of the match, Nakamura had the assistance of an older version of Rybka, and in the next two games, he received White with pawn odds but no assistance. Nakamura was the world's fifth-best human chess player at the time of the match, while Stockfish was denied use of its opening book and endgame tablebase. Stockfish won each half of the match 1.5–0.5. Both of Stockfish's wins arose from positions in which Nakamura, as is typical for his playing style, pressed for a win instead of acquiescing to a draw.[22]

An artificial-intelligence approach, designed by Jean-Marc Alliot of the Institut de recherche en informatique de Toulouse ("Toulouse Computer Science Research Institute"), which compares chess grandmaster moves against that of Stockfish, rated Magnus Carlsen as the best player of all-time, as he had the highest probability of all World Chess Champions to play the moves that Stockfish suggested.[23]

Participation in TCECEdit

Stockfish is a TCEC multiple-time champion and the current leader in trophy count. Ever since TCEC restarted in 2013, Stockfish has finished first or second in every season except one. In TCEC Season 4 and 5, Stockfish finished runner-up, with Superfinal scores of 23–25 first against Houdini 3 and later against Komodo 1142. Season 5 was notable for the winning Komodo team as they accepted the award posthumously for the program's creator Don Dailey, who succumbed to an illness during the final stage of the event. In his honor, the version of Stockfish that was released shortly after that season was named "Stockfish DD".[24]

On 30 May 2014, Stockfish 170514 (a development version of Stockfish 5 with tablebase support) convincingly won TCEC Season 6, scoring 35.5–28.5 against Komodo 7x in the Superfinal.[25] Stockfish 5 was released the following day.[26] In TCEC Season 7, Stockfish again made the Superfinal, but lost to Komodo with the score of 30.5–33.5.[25] In TCEC Season 8, despite losses on time caused by buggy code, Stockfish nevertheless qualified once more for the Superfinal, but lost the ensuing 100-game match 46.5–53.5 to Komodo.[25] In Season 9, Stockfish defeated Houdini 5 with a score of 54.5 versus 45.5.[25][27]

Stockfish finished third during season 10 of TCEC, the only season since 2013 in which Stockfish had failed to qualify for the superfinal. It did not lose a game, but was still eliminated because it was unable to score enough wins against lower-rated engines. After this technical elimination, Stockfish went on a long winning streak, winning seasons 11 (59 vs. 41 against Houdini 6.03),[25][28] 12 (60 vs. 40 against Komodo 12.1.1),[25][29] and 13 (55 vs. 45 against Komodo 2155.00)[25][30] convincingly.[31] In Season 14, Stockfish faced a new challenger in Leela Chess Zero, but managed to eke out a win by one game (50.5-49.5).[25][32] Its winning streak was finally ended in season 15, when Leela qualified again and won 53.5-46.5,[25] but Stockfish promptly won season 16, defeating AllieStein 54.5-45.5, after Leela failed to qualify for the superfinal.[25] In season 17, Stockfish faced Leela again in the superfinal, losing 52.5-47.5. However, Stockfish convincingly defeated Leela in the next two superfinals: 53.5-46.5 in season 18 and 54.5-45.5 in season 19.[25]

Stockfish also took part in the TCEC cup, winning the first edition, but was surprisingly upset by Houdini in the semifinals of the second edition.[25][33] Stockfish recovered to beat Komodo in the third place playoff.[25] In the third edition, Stockfish made it to the finals, but was defeated by Leela Chess Zero after blundering in a 7-man endgame tablebase draw. It gained its revenge[tone] in the fourth edition, defeating Leela in the final 4.5–3.5.[25]

Computer chess tournamentEdit

Ever since chess.com hosted its first computer chess championship in 2018, Stockfish has been the most successful engine. It dominated the earlier championships, winning six consecutive titles before finishing second in CCC7. Since then, its dominance has come under threat from the neural-network engines Leelenstein and Leela Chess Zero, but it has continued to perform well, reaching at least the superfinal in every edition up to CCC11. CCC12 had for the first time a knockout format, with seeding placing CCC11 finalists Stockfish and Leela in the same half. Leela eliminated Stockfish in the semi-finals. However, a post-tournament match against the loser of the final, Leelenstein, saw Stockfish winning in the same format as the main event.

Chess.com Computer Chess Championship
Event Year Time Controls Result Ref
CCC 1: Rapid Rumble 2018 15+5 1st [34]
CCC 2: Blitz Battle 2018 5+2 1st [35]
CCC 3: Rapid Redux 2019 30+5 1st [36]
CCC 4: Bullet Brawl 2019 1+2 1st [37]
CCC 5: Escalation 2019 10+5 1st [38]
CCC 6: Winter Classic 2019 10+10 1st [39]
CCC 7: Blitz Bonanza 2019 5+2 2nd [40]
CCC 8: Deep Dive 2019 15+5 1st [41]
CCC 9: The Gauntlet 2019 5+2, 10+5 1st [42]
CCC 10: Double Digits 2019 10+3 2nd [43]
CCC 11 2019 30+5 2nd [44]
CCC 12: Bullet Madness! 2020 1+1 3rd [45]
CCC 13: Heptagonal 2020 5+5 2nd [46]

Stockfish versus AlphaZeroEdit

In December 2017, Stockfish 8 was used as a benchmark to test Google division Deepmind's AlphaZero, with each engine supported by different hardware. AlphaZero was trained through self-play for a total of nine hours, and reached Stockfish's level after just four.[47][48][49] In 100 games from the normal starting position, AlphaZero won 25 games as White, won 3 as Black, and drew the remaining 72, with 0 losses.[50] AlphaZero also played twelve 100-game matches against Stockfish starting from twelve popular openings for a final score of 290 wins, 886 draws and 24 losses, for a point score of 733:467.[51][note 1]

AlphaZero's victory over Stockfish sparked a flurry of activity in the computer chess community, leading to a new open-source engine aimed at replicating AlphaZero, known as Leela Chess Zero. By January 2019, Leela was able to defeat the version of Stockfish that played AlphaZero (Stockfish 8) in a 100-game match. An updated version of Stockfish narrowly defeated Leela Chess Zero in the superfinal of the 14th TCEC season, 50.5–49.5 (+10 =81 −9),[25] but lost the superfinal of the next season to Leela 53.5-46.5 (+14 =79 -7).[25][53] The two engines remain very close in strength to each other even as they continue to improve: Leela defeated Stockfish in the superfinal of TCEC Season 17, but Stockfish won TCEC Season 18 and TCEC Season 19.

PlatformsEdit

Release versions and development versions are available as C++ source code and as precompiled versions for Microsoft Windows, macOS, Linux 32-bit/64-bit and Android.

Stockfish has been a very popular engine for various platforms. On the desktop, it is the default chess engine bundled with the Internet Chess Club interface programs BlitzIn and Dasher. On the mobile platform, it has been bundled with the Stockfish app, SmallFish and Droidfish. Other Stockfish-compatible graphical user interfaces (GUIs) include Fritz, Arena, Stockfish for Mac, and PyChess.[54][55] As of March 2014, Stockfish is the chess engine used by Lichess,[56] a popular online chess site.

AuthorsEdit

Founders and Maintainers
Author Name Role GitHub ID
Marco Costalba Founder of the project mcostalba
Joona Kiiski Founder of the project zamar
Gary Linscott Founder and Fishtest developer glinscott
Tord Romstad Author of Glaurung romstad
Stéphane Nicolet Maintainer since 2016[57] snicolet
Stefan Geschwentner Maintainer since Sep 2018[58] locutus2
Joost VandeVondele Maintainer since Jan 2020[59] vondele
Contributors to the Stockfish Project[2]
Author Name GitHub ID
Aditya absimaldata
Adrian Petrescu apetresc
Ajith Chandy Jose ajithcj
Alain Savard Rocky640
Alayan Feh Alayan-stk-2
Alexander Kure
Alexander Pagel Lolligerhans
Ali AlZhrani Cooffe
Andrew Grant AndyGrant
Andrey Neporada nepal
Andy Duplain
Aram Tumanian atumanian
Arjun Temurnikar
Auguste Pop
Balint Pfliegel
Ben Koshy BKSpurgeon
Bill Henry VoyagerOne
Bojun Guo noobpwnftw, Nooby
Unknown braich
Brian Sheppard SapphireBrand, briansheppard-toast
Bryan Cross crossbr
Unknown candirufish
Unknown Chess13234
Chris Cain ceebo
Dan Schmidt dfannius
Daniel Axtens daxtens
Daniel Dugovic ddugovic
Dariusz Orzechowski
David Zar
Daylen Yang daylen
Unknown DiscanX
Unknown double-beep
Eduardo Cáceres eduherminio
Eelco de Groot KingDefender
Elvin Liu solarlight2
Unknown erbsenzaehler
Ernesto Gatti
Linmiao Xu linrock
Fabian Beuke madnight
Fabian Fichter ianfab
Unknown fanon
Fauzi Akram Dabat FauziAkram
Felix Wittmann
Unknown gamander
Gary Heckman gheckman
Unknown gguliash
Gian-Carlo Pascutto gcp
Gontran Lemaire gonlem
Goodkov Vasiliy Aleksandrovich goodkov
Gregor Cramer
Unknown GuardianRM
Günther Demetz pb00067, pb00068
Guy Vreuls gvreuls
Henri Wiechers
Hiraoka Takuya HiraokaTakuya
Unknown homoSapiensSapiens
Hongzhi Cheng
Ivan Ivec IIvec
Jacques B. Timshel
Jan Ondruš hxim
Jared Kish Kurtbusch
Jarrod Torriero DU-jdto
Jean Gauthier OuaisBla
Jean-Francois Romang jromang
Unknown Jekaa
Jerry Donald Watson jerrydonaldwatson
Jonathan Calovski Mysseno
Jonathan Dumale SFisGOD
Jörg Oster joergoster
Joseph Ellis jhellis3
Joseph R. Prostko
Unknown jundery
Justin Blanchard UncombedCoconut
Kelly Wilson
Ken Takusagawa
Unknown kinderchocolate
Kiran Panditrao Krgp
Unknown Kojirion
Leonardo Ljubičić
Leonid Pechenik lp--
Linus Arver listx
Unknown loco-loco
Lub van den Berg ElbertoOne
Luca Brivio lucabrivio
Lucas Braesch lucasart
Lyudmil Antonov lantonov
Maciej Żenczykowski zenczykowski
Malcolm Campbell xoto10
Mark Tenzer 31m059
Unknown marotear
Matthew Lai matthewlai
Matthew Sullivan Matt14916
Michael An man
Michael Byrne MichaelB7
Michael Chaly Vizvezdenec
Michael Stembera mstembera
Michael Whiteley protonspring
Michel Van den Bergh vdbergh
Miguel Lahoz miguel-l
Mikael Bäckman mbootsector
Unknown Mira
Miroslav Fontán Hexik
Moez Jellouli MJZ1977
Mohammed Li tthsqe12
Nathan Rugg nmrugg
Nick Pelling nickpelling
Nicklas Persson NicklasPersson
Niklas Fiekas niklasf
Nikolay Kostov NikolayIT
Nguyen Pham
Ondrej Mosnáček WOnder93
Oskar Werkelin Ahlin
Pablo Vazquez
Unknown Panthee
Pascal Romaret
Pasquale Pigazzini ppigazzini
Patrick Jansen mibere
Unknown pellanda
Peter Zsifkovits CoffeeOne
Praveen Kumar Tummala praveentml
Rahul Dsilva silversolver1
Ralph Stößer (Ralph Stoesser)
Raminder Singh
Unknown renouve
Reuven Peleg
Richard Lloyd
Rodrigo Exterckötter Tjäder
Ron Britvich Britvich
Ronald de Man syzygy1, syzygy
Ryan Schmitt
Ryan Takker
Sami Kiminki skiminki
Sebastian Buchwald UniQP
Sergei Antonov saproj
Sergei Ivanov svivanov72
Unknown sf-x
Shane Booth shane31
Stefano Cardanobile Stefano80
Steinar Gunderson sesse
Unknown Thanar2
Unknown thaspel
Unknown theo77186
Tom Truscott
Tom Vijlbrief tomtor
Tomasz Sobczyk Sopel97
Torsten Franz torfranz, tfranzer
Tracey Emery basepr1me
Unai Corzo unaiic
Uri Blass uriblass
Vince Negri cuddlestmonkey

See alsoEdit

NotesEdit

  1. ^ The academic paper on this sequence of games does not provide the computer resources allocated to each engine.[52]

ReferencesEdit

  1. ^ "Stockfish GPLv3 license". github.com/official-stockfish/Stockfish. Retrieved 20 July 2020.
  2. ^ a b "List of Authors disclosed on Github". GitHub. Retrieved 29 June 2020.
  3. ^ "CCRL 40/15". computerchess.org.uk. 11 January 2010. Retrieved 13 January 2020.
  4. ^ Kaufman, Larry (24 November 2013). "Stockfish depth vs. others; challenge". talkchess.com. Retrieved 8 March 2014.
  5. ^ "Stockfish development versions". abrok.eu. Archived from the original on 11 November 2014. Retrieved 1 February 2015.
  6. ^ "About". stockfishchess.org. Retrieved 5 March 2014.
  7. ^ Costalba, Marco (2 November 2008). "Stockfish 1.0". talkchess.com. Retrieved 6 March 2014.
  8. ^ Romstad, Tord (5 September 2009). "Re: Stockfish - Glaurung". wbec-ridderkerk.forumotion.com. Retrieved 5 March 2014.
  9. ^ Costalba, Marco (18 June 2014). "Step down". groups.google.com. Retrieved 19 June 2014.
  10. ^ Linscott, Gary (18 June 2014). "New official repository". groups.google.com. Retrieved 19 June 2014.
  11. ^ nodchip. "Stockfish NNUE". Retrieved August 3, 2020.
  12. ^ "SF NNUE. Issue#2728 official-stockfish". June 27, 2020. Retrieved August 3, 2020.
  13. ^ Canary-Reed (the_real_greco), Wilhelm. "Stockfish+NNUE, Strongest Chess Engine Ever, To Compete In CCCC". Chess.com. Retrieved 2020-07-24.
  14. ^ a b Joost VandeVondele (July 25, 2020). "official-stockfish / Stockfish, NNUE merge". Retrieved August 3, 2020.
  15. ^ abrok.eu. "Stockfish NNUE Development Versions". Retrieved August 3, 2020.
  16. ^ blog announcement of version 12
  17. ^ "Stockfish Testing Framework". tests.stockfishchess.org. Retrieved 7 March 2014.
  18. ^ "Get Involved". stockfishchess.org. Retrieved 8 March 2014.
  19. ^ Costalba, Marco (1 May 2013). "Fishtest Distributed Testing Framework". talkchess.com. Retrieved 18 April 2014.
  20. ^ "Stockfish Testing Framework - Users". test.stockfishchess.org. Retrieved 14 June 2018.
  21. ^ "CCRL Rating List". Archived from the original on 30 May 2014.
  22. ^ http://www.chess.com/news/stockfish-outlasts-nakamura-3634.
  23. ^ "When artificial intelligence evaluates chess champions". Science Daily. CNRS. 25 April 2017.
  24. ^ "Stockfish Blog on Stockfish DD".
  25. ^ a b c d e f g h i j k l m n o p "TCEC Season Archive". tcec-chess.com. Retrieved 9 January 2015.
  26. ^ Costalba, Marco (31 May 2014). "Stockfish 5". talkchess.com. Retrieved 19 June 2014.
  27. ^ "Stockfish is the TCEC Season 9 Grand Champion". Chessdom. Retrieved 5 December 2016.
  28. ^ "TCEC Season 11 Superfinal 2018". chess24.com. Retrieved 18 November 2018.
  29. ^ "TCEC Season 12 Superfinal 2018". chess24.com. Retrieved 18 November 2018.
  30. ^ "TCEC Season 13 Superfinal 2018". chess24.com. Retrieved 18 November 2018.
  31. ^ "Stockfish convincingly wins TCEC Season 11". Chessdom. Retrieved 18 April 2018.
  32. ^ "Stockfish continues to dominate computer chess, wins TCEC S14". Chessdom. 1 March 2019.
  33. ^ "Houdunit ? Most shocking chess engine game of TCEC 2019".
  34. ^ Cilento, Pete. "Stockfish Wins Computer Chess Championship Rapid; Lc0 Finishes 3rd". Chess.com. Retrieved 20 June 2019.
  35. ^ Cilento, Pete. "Stockfish Wins Computer Chess Championship Blitz". Chess.com. Retrieved 20 June 2019.
  36. ^ Cilento, Pete. "Stockfish Wins Rapid Computer Championship Over Lc0; Bullet Chess Next". Chess.com. Retrieved 20 June 2019.
  37. ^ Cilento, Pete. "Stockfish Wins Computer Chess Championship Bullet; 'Escalation' Next". Chess.com. Retrieved 20 June 2019.
  38. ^ [1]
  39. ^ Cilento, Pete. "Computer Chess Championship Plays Blitz After Stockfish Defends Title". Chess.com. Retrieved 20 June 2019.
  40. ^ Cilento, Pete (17 April 2019). "Lc0 Wins Computer Chess Championship, Makes History". Chess.com. Retrieved 18 April 2019.
  41. ^ Pete (pete). "Stockfish Strikes Back, Tops Lc0 In Computer Chess Championship". Chess.com. Retrieved 29 May 2019.
  42. ^ "Computer Chess Championship". Chess.com. Retrieved 9 July 2019.
  43. ^ "Computer Chess Championship". Chess.com. Retrieved 30 July 2019.
  44. ^ "Computer Chess Championship". Chess.com. Retrieved 27 December 2019.
  45. ^ "Computer Chess Championship". Chess.com. Retrieved 28 January 2020.
  46. ^ "Computer Chess Championship". Chess.com. Retrieved 30 April 2020.
  47. ^ DeepMind (6 December 2018). "AlphaZero: Shedding new light on chess, shogi, and Go". deepmind.com. Retrieved 20 July 2020.
  48. ^ Knapton, Sarah; Watson, Leon (6 December 2017). "Entire human chess knowledge learned and surpassed by DeepMind's AlphaZero in four hours". Telegraph.co.uk. Retrieved 6 December 2017.
  49. ^ Vincent, James (6 December 2017). "DeepMind's AI became a superhuman chess player in a few hours, just for fun". The Verge. Retrieved 6 December 2017.
  50. ^ "'Superhuman' Google AI claims chess crown". BBC News. 6 December 2017. Retrieved 7 December 2017.
  51. ^ "DeepMind's AlphaZero crushes chess". chess.com. 6 December 2017. Retrieved 13 December 2017.
  52. ^ Silver, David; Hubert, Thomas; Schrittwieser, Julian; Antonoglou, Ioannis; Lai, Matthew; Guez, Arthur; Lanctot, Marc; Sifre, Laurent; Kumaran, Dharshan; Graepel, Thore; Lillicrap, Timothy; Simonyan, Karen; Hassabis, Demis (5 December 2017). "Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm". arXiv:1712.01815 [cs.AI].
  53. ^ crem. "Lc0 won TCEC 15". Retrieved 20 June 2019.
  54. ^ Using the Stockfish Engine, Stockfish Support.
  55. ^ ChessEngines, PyChess Github.
  56. ^ [2] Lichess uses Stockfish announcement.
  57. ^ [3], Stéphane commits to master.
  58. ^ https://groups.google.com/forum/#!msg/fishcooking/gxAS3isl4pU/GGsVYtdFBQAJ, Stéphane announces a new maintainer
  59. ^ [4], Commit showing Vondele directly pushing to master.

Further readingEdit

External linksEdit