{"id":15701112,"url":"https://github.com/bsamseth/goldfish","last_synced_at":"2025-07-13T16:07:34.196Z","repository":{"id":86018564,"uuid":"46797743","full_name":"bsamseth/Goldfish","owner":"bsamseth","description":"Goldfish - Stockfish's very distant and not so bright cousin - a UCI chess engine","archived":false,"fork":false,"pushed_at":"2024-11-10T14:45:04.000Z","size":23871,"stargazers_count":7,"open_issues_count":2,"forks_count":2,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-08T19:34:44.359Z","etag":null,"topics":["alpha-beta-pruning","chess","chess-engine","cpp","engine","lichess","tree-search","uci-chess-engine"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bsamseth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-11-24T14:44:32.000Z","updated_at":"2024-11-10T14:45:08.000Z","dependencies_parsed_at":"2024-03-18T21:08:13.009Z","dependency_job_id":"e5fc6553-c76a-4a7e-8377-a792e5c41936","html_url":"https://github.com/bsamseth/Goldfish","commit_stats":{"total_commits":610,"total_committers":2,"mean_commits":305.0,"dds":0.006557377049180357,"last_synced_commit":"9de6503c9d0b5d0dc0e6ba5c7aa13b2554abb4e3"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/bsamseth/Goldfish","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsamseth%2FGoldfish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsamseth%2FGoldfish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsamseth%2FGoldfish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsamseth%2FGoldfish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bsamseth","download_url":"https://codeload.github.com/bsamseth/Goldfish/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bsamseth%2FGoldfish/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265167714,"owners_count":23721501,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpha-beta-pruning","chess","chess-engine","cpp","engine","lichess","tree-search","uci-chess-engine"],"created_at":"2024-10-03T19:59:53.242Z","updated_at":"2025-07-13T16:07:34.177Z","avatar_url":"https://github.com/bsamseth.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=http://www.repostatus.org/#active\u003e\n    \u003cimg src=http://www.repostatus.org/badges/latest/active.svg alt=\"Project Status: Active – The project has reached a stable, usable state and is being actively developed.\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=https://github.com/bsamseth/Goldfish/actions/workflows/cargo-build-test.yml\u003e\n    \u003cimg src=https://github.com/bsamseth/Goldfish/actions/workflows/cargo-build-test.yml/badge.svg alt=\"Build and test\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=https://github.com/bsamseth/Goldfish/blob/main/LICENCE\u003e\n    \u003cimg src=https://img.shields.io/github/license/mashape/apistatus.svg alt=\"License\"/\u003e\n  \u003c/a\u003e\n    \u003ca href=https://lichess.org/@/Goldfish-Engine\u003e\n    \u003cimg src=https://img.shields.io/badge/Play%20Goldfish-lichess-green.svg alt=\"Play link\"/\u003e\n  \u003c/a\u003e\n  \u003cbr\u003e\n  \u003cimg src=\"https://github.com/bsamseth/goldfish/blob/main/logo.jpg?raw=true\" width=60% alt=\"Logo, a goldfish playing chess.\"/\u003e\n\u003c/p\u003e\n\n\n# Goldfish\n\u003e Stockfish's very distant and not so bright cousin\n\n### [Play Goldfish here](https://lichess.org/@/Goldfish-Engine)\n\n## What is this?\n\nThis is a [UCI](https://www.wbec-ridderkerk.nl/html/UCIProtocol.html) chess engine. \nThat means it is a program that can analyse chess\npositions and propose best moves.  The program does not have its own UI, but\nrather it implements the text based _Universal Chess Interface (UCI)_, which\nmakes it usable in most modern chess applications. This includes a live version\nof Goldfish that you can play on [lichess.org](https://lichess.org/@/Goldfish-Engine).\n\n## Why is this?\nThis is not, nor does it attempt to be, the best chess engine out there.\nIt is was originally developed from scratch as a\npractice project for learning C++. The end vision at that point was to have a\nworking chess engine with a UCI interface. In 2018 the engine was playable, and\nsomewhat stable. However, it was bad. Really bad. At this point it was decided\nto abandon my initial work instead of trying to work around bad design\ndecisions made by the former me. \n\nI then made a new version based on\n[fluxroot/pulse](https://github.com/fluxroot/pulse). Thanks a lot to the\noriginal author for his great work. From there, Goldfish was substantially\nrevamped and improved in most aspects, leaving little evidence of it's starting\npoint. [Version 1.13.0](https://github.com/bsamseth/Goldfish/releases/tag/v1.13.0) \nis the final version of the C++ version of Goldfish.\n\nIn late 2023 I wanted to get better at Rust, and started a complete rewrite. By\nmid 2024, the new 2.0 version exceeded version 1.13 in playing strength. The\ntwo version share in their overall search logic, but the Rust version is at\nthis point more sophisticated.\n\n## Why Goldfish?\n\nFor some reason, several top chess engines have names of different fish, e.g.\nStockfish, Rybka and others. Goldfish are known for their very limited memory,\nand so it seemed only fitting for my somewhat limited program to be named this. \n\n## Road map\n\nThe current plan for the project is to improve the strength. The following is a\nnon-exhaustive list of possibilities for future additions, including all features that have\nbeen added so far. The list is inspired in large part by [this writeup](http://www.frayn.net/beowulf/theory.html).\n\n-   [X] Making the engine playable on [lichess.org](lichess.org)\n-   [X] Null move pruning\n-   [X] Transposition table\n-   [X] Syzygy endgame tablebases\n-   [X] Check extensions\n-   [X] Killer move heuristic\n-   [X] Principal variation search\n-   [X] Internal iterative deepening\n-   [X] Futility pruning\n-   [X] Razoring\n-   [X] History heuristic\n-   [X] Delta pruning in quiescence search.\n    +   [X] Prune when _no_ move can improve enough\n    +   [X] Prune captures that are insufficient to improve\n-   [X] Tapered evaluation\n-   [ ] Aspiration window search\n-   [ ] Late move reductions\n-   [ ] Static exchange evaluation for move ordering\n-   [ ] More quiet move ordering heuristics\n-   [ ] ProbCut\n-   etc.\n\nEach significant change will result in a new version of the engine (see\n[releases](https://github.com/bsamseth/Goldfish/releases)). In the following\nyou see a relative rating between the current versions, based on test matches\nplayed with a variety of (short) time controls. In this rating system, `v1.13`\nis held at its [CCRL 40/40](http://computerchess.org.uk/ccrl/4040/) rating, and\nthe others are adjusted accordingly. Additionally, Stockfish with its\nadjustable `SkillLevel` is included for reference. This gives an impression of\nthe relative improvements of the engine over time, but cannot be compared\ndirectly to any other rating systems (e.g. FIDE).\n\n\n |   # | PLAYER               |   RATING  | POINTS  | PLAYED   | (%)|\n |:---:|---|:---:|:---:|:---:|:---:|\n |  1 | Stockfish 14.1 (S7)    |  2378.2  |   46.0  |   78 | 59.0% |\n |  2 | Goldfish v2.1.0        |  2314.1  |  196.5  |  374 | 52.5% |\n |  3 | Stockfish 14.1 (S6)    |  2215.4  |  139.5  |  228 | 61.2% |\n |  4 | Stockfish 14.1 (S5)    |  2172.3  |  139.5  |  247 | 56.5% |\n |  5 | Goldfish v2.0.0        |  2104.2  | 1114.0  | 1945 | 57.3% |\n |  6 | Goldfish v2.0.0-rc7    |  2030.4  |  687.0  | 1332 | 51.6% |\n |  7 | Goldfish v1.13.0       |  1983.0  | 1348.0  | 2622 | 51.4% |\n |  8 | Stockfish 14.1 (S4)    |  1974.2  |   63.5  |  214 | 29.7% |\n |  9 | Goldfish v1.12.1       |  1932.0  |  748.0  | 1613 | 46.4% |\n | 10 | Goldfish v1.12.0       |  1906.3  |  833.5  | 1528 | 54.5% |\n | 11 | Goldfish v1.11.1       |  1893.0  | 1095.0  | 2015 | 54.3% |\n | 12 | Goldfish v1.9.0        |  1878.3  | 1826.5  | 3538 | 51.6% |\n | 13 | Goldfish v1.11.0       |  1878.0  |  549.5  | 1100 | 50.0% |\n | 14 | Goldfish v2.0.0-rc6    |  1861.2  |  136.0  |  338 | 40.2% |\n | 15 | Goldfish v2.0.0-rc3    |  1853.6  |  177.5  |  417 | 42.6% |\n | 16 | Goldfish v2.0.0-rc5    |  1848.7  |  120.5  |  316 | 38.1% |\n | 17 | Goldfish v2.0.0-rc1    |  1835.2  |  217.5  |  436 | 49.9% |\n | 18 | Goldfish v2.0.0-rc2    |  1833.9  |  141.0  |  354 | 39.8% |\n | 19 | Goldfish v1.7.0        |  1813.7  | 1086.5  | 2053 | 52.9% |\n | 20 | Goldfish v1.8.2        |  1808.8  |  392.0  |  783 | 50.1% |\n | 21 | Goldfish v1.7.1        |  1806.6  |  244.0  |  477 | 51.2% |\n | 22 | Goldfish v1.8.0        |  1799.2  |  324.0  |  650 | 49.8% |\n | 23 | Goldfish v2.0.0-rc4    |  1798.8  |   19.5  |   57 | 34.2% |\n | 24 | Goldfish v1.8.1        |  1796.2  |  485.5  | 1000 | 48.5% |\n | 25 | Goldfish v1.6.0        |  1783.7  |  625.0  | 1151 | 54.3% |\n | 26 | Goldfish v1.7.2        |  1780.8  |   69.5  |  150 | 46.3% |\n | 27 | Goldfish v1.5.1        |  1726.0  |  645.5  | 1435 | 45.0% |\n | 28 | Goldfish v1.5          |  1723.7  |  554.5  | 1145 | 48.4% |\n | 29 | Goldfish v1.4          |  1720.9  |  646.5  | 1325 | 48.8% |\n | 30 | Goldfish v1.3          |  1706.2  |  314.0  |  680 | 46.2% |\n | 31 | Goldfish v1.2          |  1675.7  |  237.5  |  585 | 40.6% |\n | 32 | Goldfish v1.1          |  1634.5  |  210.0  |  597 | 35.2% |\n | 33 | Goldfish v1.0          |  1629.2  |  129.5  |  397 | 32.6% |\n\n\nDetailed head-to-head statistics can be found [here](stats/head-to-head-history.txt).\n\n## Installation\n\nSome releases have pre-compiled executables for Linux and Windows. If\navailable, download these and run them in your GUI of choice. Note that the\npre-compiled binaries won't necessarily be optimized for your CPU, and you\nmight get abou 5% better performance by compiling the engine yourself, see\nbelow.\n\n## Build\n\nRequires a recent Rust toolchain, with no particular MSRV. Get the latest stable version from [rustup](https://rustup.rs/).\n\n``` bash\ncd src\ncargo build --profile release-lto --bin goldfish\n```\n\nThis resulting executable will be in `target/release-lto/goldfish[.exe]`.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbsamseth%2Fgoldfish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbsamseth%2Fgoldfish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbsamseth%2Fgoldfish/lists"}