Giter VIP home page Giter VIP logo

cinnamon's Introduction

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

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.

cinnamon's People

Contributors

gekomad avatar niklasf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

cinnamon's Issues

Cinnamon 2.3 develop disconnects (FRC)

Hello!
I tested the develop branch in a CuteChess tournament. There is still a problem. Here is a position on which the engine disconnects.

Started game 1 of 4 (Cinnamon 2.3 vs Sjaak 524)
22 >Cinnamon 2.3(0): setoption name UCI_Chess960 value true
22 >Cinnamon 2.3(0): ucinewgame
22 >Cinnamon 2.3(0): setoption name Ponder value false
22 >Cinnamon 2.3(0): position fen rkrnbnqb/pppppppp/8/8/8/8/PPPPPPPP/RKRNBNQB w CAca - 0 1

37315 >Cinnamon 2.3(0): position fen rkrnbnqb/pppppppp/8/8/8/8/PPPPPPPP/RKRNBNQB w CAca - 0 1 moves d1c3 g7g5 d2d3 f7f5 g2g4 f5g4 g1g4 f8e6 f1g3 g8f7 g3f5 h8e5 c3d5 d8c6 g4f3 c6d4 f5d4 e6d4 f3e4 d4c6 e1d2 f7g7 d2c3 e8g6 c3e5 c6e5 e4b4 e5c6 b4g4 e7e6 d5e3 b8c8 g4g5 f8f2
37315 >Cinnamon 2.3(0): isready
37315 <Cinnamon 2.3(0): fenStr: f8f2 from: 58
37315 <Cinnamon 2.3(0): Wed Oct 21 21:37:47 2020 ********************************** assert error in GenMoves.cpp:539  **********************************

The same command in Alouette:

Alouette 0.1.3
setoption name UCI_Chess960 value true
position fen rkrnbnqb/pppppppp/8/8/8/8/PPPPPPPP/RKRNBNQB w CAca - 0 1 moves d1c3 g7g5 d2d3 f7f5 g2g4 f5g4 g1g4 f8e6 f1g3 g8f7 g3f5 h8e5 c3d5 d8c6 g4f3 c6d4 f5d4 e6d4 f3e4 d4c6 e1d2 f7g7 d2c3 e8g6 c3e5 c6e5 e4b4 e5c6 b4g4 e7e6 d5e3 b8c8 g4g5 f8f2
show
+  A B C D E F G H  +
8 |r|:|.|:|.|:|k|:| 8
7 |p|p|p|p|:|.|q|p| 7
6 |.|:|n|:|p|:|b|:| 6
5 |:|.|:|.|:|.|Q|.| 5
4 |.|:|.|:|.|:|.|:| 4
3 |:|.|:|P|N|.|:|.| 3
2 |P|P|P|:|P|r|.|P| 2
1 |R|K|R|.|:|.|:|B| 1
+  A B C D E F G H  + <--
Castling: CA
En passant: -
FEN: r5k1/pppp2qp/2n1p1b1/6Q1/8/3PN3/PPP1Pr1P/RKR4B w CA -
perft 1
Depth   Result   Time elapsed
    1       44   00:00:00:000

cinnamon23-disconnects-202010212149

Regards.
Roland

Wrong winning mate evals in lost positions

An example game:

[Event "?"]
[Site "?"]
[Date "2019.05.27"]
[Round "?"]
[White "Der Bringer 1.9"]
[Black "Cinnamon 2.2a 64-bit"]
[Result "1-0"]
[ECO "A46"]
[GameDuration "01:34:26"]
[GameEndTime "2019-05-28T01:18:49.822 Eastern Daylight Time"]
[GameStartTime "2019-05-27T23:44:23.203 Eastern Daylight Time"]
[Opening "Queen's pawn game"]
[PlyCount "187"]
[TimeControl "40/1200"]

