{"id":24618614,"url":"https://github.com/fabianvdw/fabchess","last_synced_at":"2026-02-28T12:38:35.923Z","repository":{"id":34018620,"uuid":"165744745","full_name":"fabianvdW/FabChess","owner":"fabianvdW","description":"UCI compliant chess engine written in Rust","archived":false,"fork":false,"pushed_at":"2023-01-20T22:29:51.000Z","size":28721,"stargazers_count":30,"open_issues_count":9,"forks_count":6,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-07-23T12:59:14.607Z","etag":null,"topics":["chess","engine","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabianvdW.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-14T22:22:22.000Z","updated_at":"2025-06-10T11:28:37.000Z","dependencies_parsed_at":"2023-02-12T06:15:22.991Z","dependency_job_id":null,"html_url":"https://github.com/fabianvdW/FabChess","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/fabianvdW/FabChess","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianvdW%2FFabChess","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianvdW%2FFabChess/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianvdW%2FFabChess/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianvdW%2FFabChess/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabianvdW","download_url":"https://codeload.github.com/fabianvdW/FabChess/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabianvdW%2FFabChess/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29934358,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T12:34:16.884Z","status":"ssl_error","status_checked_at":"2026-02-28T12:34:13.721Z","response_time":90,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["chess","engine","rust"],"created_at":"2025-01-24T23:52:39.601Z","updated_at":"2026-02-28T12:38:35.886Z","avatar_url":"https://github.com/fabianvdW.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FabChess\nUCI compliant chess engine in Rust.\n\nThis is only an engine, connect it with a gui for real usage.\n\n## Wiki\nInterested in how it works?\n\nCheck out the wiki at: https://github.com/fabianvdW/FabChess/wiki\n## Setup\nDownload latest release for your OS in the release section.\n## Compilation Guide\nIf you want to compile from source, make sure you have the latest version of Rust and Cargo installed. The only valid way to compile  the engine due to Rust's feature system having issues with workspaces is:\n```\ngit clone https://github.com/fabianvdW/FabChess.git\ncd FabChess\nset RUSTFLAGS=\"-C target-cpu=native\"\ncargo run --release -p uci-engine\n...\n\u003c info string Initialization Time: 0ms\n\u003e uci\n\u003c id name FabChess v1.15 BMI2\n\u003c id author Fabian von der Warth\n\u003c id contributors Erik Imgrund, Marcin Mielniczuk, Terje Kirstihagen\n\u003c option name Hash type spin default 256 min 0 max 131072\n...\n\u003c uciok\ngo infinite\n...\n```\nThe binary is in `./target/release/uci-engine(.exe)`\n## Playing strength\n| Version       | 40/4    |  40/40 | Comment |\n|---------------|---------|--------|---------|\n| Current Dev   |         |        |         |\n| Version 1.15  |3088/2982|  2943  | See CCRL|\n| Version 1.14  |3017/2924|  2917  | See CCRL|\n| Version 1.13  |2955-4CPU|  2877  | See CCRL|\n| Version 1.12.6| 2788    |  2762  | See CCRL|\n| Version 1.12  | 2785    |  -     | See CCRL|\n| Version 1.11  |  -      |  2606  | See CCRL|\n| Version 1.10  | \u003e2600   |        | Estimate|\n| Version 1.9.1 | 2510    |  2442  | See CCRL|\n| Version 1.9   | 2534    |  2463  | See CCRL|\n| Version 1.8   | 2409    |   -    | See CCRL|\n## Usage\nFabChess supports more commands than the standard UCI specifies.\n\n### Static evaluation\nUse `static` to get a static evaluation of the position\n```\n\u003e position startpos\n\u003e static\n\u003c cp 10\n```\n### Display evaluation\nIf you compile FabChess with an extra flag, it will also write a detailed overview of the evaluation to a logfile.\nFor this, you will have to change `core-sdk/Cargo.toml` to  include the feature in the default features:\n`default = [\"display-eval\"]`\n\n\n!!! Make sure not to run any `go` command with this, else it will quite literally produce a lot of text !!!\n```\n\u003e cargo run -p uci-engine\n\u003e position startpos\n\u003e static\n\u003c cp 10\n```\nStdout:\n```\nEvaluating GameState fen: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1\n\nTempo:(10 , 13)\n\nPSQT for White:\n\tPawn  : (-228 , -144)\n\tKnight  : (-64 , -63)\n\tBishop  : (-18 , -24)\n\tRook  : (22 , -42)\n\tQueen  : (17 , -4)\n\tKing  : (47 , -60)\nSum: (-224 , -337)\n\nPSQT for Black:\n\tPawn  : (-228 , -144)\n\tKnight  : (-64 , -63)\n\tBishop  : (-18 , -24)\n\tRook  : (22 , -42)\n\tQueen  : (17 , -4)\n\tKing  : (47 , -60)\nSum: (-224 , -337)\n\nPSQT Sum: (0 , 0)\n\nPiece values for White\n\tPawns: 8 -\u003e (848 , 952)\n\tKnights: 2 -\u003e (1016 , 1100)\n\tBishops: 2 -\u003e (984 , 948)\n\tBishop-Pair: 1 -\u003e (34 , 73)\n\tRooks: 2 -\u003e (1302 , 1730)\n\tQueens: 1 -\u003e (1540 , 1631)\nSum: (5724 , 6434)\n\nPiece values for Black\n\tPawns: 8 -\u003e (848 , 952)\n\tKnights: 2 -\u003e (1016 , 1100)\n\tBishops: 2 -\u003e (984 , 948)\n\tBishop-Pair: 1 -\u003e (34 , 73)\n\tRooks: 2 -\u003e (1302 , 1730)\n\tQueens: 1 -\u003e (1540 , 1631)\nSum: (5724 , 6434)\n\nPiece value Sum: (5724 , 6434) - (5724 , 6434) -\u003e (0 , 0)\n\nPawns for White:\n\tDoubled: 0 -\u003e (0 , 0)\n\tIsolated: 0 -\u003e (0 , 0)\n\tBackward: 0 -\u003e (0 , 0)\n\tSupported: 0 -\u003e (0 , 0)\n\tAttack Center: 0 -\u003e (0 , 0)\n\tMobility: 30 -\u003e (180 , 300)\n\tPasser Blocked/Not Blocked: 0 , 0 -\u003e (0 , 0)\n\tRook behind passer: 0 -\u003e (0 , 0)\n\tEnemy Rook behind passer: 0 -\u003e (0 , 0)\n\tWeak passer: 0 -\u003e (0 , 0)\n\tPassers distance to kings -\u003e (0 , 0)\nSum: (180 , 300)\n\nPawns for Black:\n\tDoubled: 0 -\u003e (0 , 0)\n\tIsolated: 0 -\u003e (0 , 0)\n\tBackward: 0 -\u003e (0 , 0)\n\tSupported: 0 -\u003e (0 , 0)\n\tAttack Center: 0 -\u003e (0 , 0)\n\tMobility: 30 -\u003e (180 , 300)\n\tPasser Blocked/Not Blocked: 0 , 0 -\u003e (0 , 0)\n\tRook behind passer: 0 -\u003e (0 , 0)\n\tEnemy Rook behind passer: 0 -\u003e (0 , 0)\n\tWeak passer: 0 -\u003e (0 , 0)\n\tPassers distance to kings -\u003e (0 , 0)\nSum: (180 , 300)\n\nPawn Sum: (180 , 300) - (180 , 300) -\u003e (0 , 0)\n\nKnights for White:\n\tSupported by pawns: 0 -\u003e (0 , 0)\n\tOutposts: 0 -\u003e (0 , 0)\nSum: (0 , 0)\n\nKnights for Black:\n\tSupported by pawns: 0 -\u003e (0 , 0)\n\tOutposts: 0 -\u003e (0 , 0)\nSum: (0 , 0)\n\nKnights Sum: (0 , 0) - (0 , 0) -\u003e (0 , 0)\n\nPiecewise for White:\n\tMobility Knight: (-4 , 14)\n\tMobility Bishop: (6 , -42)\n\tBishop Diagonally Adj: (-48 , 70)\n\tMobility Rook  : (-42 , -34)\n\tMobility Queen : (-12 , -27)\n\tRooks on open  : 0 -\u003e (0 , 0)\n\tRooks on semi-open  : 0 -\u003e (0 , 0)\n\tQueens on open  : 0 -\u003e (0 , 0)\n\tQueens on semi-open  : 0 -\u003e (0 , 0)\n\tRooks on seventh: 0 -\u003e (0 , 0)\n\tKnight Attackers: Num: 0 , Val: (0 , 0)\n\tBishop Attackers: Num: 0 , Val: (0 , 0)\n\tRook Attackers: Num: 0 , Val: (0 , 0)\n\tQueen Attackers: Num: 0 , Val: (0 , 0)\n\tSum Attackers: (Num: 0 , Val: (0 , 0)\n\tAttack MG value: 0 * 0 / 100.0 -\u003e 0\n\tAttack EG value: 0 * -1 / 100.0 -\u003e 0\nSum: (-100 , -19)\n\nPiecewise for Black:\n\tMobility Knight: (-4 , 14)\n\tMobility Bishop: (6 , -42)\n\tBishop Diagonally Adj: (-48 , 70)\n\tMobility Rook  : (-42 , -34)\n\tMobility Queen : (-12 , -27)\n\tRooks on open  : 0 -\u003e (0 , 0)\n\tRooks on semi-open  : 0 -\u003e (0 , 0)\n\tQueens on open  : 0 -\u003e (0 , 0)\n\tQueens on semi-open  : 0 -\u003e (0 , 0)\n\tRooks on seventh: 0 -\u003e (0 , 0)\n\tKnight Attackers: Num: 0 , Val: (0 , 0)\n\tBishop Attackers: Num: 0 , Val: (0 , 0)\n\tRook Attackers: Num: 0 , Val: (0 , 0)\n\tQueen Attackers: Num: 0 , Val: (0 , 0)\n\tSum Attackers: (Num: 0 , Val: (0 , 0)\n\tAttack MG value: 0 * 0 / 100.0 -\u003e 0\n\tAttack EG value: 0 * -1 / 100.0 -\u003e 0\nSum: (-100 , -19)\n\nPiecewise Sum: (-100 , -19) - (-100 , -19) -\u003e (0 , 0)\n\n\nKing for White:\n\tShield pawn missing: 0 -\u003e (0 , -7)\n\tShield pawn on open file missing: 0 -\u003e (1 , 5)\nSum: (1 , -2)\n\nKing for Black:\n\tShield pawn missing: 0 -\u003e (0 , -7)\n\tShield pawn on open file missing: 0 -\u003e (1 , 5)\nSum: (1 , -2)\n\nKing Sum: (1 , -2) - (1 , -2) -\u003e (0 , 0)\n\nSum: (0 , 0) + (0 , 0) + (0 , 0) + (0 , 0) + (0 , 0) + (0 , 0) + (10 , 13) -\u003e (10 , 13) \nPhase: 128\n\nFinal Result: (10 * 128 + 13 * (128.0 - 128))/128.0 -\u003e 10\ncp 10\n```\n### Perft\nYou can run perft on an arbitrary position. Note that if there is no king on the board for either side or the position is otherwise illegal, FabChess will crash (intended).\n```\n\u003e position startpos\n\u003e perft 6\n\u003c \na2a3: 4463267\nb2b3: 5310358\nc2c3: 5417640\nd2d3: 8073082\ne2e3: 9726018\nf2f3: 4404141\ng2g3: 5346260\nh2h3: 4463070\na2a4: 5363555\nb2b4: 5293555\nc2c4: 5866666\nd2d4: 8879566\ne2e4: 9771632\nf2f4: 4890429\ng2g4: 5239875\nh2h4: 5385554\nb1a3: 4856835\nb1c3: 5708064\ng1f3: 5723523\ng1h3: 4877234\n119060324\nTime 0.901 (132142423.97336292 nps)\n```\n### Debug print\nUse `d` for a debug print of the board\n```\n\u003e position startpos\n\u003e d\n\u003c\n+---+---+---+---+---+---+---+---+\n| r | n | b | q | k | b | n | r | \n+---+---+---+---+---+---+---+---+\n| p | p | p | p | p | p | p | p | \n+---+---+---+---+---+---+---+---+\n|   |   |   |   |   |   |   |   | \n+---+---+---+---+---+---+---+---+\n|   |   |   |   |   |   |   |   | \n+---+---+---+---+---+---+---+---+\n|   |   |   |   |   |   |   |   | \n+---+---+---+---+---+---+---+---+\n|   |   |   |   |   |   |   |   | \n+---+---+---+---+---+---+---+---+\n| P | P | P | P | P | P | P | P | \n+---+---+---+---+---+---+---+---+\n| R | N | B | Q | K | B | N | R | \n+---+---+---+---+---+---+---+---+\nCastle Rights: \nCWK: true\nCWQ: true\nCBK: true\nCBQ: true\nEn Passant Possible: 0\nHalf-Counter: 0\nFull-Counter: 1\nSide to Move: 0\nHash: 5939436254971627240\nFEN: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1\n```\n## Inspired heavily by:\n\n- https://www.chessprogramming.org/Main_Page\n- Stockfish\n- Ethereal\n- Asymptote\n\nSpecial thanks to Andrew Grant for writing [OpenBench](https://github.com/AndyGrant/OpenBench), which is used for selfplay testing, in order to incrementally improve on the last versions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabianvdw%2Ffabchess","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabianvdw%2Ffabchess","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabianvdw%2Ffabchess/lists"}