Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 

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.4

News

  • Reverse Futility Pruning
  • Stalemate improvement
  • Trasposition Table improvement
  • Bug fix in castle
  • Bug fix in en passant
  • Speeded up Perft
  • Compilable with MS Visual Studio

Useful links

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.