1. d4 {book} Nf6 {book} 2. Nf3 {book} c5 {book} 3. c3 {book} e6 {book}
4. Bg5 {book} Qb6 {book} 5. Qb3 {-0.14/12 19s} Qxb3 {-0.08/15 33s}
6. axb3 {+0.19/14 19s} cxd4 {-0.23/15 32s} 7. Nxd4 {+0.38/15 25s}
Nc6 {-0.50/14 20s} 8. Nb5 {+0.29/15 35s} Rb8 {-0.31/16 31s}
9. Nc7+ {+0.32/13 20s} Kd8 {-0.07/17 30s} 10. Bxf6+ {-0.04/13 22s}
gxf6 {+0.31/15 19s} 11. Nb5 {+0.05/15 15s} a6 {+0.23/15 18s}
12. N5a3 {-0.03/14 15s} b5 {+0.23/14 18s} 13. b4 {+0.12/13 27s}
Bb7 {+0.23/13 18s} 14. Nd2 {+0.06/13 38s} Bd6 {+0.19/15 27s}
15. Ne4 {+0.19/13 40s} Be7 {+0.26/15 26s} 16. Nc5 {+0.15/14 28s}
Bxc5 {+0.34/16 26s} 17. bxc5 {+0.20/13 23s} Rg8 {+0.29/14 25s}
18. Nc2 {+0.19/12 22s} Ke7 {+0.17/14 25s} 19. f3 {+0.17/12 41s}
Ne5 {+0.44/15 24s} 20. O-O-O {+0.25/13 36s} Rbc8 {+0.51/13 23s}
21. b4 {+0.24/13 37s} a5 {+0.47/14 22s} 22. e3 {+0.26/12 22s} Ra8 {+0.58/13 22s}
23. e4 {+0.07/12 39s} Bc6 {+0.53/13 21s} 24. h3 {0.00/12 22s} Ng6 {+0.56/14 21s}
25. h4 {+0.10/13 52s} axb4 {+0.51/13 20s} 26. cxb4 {+0.10/13 27s}
Ra2 {+0.49/14 19s} 27. h5 {+0.07/12 24s} Nf4 {+0.47/13 19s}
28. Rd2 {+0.16/13 33s} h6 {+0.43/14 18s} 29. Kb1 {+0.11/12 22s}
Ra4 {+0.30/15 18s} 30. g4 {+0.08/14 38s} Rga8 {+0.46/15 17s}
31. Rhh2 {+0.07/15 46s} R4a6 {+0.51/15 17s} 32. Rd6 {+0.15/15 45s}
Ra2 {+0.50/15 16s} 33. Bd3 {+0.10/14 25s} e5 {+0.46/15 16s}
34. Rd2 {+0.05/14 44s} Ne6 {+0.47/16 15s} 35. Be2 {+0.01/14 33s}
R8a4 {+0.47/15 15s} 36. R6d3 {+0.03/15 54s} Ra7 {+0.25/14 15s}
37. Kc1 {+0.05/14 43s} Ra8 {+0.27/16 14s} 38. Kd1 {+0.26/14 33s}
Kf8 {+0.30/13 14s} 39. Rb3 {+0.12/15 85s} Kg8 {+0.30/15 13s}
40. Ke1 {+0.25/14 25s} Nf4 {+0.31/9 0.45s} 41. Bd1 {+0.30/15 60s}
Ne6 {+0.31/15 46s} 42. Rdd3 {+0.30/14 24s} R8a6 {+0.31/16 45s}
43. Rd6 {+0.30/14 37s} Kg7 {+0.29/16 44s} 44. Ne3 {+0.33/13 50s}
Nd4 {+0.36/17 43s} 45. Rd3 {+0.36/13 20s} Rb2 {+0.30/18 41s}
46. R3xd4 {0.00/14 27s} exd4 {+0.32/18 40s} 47. Nf5+ {+0.26/14 78s}
Kf8 {+0.17/17 39s} 48. Rxf6 {+0.30/13 22s} Rh2 {+0.20/18 38s}
49. Rxh6 {+0.72/13 19s} Kg8 {+0.20/19 37s} 50. Nxd4 {+0.40/13 18s}
Ra1 {+1.69/18 36s} 51. Nf5 {0.00/12 28s} Rh1+ {+1.42/17 35s}
52. Ke2 {0.00/14 34s} Rhxd1 {+1.36/16 34s} 53. Ne7+ {0.00/13 19s}
Kg7 {+0.87/18 33s} 54. Nf5+ {0.00/14 16s} Kg8 {+0.76/19 32s}
55. Ne7+ {0.00/14 23s} Kf8 {+0.63/20 31s} 56. Nf5 {0.00/12 19s}
Re1+ {+0.61/19 30s} 57. Kd2 {0.00/13 40s} Kg8 {+0.61/18 30s}
58. Ne7+ {0.00/16 26s} Kg7 {+0.61/18 29s} 59. Nf5+ {0.00/16 17s}
Kg8 {+0.30/18 28s} 60. Ne7+ {0.00/17 17s} Kf8 {+0.61/19 27s}
61. Nf5 {0.00/16 15s} Rad1+ {+0.50/18 26s} 62. Kc3 {0.00/13 37s}
Kg8 {+0.61/19 26s} 63. Ne7+ {0.00/13 11s} Kg7 {+0.13/18 25s}
64. Nf5+ {0.00/15 12s} Kg8 {-4.50/17 24s} 65. Ne7+ {0.00/17 15s}
Kf8 {+0.13/18 24s} 66. Nf5 {0.00/15 22s} Rc1+ {+0.09/17 23s}
67. Kd2 {0.00/14 20s} Kg8 {+0.21/19 22s} 68. Ne7+ {0.00/16 12s}
Kf8 {+0.07/18 22s} 69. Nf5 {0.00/16 15s} f6 {-0.29/17 21s}
70. Rxf6+ {+0.36/11 20s} Ke8 {-0.30/16 21s} 71. g5 {+0.28/10 26s}
Rcd1+ {-0.63/15 20s} 72. Kc3 {+0.25/10 12s} Rc1+ {-1.20/15 19s}
73. Kd4 {+1.76/10 20s} d6 {-1.29/14 19s} 74. Nxd6+ {+2.25/9 8.4s}
Kd8 {-1.60/15 18s} 75. g6 {+4.16/9 9.2s} Rg1 {-1.30/13 18s} 76. h6 {+4.85/9 25s}
Rcd1+ {-4.08/13 17s} 77. Ke5 {+5.70/11 15s} Rg5+ {-4.95/14 17s}
78. Kf4 {+5.71/11 7.4s} Rh5 {-5.19/15 16s} 79. Nf7+ {+6.29/10 14s}
Kc7 {-4.65/14 16s} 80. g7 {+7.34/10 6.7s} Rg1 {-4.08/10 0.28s}
81. Rxc6+ {+9.27/15 32s} Kxc6 {-8.46/18 49s} 82. Ne5+ {+10.91/15 59s}
Kc7 {-8.50/20 47s} 83. Ng4 {+11.71/15 254s} Rxh6 {-8.65/18 46s}
84. g8=Q {+12.35/13 28s} Rf6+ {-9.84/18 45s} 85. Nxf6 {+29.75/16 203s}
Rxg8 {+M1/23 76s} 86. Nxg8 {+32.55/15 19s} Kd8 {+M1/27 41s}
87. e5 {+M24/15 164s} Kc7 {+M1/26 40s} 88. e6 {+M16/12 135s} Kc8 {+M1/25 39s}
89. e7 {+M14/11 12s} Kd7 {+M1/21 38s} 90. Kf5 {+M12/11 108s} Ke8 {+M1/23 37s}
91. c6 {+M10/10 21s} Kf7 {+M1/21 36s} 92. c7 {+M8/9 64s} Kxg8 {+M1/19 35s}
93. Kg6 {+M4/8 71s} Kh8 {+M1/25 34s} 94. e8=Q# {+M2/1 0.16s, White mates} 1-0


An excerpt of the debug log following 87. e5:

