Experimental UCI chess engine implemented in Go, download binaries at http://donnachess.github.io
Clone or download
Latest commit 1d7facb Oct 28, 2018
Permalink
Failed to load latest commit information.
benchmarks Version v4.1 Oct 27, 2018
bin Update Makefile to follow build/install conventions for Go packages Jan 7, 2016
cmd/donna Update copyright Sep 29, 2018
expect Replace \t with speces to override default message Sep 29, 2018
logo Thanks to Norbert Raimund Leisner (Germany) and Graham Banks (New Zea… Jan 13, 2015
scripts Added Nebula opening book Apr 12, 2015
.gitignore Update Makefile to follow build/install conventions for Go packages Jan 7, 2016
CHANGELOG Version v4.1 Oct 27, 2018
LICENSE Update copyright Sep 29, 2018
Makefile Version v4.1 Oct 27, 2018
README Update copyright Sep 29, 2018
bitmask.go Small optimization tweaks Oct 27, 2018
bitmask_test.go Update copyright Sep 29, 2018
book.go Update copyright Sep 29, 2018
book_test.go Update copyright Sep 29, 2018
data.go Version v4.1 Oct 27, 2018
data_bitbase.go Update copyright Sep 29, 2018
data_evaluate.go Update copyright Sep 29, 2018
engine.go Version 4.1rc6 Oct 20, 2018
engine_repl.go Report percentage of used cache entries Oct 19, 2018
engine_uci.go Report percentage of used cache entries Oct 19, 2018
evaluate.go Update copyright Sep 29, 2018
evaluate_endgame.go Small optimization tweaks Oct 27, 2018
evaluate_endgame_test.go Improve endgame evaluation with opposite-colored bishops Oct 19, 2018
evaluate_pawns.go Version v4.1rc3 with some more performance tweaks Oct 3, 2018
evaluate_pawns_test.go Update evaluation tests to match new params Sep 29, 2018
evaluate_pieces.go Update copyright Sep 29, 2018
evaluate_safety.go Update copyright Sep 29, 2018
evaluate_test.go Update evaluation tests to match new params Sep 29, 2018
evaluate_threats.go Fix evaluation tracing and summary display Oct 19, 2018
game.go Report percentage of used cache entries Oct 19, 2018
generate.go Update copyright Sep 29, 2018
generate_captures.go Update copyright Sep 29, 2018
generate_captures_test.go Update copyright Sep 29, 2018
generate_checks.go Version v4.1rc3 with some more performance tweaks Oct 3, 2018
generate_checks_test.go Update copyright Sep 29, 2018
generate_evasions.go Update copyright Sep 29, 2018
generate_evasions_test.go Update copyright Sep 29, 2018
generate_moves.go Update copyright Sep 29, 2018
generate_moves_test.go Update copyright Sep 29, 2018
generate_quiets.go Update copyright Sep 29, 2018
generate_quiets_test.go Update copyright Sep 29, 2018
generate_test.go Update copyright Sep 29, 2018
init.go Use old late move reductoin formula Oct 12, 2018
init_test.go Update copyright Sep 29, 2018
move.go Update copyright Sep 29, 2018
move_test.go Update copyright Sep 29, 2018
piece.go Update copyright Sep 29, 2018
position.go Version v4.1rc3 with some more performance tweaks Oct 3, 2018
position_cache.go Use 16-bit keys for caching Oct 13, 2018
position_cache_test.go Use 16-bit keys for caching Oct 13, 2018
position_exchange.go Update copyright Sep 29, 2018
position_exchange_test.go Update copyright Sep 29, 2018
position_moves.go Simplify making a move Oct 3, 2018
position_moves_test.go Update copyright Sep 29, 2018
position_targets.go Version v4.1rc3 with some more performance tweaks Oct 3, 2018
position_targets_test.go Update copyright Sep 29, 2018
position_test.go Update evaluation tests to match new params Sep 29, 2018
score.go Update copyright Sep 29, 2018
search.go Small optimization tweaks Oct 27, 2018
search_quiescence.go Improve bounds checking and late move reduction Oct 13, 2018
search_test.go Update copyright Sep 29, 2018
search_tree.go Small optimization tweaks Oct 27, 2018
utils.go Report percentage of used cache entries Oct 19, 2018

README

DONNA

   Donna is experimental chess engine implemented in Go. Donna comes with
   interactive command line shell and supports standard UCI (universal chess
   interface) protocol. Its technical features include:

   Data Structures
     - Magic bitboards
     - Transposition table
     - Material imbalance table
     - Pawn cache

   Move Generation
     - All possible and all valid moves
     - Captures and pawn promotions
     - Checks and check evasions

   Search
     - Root, tree, and quiescence searches
     - Aspiration windows
     - Iterative deepening
     - Search depth extensions
     - Alpha/beta pruning
     - Mate distance pruning
     - Razoring
     - Futility margin pruning
     - Null move pruning
     - Late move reduction
     - Delta pruning for captures
     - Good and killer move heuristics
     - Insufficient material and repetition detection

   Position Evaluation
     - Piece/square bonuses
     - Material with imbalance adjustment
     - King safety and pawn shield quality
     - Castling rights
     - Piece mobility
     - Control of the center
     - Threats and hanging pieces
     - Passed, isolated, doubled, and backwards pawns
     - Trapped rooks and bishops
     - Known and lesser known endgames
     - Bitbase for King + Pawn vs. King endgames

   Game Controls
     - Maximum search depth
     - Time to make a move
     - Time control for certain number of moves
     - Time increment

   Miscellaneous
     - UCI protocol support
     - Interactive read–eval–print loop (REPL)
     - Polyglot opening books
     - Go test suite with 300+ tests
     - Donna Chess Format to define chess positions in human-readable way

DOWNLOADS

   The latest versions of Donna executables are available for download at

   http://donnachess.github.io

   64-bit builds are provided for Windows, Mac OS X, Linux, and FreeBSD.

BUILDING FROM SOURCE

   To build Donna you will need Go v1.3 or later installed on your system (see
   http://golang.org/dl/). From Donna source directory run "make" or "go build"
   command:

   $ go build -o ./bin/donna -gcflags -B github.com/michaeldv/donna/cmd/donna

USING DONNA

   Donna chess engine can be used with any chess GUI software that supports UCI
   protocol. You can also launch Donna as standalone command-line program and
   play against it in interactive mode:

   $ ./donna -i
   Donna v4.1 Copyright (c) 2014-2018 by Michael Dvorkin. All Rights Reserved.
   Type ? for help.

   donna>

   Donna supports Polyglot chess opening books. Free opening books are available
   for download at https://github.com/michaeldv/donna_opening_books. To connect
   the opening book set DONNA_BOOK environment variable:

   $ export DONNA_BOOK=~/chess/books/gm2001.bin

STRENGTH

   Donna's chess ratings are available at Computer Chess Rating Lists site at

   http://www.computerchess.org.uk/ccrl/4040/cgi/engine_details.cgi?eng=Donna%201.0%2064-bit

THANK YOU!

   Donna stands on the shoulders of the giants and it would never have been
   possible without them. My gratitude goes to:

   - Aaron Becker, Daydreamer
   - Fabien Letouzey, Senpai
   - Igor Korshunov, Murka
   - Jon Dart, Arasan
   - Steve Maughan, Maverick
   - Tom Kerrigan, TSCP
   - Tord Romstad, Marco Costalba, and Joona Kiiski, Stockfish
   - Vadim Demichev, Gull
   - Vladimir Medvedev, GreKo

   Special thanks goes to my old time buddy grandmaster Eduardas Rozentalis who
   inspired me to develop a chess engine.

DEDICATION

   Donna chess engine is dedicated to Lithuanian grandmaster Donatas Lapienis,
   the man who taught me how to play chess, among other things. In the mid
   1980's (pre-computer era), Donatas was the highest ranking correspondence
   chess player in the world with ELO rating of 2715.

LICENSE

   Copyright (c) 2014-2018 Michael Dvorkin
   Donna is freely distributable under the terms of MIT license.

   I am making my contributions/submissions to this project solely in my personal
   capacity and am not conveying any rights to any intellectual property of any
   third parties.