Cinnamon
Cinnamon copied to clipboard
C++ UCI chess engine
Cinnamon
UCI Chess Engine
Cinnamon is a chess program for Windows, Linux, Mac OS, Android and Raspberry Pi, is a console-based chess engine for use with xboard, Arena, Tarrasch, Droidfish or any UCI-compatible GUI. Cinnamon is also a javascript library to play with chessboardjs or any js GUI.
Version
2.5
News
- Time management
- Tapered eval
Useful links
- Bitboard Calculator
- Auriga Distributed Perft
- Web Eval debugger
- Cinnamon on Android
- Cinnamon on DGT Pi
- Clion IDE
Features
- Elo ratings
- Available for both Unix, Windows, Mac, Android, ARM and Javascript
- UCI protocol
- GPL 3 License
- Chess 960
- C++11 source
- PVS
- Rotated bitboards
- Null moves
- Futility pruning
- Reverse Futility Pruning
- Delta pruning
- Razoring
- Interruptible multithread Perft test standard and chess960
- 32/64 bit architectures
- Iterative deeping
- History heuristics
- Killer heuristics
- Lazy evaluation
- MVV/LVA
- Transposition Table
- Aspiration Windows
- Late Move Reduction
- Ponder
- Gaviota Tablebases
- Syzygy Tablebases
Binaries
Binaries are available here. All files are compiled statically, no further libraries are necessary.
Command line tools
Perft
cinnamon.exe -perft [-d depth] [-c nCpu] [-h hash size (mb) [-F dump file]] [-Chess960] [-f "fen position"]
Setting -F
and -h
you can stop (Ctrl-c) and restart the perft process.
Gaviota DTM (distance to mate)
cinnamon.exe -dtm-gtb -f "fen position" -p path
Gaviota WDL (win/draw/loss)
cinnamon.exe -wdl-gtb -f "fen position" -p path
SYZYFY DTZ (distance to zero)
cinnamon.exe -dtz-syzygy -f "fen position" -p path
SYZYFY WDL (win/draw/loss)
cinnamon.exe -wdl-syzygy -f "fen position" -p path
EPD generator
cinnamon.exe -puzzle_epd -t K?K?
example: cinnamon.exe -puzzle_epd -t KRRKPN
Compiling
Cinnamon requires C++11 or greater
-
use MS Visual Studio (cinnamon.vcxproj)
-
use cmake (CMakeLists.txt)
-
use make - unique Makefile to compile for many architectures:
$ make
Makefile for cross-compile Linux/Windows/OSX/ARM/Javascript
make cinnamon64-modern-INTEL > 64-bit optimized for modern Intel cpu
make cinnamon64-BMI2 > 64-bit optimized for Haswell Intel cpu
make cinnamon64-modern-AMD > 64-bit optimized for modern Amd cpu
make cinnamon64-modern > 64-bit with popcnt bsf sse3 support
make cinnamon64-generic > Unspecified 64-bit
make cinnamon64-ARM > Optimized for ARM cpu
make cinnamon32-modern > 32-bit with sse support
make cinnamon32-generic > Unspecified 32-bit
make cinnamon32-ARM > Optimized for ARM cpu
make cinnamon-js > Javascript build
add:
COMP=compiler > Use another compiler
FULL_TEST=yes > Unit test (googletest)
g++ is the default compiler, add COMP=yourcompiler to use another compiler
example: make cinnamon64-modern-INTEL COMP=clang++
License
Cinnamon is released under the GPLv3+ license.
Credits
Cinnamon was written by Giuseppe Cannella at gmail dot com.