Skip to content
Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time
Mar 18, 2019
May 14, 2015
Feb 10, 2021


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.




  • Chess 960
  • Killer heuristics
  • Improved move ordering
  • Improved Gaviota Tablebase search
  • Syzygy Tablebases
  • BMI2 Instructions
  • Bug fix in enpassant
  • Bug fix parallel perft

Useful links


  • 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
  • Delta pruning
  • Razoring
  • Interruptible multithread Perft test standard and chess960
  • 32/64 bit architectures
  • Iterative deeping
  • History heuristics
  • Killer heuristics
  • Lazy evaluation
  • Two-tier Transposition Table
  • Aspiration Windows
  • Late Move Reduction
  • Ponder
  • Open Book (Polyglot)
  • Gaviota Tablebases
  • Syzygy Tablebases
  • Elo ratings


Binaries are available here. All files are compiled statically, no further libraries are necessary.

Command line tools


cinnamon -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 -dtm-gtb -f "fen position" -p path

Gaviota WDL (win/draw/loss)

cinnamon -wdl-gtb -f "fen position" -p path

SYZYFY DTZ (distance to zero)

cinnamon -dtz-syzygy -f "fen position" -p path

SYZYFY WDL (win/draw/loss)

cinnamon -wdl-syzygy -f "fen position" -p path

EPD generator

cinnamon -puzzle_epd -t K?K? example: cinnamon -puzzle_epd -t KRKP


Cinnamon requires C++11 or greater, use 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

 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++


Cinnamon is released under the GPLv3+ license.


Cinnamon was written by Giuseppe Cannella at gmail dot com.