Rose is an experimental classical chess and chess960 engine. Most notably, Rose was the first engine to utilise SIMD-accelerated attack tables.
Rose makes heavy use of SIMD; it relies on AVX512 for performance. Performance on other microarchitectures is not a focus of this project.
Rose is capable of communicating over both the Universal Chess Interface (UCI) protocol and the Chess Engine Communication Protocol (CECP/Xboard), although UCI is the preferred protocol.
The Rose project prides itself in only using original self-generated training data for its neural networks.
For official releases, please visit: https://github.com/87flowers/Rose/releases
We recommend using the AVX512 build for your operating system if you have a CPU that supports it, as this would be the fastest.
You can get a speed comparison by running bench on each downloaded executable.
Building requires Make and a C++26 compiler. Clang is the recommended compiler, and GCC support is not guaranteed.
Run the command
make
in the root directory to build a ./rose executable. The current network will be automatically downloaded.
If you are building on Windows, using MSYS2 (UCRT64) is recommended.
Rose is regularly tested to build with the mingw-w64-ucrt-x86_64-clang, mingw-w64-ucrt-x86_64-git, and mingw-w64-ucrt-x86_64-lld packages installed.
wait: Waits for the current search to complete before continuing.bench: Runs a search benchmark on a built-in list of positions, to provide a search fingerprint.perft <depth>: Counts all leaf nodes to the specified depth from the current position.moves [<move>]*: Make the specified list of moves on the current position.d: Print the current position as an ASCII board.getposition: Print the current position as a UCI command.dumpposition: Dumps internal position structure information.hashstack: Prints the current hash stack, which is used for repetition detection.xboard: Switch to CECP mode.
wait: Waits for the current search to complete before continuing.getposition: Print the current position as a UCI command.dumpposition: Dumps internal position structure information.hashstack: Prints the current hash stack, which is used for repetition detection.uci: Switch to UCI mode.
- Members of the Stockfish, Engine Programming, and Alpha-Beta discords, for being a helpful and fun community to be a part of.
- The many public available open-source chess engines.
- Authors of Yukari, for ideas, hardware, and support.
- Authors of Reckless, pawnocchio, viridithas, Stormphrax, Soul, Clockwork, and many others.
- jw1912 for bullet, used to train the NNUE networks.
- The excellent {fmt} library, used in this project.
This project is licensed under the GNU Affero General Public License version 3. See the LICENSE file for more information.