>Cinnamon 2.2a 64-bit(1491): position startpos moves d2d4 g8f6 g1f3 c7c5 c2c3 e7e6 c1g5 d8b6 d1b3 b6b3 a2b3 c5d4 f3d4 b8c6 d4b5 a8b8 b5c7 e8d8 g5f6 g7f6 c7b5 a7a6 b5a3 b7b5 b3b4 c8b7 b1d2 f8d6 d2e4 d6e7 e4c5 e7c5 b4c5 h8g8 a3c2 d8e7 f2f3 c6e5 e1c1 b8c8 b2b4 a6a5 e2e3 c8a8 e3e4 b7c6 h2h3 e5g6 h3h4 a5b4 c3b4 a8a2 h4h5 g6f4 d1d2 h7h6 c1b1 a2a4 g2g4 g8a8 h1h2 a4a6 d2d6 a6a2 f1d3 e6e5 h2d2 f4e6 d3e2 a8a4 d6d3 a4a7 b1c1 a7a8 c1d1 e7f8 d3b3 f8g8 d1e1 e6f4 e2d1 f4e6 d2d3 a8a6 d3d6 g8g7 c2e3 e6d4 b3d3 a2b2 d3d4 e5d4 e3f5 g7f8 d6f6 b2h2 f6h6 f8g8 f5d4 a6a1 d4f5 h2h1 e1e2 h1d1 f5e7 g8g7 e7f5 g7g8 f5e7 g8f8 e7f5 d1e1 e2d2 f8g8 f5e7 g8g7 e7f5 g7g8 f5e7 g8f8 e7f5 a1d1 d2c3 f8g8 f5e7 g8g7 e7f5 g7g8 f5e7 g8f8 e7f5 d1c1 c3d2 f8g8 f5e7 g8f8 e7f5 f7f6 h6f6 f8e8 g4g5 c1d1 d2c3 d1c1 c3d4 d7d6 f5d6 e8d8 g5g6 e1g1 h5h6 c1d1 d4e5 g1g5 e5f4 g5h5 d6f7 d8c7 g6g7 d1g1 f6c6 c7c6 f7e5 c6c7 e5g4 h5h6 g7g8q h6f6 g4f6 g1g8 f6g8 c7d8 e4e5
>Cinnamon 2.2a 64-bit(1491): isready
<Cinnamon 2.2a 64-bit(1491): readyok
>Cinnamon 2.2a 64-bit(1491): go wtime 752988 btime 1451662 movestogo 34
<Cinnamon 2.2a 64-bit(1491): info score cp -717 depth 1 nodes 1 time 1 knps 1 pv d8d7 
<Cinnamon 2.2a 64-bit(1491): info score cp -746 depth 2 nodes 8 time 1 knps 8 pv d8d7 g8f6 d7e6 
<Cinnamon 2.2a 64-bit(1491): info score cp -764 depth 3 nodes 20 time 1 knps 20 pv d8d7 g8f6 d7e6 c5c6 
<Cinnamon 2.2a 64-bit(1491): info score cp -775 depth 4 nodes 50 time 1 knps 50 pv d8d7 g8f6 d7e6 c5c6 e6f7 
<Cinnamon 2.2a 64-bit(1491): info score cp -941 depth 5 nodes 51 time 1 knps 51 pv d8d7 g8f6 d7e6 c5c6 e6f7 c6c7 
<Cinnamon 2.2a 64-bit(1491): info score cp -787 depth 6 nodes 282 time 1 knps 282 pv d8d7 g8f6 d7e6 c5c6 e6f7 f6e4 f7e8 
<Cinnamon 2.2a 64-bit(1491): info score cp -1633 depth 7 nodes 181 time 2 knps 90 pv d8d7 g8f6 d7e6 c5c6 e6f7 c6c7 f7g7 c7c8 
<Cinnamon 2.2a 64-bit(1491): info score cp -1633 depth 8 nodes 646 time 2 knps 323 pv d8d7 g8f6 d7e6 c5c6 e6f7 c6c7 f7g7 c7c8 g7f7 
<Cinnamon 2.2a 64-bit(1491): info score cp -1719 depth 9 nodes 1002 time 4 knps 250 pv d8d7 g8f6 d7e6 c5c6 e6f7 c6c7 f7g7 c7c8 g7f7 c8e8 f7g7 
<Cinnamon 2.2a 64-bit(1491): info score cp -1719 depth 10 nodes 2691 time 7 knps 384 pv d8d7 g8f6 d7e6 c5c6 e6f7 c6c7 f7g7 c7c8 g7f7 c8e8 f7g7 e8b5 g7g6 
<Cinnamon 2.2a 64-bit(1491): info score cp -1779 depth 11 nodes 8954 time 18 knps 497 pv d8d7 g8f6 d7c7 f6d5 c7d8 e5e6 d8c8 e6e7 c8d7 f4f5 d7c6 e7e8 c6b7 e8d7 b7b8 
<Cinnamon 2.2a 64-bit(1491): info score cp -1820 depth 12 nodes 7376 time 26 knps 283 pv d8d7 g8f6 d7c7 f6d5 c7d8 e5e6 d8c8 c5c6 c8d8 c6c7 d8c8 e6e7 c8b7 e7e8 b7a7 
<Cinnamon 2.2a 64-bit(1491): info score cp -1810 depth 13 nodes 26795 time 55 knps 487 pv d8d7 g8f6 d7c7 f6d5 c7d8 e5e6 d8c8 f4g4 c8d8 c5c6 d8e8 c6c7 e8f8 c7c8 f8g7 e6e7 
<Cinnamon 2.2a 64-bit(1491): info score cp -1845 depth 14 nodes 43597 time 98 knps 444 pv d8d7 g8f6 d7c7 f4f5 c7d8 e5e6 d8e7 f6g8 e7f8 e6e7 f8f7 c5c6 f7g7 e7e8 g7h7 c6c7 h7h8 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 15 nodes 4455 time 103 knps 43 pv d8d7 g8f6 d7c7 f6d5 c7d8 e5e6 d8c8 c5c6 c8d8 f4f5 d8e8 c6c7 e8f8 f5g6 f8e8 c7c8 e8f8 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 16 nodes 811 time 104 knps 7 pv d8d7 g8f6 d7c7 f6d5 c7d8 e5e6 d8c8 f4g4 c8d8 c5c6 d8e8 g4f5 e8f8 c6c7 f8g8 f5g6 g8f8 c7c8 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 17 nodes 7484 time 113 knps 66 pv d8d7 g8f6 d7e7 c5c6 e7d8 f6d5 d8c8 f4f5 c8d8 e5e6 d8e8 c6c7 e8f8 f5f6 f8g8 f6g6 g8f8 c7c8 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 18 nodes 1438 time 114 knps 12 pv d8d7 g8f6 d7e7 c5c6 e7d8 f6d5 d8c8 f4f5 c8d8 e5e6 d8e8 c6c7 e8f8 c7c8 f8g7 d5f6 g7h6 c8h8 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 19 nodes 9365 time 128 knps 73 pv d8d7 g8f6 d7e7 f4f5 e7f7 c5c6 f7f8 f5e4 f8e7 c6c7 e7f8 c7c8 f8g7 e4f4 g7f7 c8c7 f7e6 c7d7 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 20 nodes 3905 time 133 knps 29 pv d8d7 g8f6 d7e7 c5c6 e7d8 f6d5 d8c8 e5e6 c8d8 f4e3 d8c8 e6e7 c8b8 e7e8 b8a7 e8e7 a7a6 e7b7 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 21 nodes 43231 time 183 knps 236 pv d8d7 g8f6 d7e7 c5c6 e7d8 f6d5 d8c8 e5e6 c8d8 f4e3 d8c8 e6e7 c8b8 e7e8 b8a7 e8e7 a7a6 e7b7 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 22 nodes 1234034 time 2352 knps 524 pv d8d7 g8f6 d7e7 c5c6 e7d8 f6d5 d8c8 e5e6 c8d8 f4e3 d8c8 e6e7 c8b8 e7e8 b8a7 e8e7 a7a6 e7b7 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 23 nodes 204184 time 2633 knps 77 pv d8d7 f4f5 d7d8 e5e6 d8c8 f5e5 c8b8 g8f6 b8a8 e6e7 a8b7 c5c6 b7b8 e7e8 b8a7 e8f7 a7b8 f7b7 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 24 nodes 3145556 time 7173 knps 438 pv d8d7 g8f6 d7e7 f6d5 e7e6 d5b6 e6e7 c5c6 e7e6 c6c7 e6f7 c7c8 f7g6 c8g8 g6h6 b6c8 h6h5 g8g5 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 25 nodes 5892899 time 15628 knps 377 pv d8d7 f4f5 d7c8 g8f6 c8d8 e5e6 d8c7 e6e7 c7c6 e7e8 c6c7 f6d5 c7b7 d5e7 b7a7 e7c6 a7a6 e8c8 
<Cinnamon 2.2a 64-bit(1491): info score mate 1 depth 26 nodes 7927031 time 27718 knps 285 pv d8c7 g8f6 c7c6 e5e6 c6c7 f6g8 c7b7 e6e7 b7a6 e7e8 a6a7 g8f6 a7a6 e8a8 
<Cinnamon 2.2a 64-bit(1491): bestmove d8c7

Looks like an overflow of some sort.

butterfly bug

Hello,version 0.3.3 linux does not want to launch.
Capture d’écran du 2021-04-18 11-37-34

I am under manjaro gnome
and I use pychess.
I also noticed that the butterfly 0.5 and 0.6 versions freeze in the middle of the game.

elo force

Good morning,
in the next version to come, would it be possible to put a force setting ?

old version of cinnamon

can you compile other old version of cinnamon?

because the first version 1.1 is 1900elo, which is very strong.

Gaviota TB support broken

Cinnamon cannot find my Gaviota TBs either in console or when run under Cute Chess GUI (2018-01-18 dev build)

0.032: < id name Cinnamon 2.1
0.032: < id author Giuseppe Cannella
0.032: < option name Hash type spin default 64 min 1 max 1000
0.032: < option name Clear Hash type button
0.032: < option name Nullmove type check default true
0.032: < option name Book File type string default cinnamon.bin
0.032: < option name OwnBook type check default false
0.032: < option name Ponder type check default false
0.032: < option name Threads type spin default 1 min 1 max 64
0.032: < option name GaviotaTbPath type string default <empty>
0.032: < option name GaviotaTbCache type spin default 32 min 1 max 1024
0.032: < option name GaviotaTbScheme type combo default cp4 var none var cp1 var cp2 var cp3 var cp4
0.032: < option name TB Pieces installed type combo default 3 var none var 3 var 4 var 5
0.032: < option name TB Restart type button
0.032: < option name PerftThreads type spin default 1 min 1 max 64
0.032: < option name PerftHashSize type spin default 0 min 0 max 100000
0.032: < option name PerftDumpFile type string
0.032: < uciok
0.032: > setoption name Book File value cinnamon.bin
0.032: > setoption name GaviotaTbPath value e:\gaviota
0.032: < cinnamon.bin not found
0.032: > setoption name GaviotaTbScheme value cp4
0.032: < file not found e:\gaviota

I have several engines set up to use Gaviota TBs which I have in e:\gaviota and they have no such problem. For example, here's output from Gaviota 1.0 when run on my mate-in-12 KRK test position:

<Gaviota 1.0 64-bit(1537): id name Gaviota 1.0 64-bit
<Gaviota 1.0 64-bit(1537): id author Miguel A. Ballicora
<Gaviota 1.0 64-bit(1537): uciok
>Gaviota 1.0 64-bit(1537): setoption name Book file 1 value gavibook-small.bin
>Gaviota 1.0 64-bit(1537): setoption name Book file 2
>Gaviota 1.0 64-bit(1537): setoption name Book file 3
>Gaviota 1.0 64-bit(1537): setoption name Book file 4
>Gaviota 1.0 64-bit(1537): setoption name Book file 5
>Gaviota 1.0 64-bit(1537): setoption name Book use value false
>Gaviota 1.0 64-bit(1537): setoption name Consider lag value true
>Gaviota 1.0 64-bit(1537): setoption name Cores value 1
>Gaviota 1.0 64-bit(1537): setoption name Current move info value true
>Gaviota 1.0 64-bit(1537): setoption name Easy moves allowed value true
>Gaviota 1.0 64-bit(1537): setoption name GaviotaTbCache value 32
>Gaviota 1.0 64-bit(1537): setoption name GaviotaTbPath value e:\gaviota
>Gaviota 1.0 64-bit(1537): setoption name GaviotaTbScheme value cp4
>Gaviota 1.0 64-bit(1537): setoption name Hash value 512
>Gaviota 1.0 64-bit(1537): setoption name Log value false
>Gaviota 1.0 64-bit(1537): setoption name Log Path value logs
>Gaviota 1.0 64-bit(1537): setoption name Log files (max) value 100
>Gaviota 1.0 64-bit(1537): setoption name MultiPV value 1
>Gaviota 1.0 64-bit(1537): setoption name Mute_plies value 8
>Gaviota 1.0 64-bit(1537): setoption name Nullmove value true
>Gaviota 1.0 64-bit(1537): setoption name OwnBook value false
>Gaviota 1.0 64-bit(1537): setoption name SMP depth (min) value 4
>Gaviota 1.0 64-bit(1537): setoption name SMP split (max) all value 16
>Gaviota 1.0 64-bit(1537): setoption name SMP split (max) cut value 2
>Gaviota 1.0 64-bit(1537): setoption name SMP split (max) pv value 4
>Gaviota 1.0 64-bit(1537): setoption name SMP width (min) value 1
>Gaviota 1.0 64-bit(1537): setoption name SMP width (min) all value 1
>Gaviota 1.0 64-bit(1537): setoption name SMP width (min) cut value 2
>Gaviota 1.0 64-bit(1537): setoption name SMP width (min) pv value 1
>Gaviota 1.0 64-bit(1537): setoption name TB Endgame value Gaviota
>Gaviota 1.0 64-bit(1537): setoption name TB long output value false
>Gaviota 1.0 64-bit(1537): setoption name TB pouncing mode value true
>Gaviota 1.0 64-bit(1537): setoption name TB probing hard depth value 5
>Gaviota 1.0 64-bit(1537): setoption name TB probing soft depth value 2
>Gaviota 1.0 64-bit(1537): setoption name Terse_plies value 14
>Gaviota 1.0 64-bit(1537): isready
<Gaviota 1.0 64-bit(1537): info string SMP width (min): <Option not recognized or value out of range>
<Gaviota 1.0 64-bit(1537): readyok
>Gaviota 1.0 64-bit(1537): ucinewgame
>Gaviota 1.0 64-bit(1537): setoption name Ponder value false
>Gaviota 1.0 64-bit(1537): position fen 7R/5K2/8/5k2/8/8/8/8 w - - 0 1
>Gaviota 1.0 64-bit(1537): isready
<Gaviota 1.0 64-bit(1537): readyok
>Gaviota 1.0 64-bit(1537): go wtime 120000 btime 120000 movestogo 40
<Gaviota 1.0 64-bit(1537): info hashfull 0
<Gaviota 1.0 64-bit(1537): info depth 1 score mate 12 time 0 nodes 19 nps 0 pv h8e8 
<Gaviota 1.0 64-bit(1537): info tbhits 21
<Gaviota 1.0 64-bit(1537): info string +Mate_12 
<Gaviota 1.0 64-bit(1537): info hashfull 0
<Gaviota 1.0 64-bit(1537): info depth 2 score mate 12 time 0 nodes 38 nps 0 pv h8e8 
<Gaviota 1.0 64-bit(1537): info tbhits 40
<Gaviota 1.0 64-bit(1537): info string +Mate_12 
<Gaviota 1.0 64-bit(1537): bestmove h8e8

The previous version, v2.0, does not complain about not finding Gaviota TBs; nevertheless it's evident that it doesn't use them either, because in the following KPK test position it fails to find the only move to draw -- 1.f4!

8/8/8/5p2/8/8/5Pk1/4K3 w - - 0 1

Compilation error on Linux "/usr/bin/ld: cannot find -lpthread"

Hello!

I try to compile on Linux the current code of the develop branch. I get this error:

[roland@localhost src (develop)]$ LC_ALL=C make cinnamon64-modern    
make ARC=" -DHAS_POPCNT -mpopcnt -msse3 -DHAS_BSF " cinnamon64-generic
make[1]: Entering directory '/home/roland/Documents/echecs/sources/cinnamon/220727/src'
make -j ARC="-DHAS_POPCNT -mpopcnt -msse3 -DHAS_BSF  -m64" build
make[2]: Entering directory '/home/roland/Documents/echecs/sources/cinnamon/220727/src'
make EXE="cinnamon" CFLAGS=" -std=c++11 -Wall -fno-stack-protector -fno-rtti -fno-exceptions -fomit-frame-pointer -O3 -Wpedantic -W -DNDEBUG -fsigned-char -funroll-loops " all
make[3]: Entering directory '/home/roland/Documents/echecs/sources/cinnamon/220727/src'
g++ -DHAS_POPCNT -mpopcnt -msse3 -DHAS_BSF  -m64 -std=c++11 -Wall -fno-stack-protector -fno-rtti -fno-exceptions -fomit-frame-pointer -O3 -Wpedantic -W -DNDEBUG -fsigned-char -funroll-loops  -o cinnamon main.o test.o ChessBoard.o board.o GenMoves.o WrapperCinnamon.o Bitboard.o Timer.o Eval.o IterativeDeeping.o Perft.o PerftThread.o Search.o SearchManager.o Hash.o Uci.o GTB.o SYZYGY.o tbprobe.o Lzma86Dec.o LzFind.o Lzma86Enc.o Alloc.o LzmaDec.o Bra86.o LzmaEnc.o wrap.o gtb-dec.o gtb-att.o sysport.o gtb-probe.o -s -Wl,--whole-archive -static -lpthread -Wl,--no-whole-archive
/usr/bin/ld: cannot find -lpthread
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:112: all] Error 1
make[3]: Leaving directory '/home/roland/Documents/echecs/sources/cinnamon/220727/src'
make[2]: *** [Makefile:72: build] Error 2
make[2]: Leaving directory '/home/roland/Documents/echecs/sources/cinnamon/220727/src'
make[1]: *** [Makefile:97: cinnamon64-generic] Error 2
make[1]: Leaving directory '/home/roland/Documents/echecs/sources/cinnamon/220727/src'
make: *** [Makefile:100: cinnamon64-modern] Error 2
[roland@localhost src (develop)]$ 

is it possible to run it on nodejs

Hi, is it possible to import the js version on nodejs? If yes, is there any documentation I could use?

What I tried is the following:

const cinnamon = require('./cinnamon_2.4')
cinnamonCommand = cinnamon.cwrap('command', 'string', ['string', 'string'])
cinnamonCommand("setMaxTimeMillsec", "1000")

and I get as error:

  var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_I
16:34:53 web.1   |  >  S_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path")
16:34:53 web.1   |  >  .dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(
16:34:53 web.1   |  >  process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(
16:34:53 web.1   |  >  f){var data=tryParseAsDataURI(f);if(data){return intArrayToString(data)}return read(f)}}readBinary=function readBinary(f){var data;data=tryParseAsDataURI(f);if(data){return data}if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}i
16:34:53 web.1   |  >  f(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}
16:34:53 web.1   |  >  else{scriptDirectory=""}{read_=function(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}
16:34:53 web.1   |  >  }readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console
16:34:53 web.1   |  >  );for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noE
16:34:53 web.1   |  >  xitRuntime"])noExitRuntime=Module["noExitRuntime"];var WebAssembly={Memory:function(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536)},Module:function(binary){},Instance:function(module,info){this.exports=(
16:34:53 web.1   |  TypeError: Cannot read properties of undefined (reading 'K')
16:34:53 web.1   |      at Module.stackSave (/Users/emanuele/personal/chat-vs-stockfish-backend/cinnamon_2.4.js:27:82799)
16:34:53 web.1   |      at ccall (/Users/emanuele/personal/chat-vs-stockfish-backend/cinnamon_2.4.js:27:1160)
16:34:53 web.1   |      at /Users/emanuele/personal/chat-vs-stockfish-backend/cinnamon_2.4.js:27:1587
16:34:53 web.1   |      at Object.<anonymous> (/Users/emanuele/personal/chat-vs-stockfish-backend/index.js:11:1)
16:34:53 web.1   |      at Module._compile (node:internal/modules/cjs/loader:1101:14)
16:34:53 web.1   |      at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
16:34:53 web.1   |      at Module.load (node:internal/modules/cjs/loader:981:32)
16:34:53 web.1   |      at Function.Module._load (node:internal/modules/cjs/loader:822:12)
16:34:53 web.1   |      at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
16:34:53 web.1   |      at node:internal/main/run_main_module:17:47

if, instead, I just use:

const cinnamon = require('./cinnamon_2.4')
const cinnamonCommand = cinnamon.cwrap('command', 'string', ['string', 'string'])

then no error:

Cinnamon 2.4 UCI by Giuseppe Cannella
cinnamon_2.4.js:27
version compiled May 22 2021 with emscripten - Clang 12.0.0 (/startdir/llvm-project 52e240a0721e4120a7143f6f5bab4760d28d48e8)
cinnamon_2.4.js:27
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
cinnamon_2.4.js:27

Thank you

can not compile v2.5 on Linux

this is what i tried (your README is not fully clear to me) :

roelof@roelof-HP-Elite-x2-1012-G2:~/Compiled/Cinnamon-2.5/src$ cmake
Usage

  cmake [options] <path-to-source>
  cmake [options] <path-to-existing-build>
  cmake [options] -S <path-to-source> -B <path-to-build>

Specify a source directory to (re-)generate a build system for it in the
current working directory.  Specify an existing build directory to
re-generate its build system.

Run 'cmake --help' for more information.

roelof@roelof-HP-Elite-x2-1012-G2:~/Compiled/Cinnamon-2.5/src$ cmake -DCMAKE_BUILD_TYPE=Debug
CMake Warning:
  No source or binary directory provided.  Both will be assumed to be the
  same as the current working directory, but note that this warning will
  become a fatal error in future CMake releases.


-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/roelof/Compiled/Cinnamon-2.5/src
roelof@roelof-HP-Elite-x2-1012-G2:~/Compiled/Cinnamon-2.5/src$ make cinnamon64-BMI2
make: *** No rule to make target 'cinnamon64-BMI2'.  Stop.
roelof@roelof-HP-Elite-x2-1012-G2:~/Compiled/Cinnamon-2.5/src$ make
[  3%] Building CXX object CMakeFiles/cinnamon_debug.dir/namespaces/board.cpp.o
[  6%] Building CXX object CMakeFiles/cinnamon_debug.dir/perft/Perft.cpp.o
[  9%] Building CXX object CMakeFiles/cinnamon_debug.dir/db/syzygy/SYZYGY.cpp.o
[ 12%] Building C object CMakeFiles/cinnamon_debug.dir/db/syzygy/tbprobe.c.o
[ 15%] Building CXX object CMakeFiles/cinnamon_debug.dir/db/gaviota/GTB.cpp.o
[ 18%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/compression/lzma/Alloc.c.o
[ 21%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/compression/lzma/Bra86.c.o
[ 25%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/compression/lzma/LzFind.c.o
[ 28%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/compression/lzma/Lzma86Dec.c.o
[ 31%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/compression/lzma/Lzma86Enc.c.o
[ 34%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/compression/lzma/LzmaDec.c.o
[ 37%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/compression/lzma/LzmaEnc.c.o
[ 40%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/compression/wrap.c.o
[ 43%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/sysport/sysport.c.o
[ 46%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/gtb-att.c.o
[ 50%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/gtb-dec.c.o
[ 53%] Building C object CMakeFiles/cinnamon_debug.dir/db/gaviota/gtb/gtb-probe.c.o
[ 56%] Building CXX object CMakeFiles/cinnamon_debug.dir/perft/PerftThread.cpp.o
[ 59%] Building CXX object CMakeFiles/cinnamon_debug.dir/test/test.cpp.o
[ 62%] Building CXX object CMakeFiles/cinnamon_debug.dir/util/Bitboard.cpp.o
[ 65%] Building CXX object CMakeFiles/cinnamon_debug.dir/util/IniFile.cpp.o
[ 68%] Building CXX object CMakeFiles/cinnamon_debug.dir/util/Timer.cpp.o
[ 71%] Building CXX object CMakeFiles/cinnamon_debug.dir/ChessBoard.cpp.o
[ 75%] Building CXX object CMakeFiles/cinnamon_debug.dir/Eval.cpp.o
[ 78%] Building CXX object CMakeFiles/cinnamon_debug.dir/GenMoves.cpp.o
[ 81%] Building CXX object CMakeFiles/cinnamon_debug.dir/Hash.cpp.o
[ 84%] Building CXX object CMakeFiles/cinnamon_debug.dir/IterativeDeeping.cpp.o
[ 87%] Building CXX object CMakeFiles/cinnamon_debug.dir/main.cpp.o
[ 90%] Building CXX object CMakeFiles/cinnamon_debug.dir/Search.cpp.o
[ 93%] Building CXX object CMakeFiles/cinnamon_debug.dir/SearchManager.cpp.o
[ 96%] Building CXX object CMakeFiles/cinnamon_debug.dir/Uci.cpp.o
make[2]: *** No rule to make target '/usr/lib/libgtest.a', needed by 'cinnamon_debug'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/cinnamon_debug.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
roelof@roelof-HP-Elite-x2-1012-G2:~/Compiled/Cinnamon-2.5/src$ make cinnamon64-modern-AMD
make: *** No rule to make target 'cinnamon64-modern-AMD'.  Stop.

can you create Linux binaries also ?
that would also be great !

  • i'm on Xubuntu 21.10 -

feature request: "go searchmoves" support

Hi,
our project "picochess" allows the user to get an alternative move.
For this i send the remaining moves to the engine.
But for Cinnamon that doesnt work => i get the same move again and again.

Can y implement this part of missing uci?
For a working example see stockfish (and many more)

Jürgen

compile cinnamon-js fails : Permission denied

hi, i successfilly compiled Cinnamon v2.4 on Xubuntu 20.04, but your JavaScript version does NOT compile .. what is wrong ? I'm not a beginner at Linux, i can provide more info eg. installed modules / versions .. at this point i have no clue :

roelof@roelof-SATELLITE-C855-226:~/Downloads/tmp3/Cinnamon/src$ make cinnamon-js
emcc -std=c++11 -w -DNDEBUG -DJS_MODE -DDLOG_LEVEL=_FATAL util/Bitboard.cpp -fsigned-char namespaces/board.cpp ChessBoard.cpp Eval.cpp Hash.cpp IterativeDeeping.cpp GenMoves.cpp js/main.cpp \
Search.cpp SearchManager.cpp perft/Perft.cpp util/Timer.cpp perft/PerftThread.cpp \
-s WASM=0 -s EXPORTED_FUNCTIONS="['_main','_perft','_command','_isvalid']" -s EXTRA_EXPORTED_RUNTIME_METHODS='["cwrap"]' -s NO_EXIT_RUNTIME=1 -o cinnamon.js -O3 --memory-init-file 0
/bin/sh: 1: emcc: Permission denied
make: *** [Makefile:80: cinnamon-js] Error 127

Cinnamon 2.1 sacs it’s queen for nothing on Picochess.

Hi Giuseppe,

I’ve been trying out your new version of Cinnamon 2.1 in Picochess.
It was paired agains Tasc 2.2, Cinnamon has the Black pieces in a 90 seconds per move game.

This is the move sequence:

1.e4 c5 2.Nf3 e6 3.d4 cxd4 4.c3 dxc3 5.Nxc3 Nc6 6.Bc4 Qc7 7.Qe2 Nf6 8.h3 Bd6 9.Nb5 Bb4+ 10.Bd2 Bxd2+ 11.Qxd2 Qb6 12.Nd6+ Ke7 13.Rd1 Qxf2+ ?? 14.Kxf2 Nxe4+ 15 Nxe4

I have replayed the game several times at different time intervals, but Cinnamon gives it’s queen away every time at move 13?

Here’s the FEN before Blacks bad move:

r1b4r/pp1pkppp/1qnNpn2/8/2B1P3/5N1P/PP1Q1PP1/3RK2R b K - 4 13

I was using your Raspberry Pi Binary, I also compiled it myself with the same results.

Thanks,

Alan Cooper.

Time forfeits

Hi Giuseppe,

I have just finished a 416 game gauntlet with version 2.4 and 54 times Cinnamon exceeded time. That is exceptional with the 2 min + 1 s time control I use. The games were played under Arena, a GUI notorious of time forfeits but still...
I have a 64-bit Win 10, Intel i5-4690K CPU. I used the Intel BMI2 compile.

It's a pity because it seems that this version brings a nice improvement otherwise.

compilation on ARM fails

Hey,

I got the idea to compile Cinnamon on my Raspberry Ubuntu Mate 15-10 armv7 based.

To compile I used: "make cinnamon-generic32"

At first compilation fails as the switch "-m32" is unknown. So I removed it from Makefile section cinnamon-generic32.

Now compilation starts perfectly. However, not very long. It generates plenty of this error:

error: narrowing conversion of ‘-8’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]

and of course fails.

Maybe an idea how to get around?

Sources for libgtb.a?

I'm trying to build Cinnamon with VStudio and Im having a tough time...

One problem I am being unable to workaround I think is that libgtb.a is built with gcc and for gcc and it is not linking well using VStudio, I have some errors like:

unresolved external symbol _sprintf referenced in function _tb_init - libgtb.a(gtb-probe.o)
unresolved external symbol ___chkstk_ms referenced in function _fd_openit - libgtb.a(gtb-probe.o)

I wonder if I may compile libgtb by myself and use it to link Cinnamon.

Thanks in advance.

GaviotaTbCache UCI option causes crashes

Setting this option -- either manually, with setoption name GaviotaTbCache value 32 or via a GUI (Cute Chess) causes a crash, apparently due to an access violation, on Windows 7 x64 Pro SP1. Here's the WER report:

Version=1
EventType=APPCRASH
EventTime=131981553443724811
ReportType=2
Consent=1
UploadTime=131981553445234898
ReportIdentifier=478ca2fd-5079-11e9-a1cf-002713cab278
IntegratorReportIdentifier=478ca2fc-5079-11e9-a1cf-002713cab278
Response.type=4
Sig[0].Name=Application Name
Sig[0].Value=cinnamon_2.1_x64-INTEL.exe
Sig[1].Name=Application Version
Sig[1].Value=0.0.0.0
Sig[2].Name=Application Timestamp
Sig[2].Value=00000000
Sig[3].Name=Fault Module Name
Sig[3].Value=cinnamon_2.1_x64-INTEL.exe
Sig[4].Name=Fault Module Version
Sig[4].Value=0.0.0.0
Sig[5].Name=Fault Module Timestamp
Sig[5].Value=00000000
Sig[6].Name=Exception Code
Sig[6].Value=c0000005
Sig[7].Name=Exception Offset
Sig[7].Value=0000000000033d05
DynamicSig[1].Name=OS Version
DynamicSig[1].Value=6.1.7601.2.1.0.256.48
DynamicSig[2].Name=Locale ID
DynamicSig[2].Value=1033
DynamicSig[22].Name=Additional Information 1
DynamicSig[22].Value=0615
DynamicSig[23].Name=Additional Information 2
DynamicSig[23].Value=0615d2e5252921b836461fa76ec7cdfd
DynamicSig[24].Name=Additional Information 3
DynamicSig[24].Value=7847
DynamicSig[25].Name=Additional Information 4
DynamicSig[25].Value=78471eb7bee1e1fe46d77ab953aeca5c
UI[2]=C:\Program Files\ChessBase\Engines.x64\CCRL\a-c\cinnamon\cinnamon_2.1_x64-INTEL.exe
UI[3]=cinnamon_2.1_x64-INTEL.exe has stopped working
UI[4]=Windows can check online for a solution to the problem.
UI[5]=Check online for a solution and close the program
UI[6]=Check online for a solution later and close the program
UI[7]=Close the program
LoadedModule[0]=C:\Program Files\ChessBase\Engines.x64\CCRL\a-c\cinnamon\cinnamon_2.1_x64-INTEL.exe
LoadedModule[1]=C:\Windows\SYSTEM32\ntdll.dll
LoadedModule[2]=C:\Windows\system32\kernel32.dll
LoadedModule[3]=C:\Windows\system32\KERNELBASE.dll
LoadedModule[4]=C:\Windows\system32\msvcrt.dll
LoadedModule[5]=C:\Windows\system32\USER32.dll
LoadedModule[6]=C:\Windows\system32\GDI32.dll
LoadedModule[7]=C:\Windows\system32\LPK.dll
LoadedModule[8]=C:\Windows\system32\USP10.dll
LoadedModule[9]=C:\Windows\system32\IMM32.DLL
LoadedModule[10]=C:\Windows\system32\MSCTF.dll
FriendlyEventName=Stopped working
ConsentKey=APPCRASH
AppName=cinnamon_2.1_x64-INTEL.exe
AppPath=C:\Program Files\ChessBase\Engines.x64\CCRL\a-c\cinnamon\cinnamon_2.1_x64-INTEL.exe

According to a Cute Chess developer, setting this option via Cute Chess CLI (presumably under Linux) results in a segmentation fault: link. Although the version discussed in that thread is 2.0, same problem is present in v2.1.

Hiding this option from the GUI (e.g. by hex-editing the exec to change "option name GaviotaTbCache" to "xption name GaviotaTbCache", or suppressing the command with adapter InBetween) allows Cinnamon to run under Cute Chess. There are still several other problems, so I think it's best to create a new issue for each one separately.

Setting Hash doesn't work under Cute Chess

Setting hash size works in console , e.g. setoption name Hash value 512 makes Cinnamon use ~ 518 MB (Commit Size in Task Manager). However under Cute Chess GUI (own 2018-01-18 dev build) Cinnamon's Commit Size is only ~ 103 MB despite proper commands being exchanged.

< id name Cinnamon 2.1
< id author Giuseppe Cannella
< option name Hash type spin default 64 min 1 max 1000
< option name Clear Hash type button
< option name Nullmove type check default true
< option name Book File type string default cinnamon.bin
< option name OwnBook type check default false
< option name Ponder type check default false
< option name Threads type spin default 1 min 1 max 64
< option name GaviotaTbPath type string default <empty>
< option name GaviotaTbCache type spin default 32 min 1 max 1024
< option name GaviotaTbScheme type combo default cp4 var none var cp1 var cp2 v
< option name TB Pieces installed type combo default 3 var none var 3 var 4 var
< option name TB Restart type button
< option name PerftThreads type spin default 1 min 1 max 64
< option name PerftHashSize type spin default 0 min 0 max 100000
< option name PerftDumpFile type string
< uciok
> setoption name Book File value cinnamon.bin
> setoption name GaviotaTbPath value e:\gaviota
< cinnamon.bin not found
> setoption name GaviotaTbScheme value cp4
< file not found e:\gaviota
> setoption name Hash value 512
> setoption name Nullmove value true
> setoption name OwnBook value false
> setoption name PerftDumpFile
> setoption name PerftHashSize value 0
> setoption name PerftThreads value 1
> setoption name TB Pieces installed value 5
> setoption name Threads value 1
> isready
< Unknown command: setoption name PerftDumpFile
< readyok
> ucinewgame

The previous version, 2.0, exhibits the same behavior.

Website is Down

It looks like the website you have linked is not hosted anymore. Either taken down, expired or something I don't know. I have used your site for its bitboard calculator almost once a week for a few months, to create unit tests and other metrics for my own engine. I imagine there are more like me who would like to still have access to your site, regardless of their use case.

cinnamon rust

your version in rust has been deleted. is it abandoned ?
for your version in c++ you will continue its development ?

v2.4 change of speed and playing style !?

while testing your new Cinnamon v2.4 i discovered it easily reaches depth 17 within 30 seconds (on my basic laptop) although v2.3.4 just reaches depth 14 !? Another thing : 2.4 seems to favor 1.e3 in the starting position while 2.3.4 prefers 1.Nf3 (at first) ..

what did you change for the engine to behave like this ?
( i think 1.e3 can be a perfect move ! )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.