Skip to content

codedeliveryservice/Reckless

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Reckless – Chess Engine in Rust

Build and Test

Guided by the insights from the chess programming community, it fearlessly combines established concepts with its reckless nature, as the name suggests.

Rating

Version CCRL Blitz CCRL 40/15 Release Date
Reckless v0.7.0 3505 +/- 16 [#59] 3407 +/- 25 [#61] Aug 23, 2024
Reckless v0.6.0 3386 +/- 16 [#78] 3318 +/- 16 [#83] Mar 22, 2024
Reckless v0.5.0 3243 +/- 19 [#94] 3213 +/- 21 [#94] Feb 4, 2024
Reckless v0.4.0 2933 +/- 19 [#151] 2929 +/- 21 [#158] Dec 13, 2023
Reckless v0.3.0 2617 +/- 20 [#229] 2615 +/- 21 [#251] Nov 6, 2023
Reckless v0.2.0 2358 +/- 19 [#333] Oct 7, 2023
Reckless v0.1.0 2020 +/- 20 [#471] May 16, 2023

Getting started

Precompiled binaries

You can download precompiled builds from the GitHub Releases page.

  • x86_64-v1: Slowest, compatible with any x86-64 CPU.
  • x86_64-v2: Faster, requires support for POPCNT, SEE3, etc.
  • x86_64-v3: Even faster, requires support for AVX2, etc.
  • x86_64-v4: Fastest, requires support for AVX512.

For detailed information on the specific features needed for each level, refer to the x86-64 microarchitecture levels Wikipedia page.

Building from source

  1. Make sure you have Rust 1.79.0 or a later version installed. If not, follow the official Rust installation guide.
  2. Build the engine using one of the following methods:
# Cargo build (output: ./target/release/reckless)
cargo rustc --release -- -C target-cpu=native

# Make build (output: ./reckless)
make

Usage

Reckless is not a standalone chess program but a chess engine designed for use with UCI-compatible GUIs, such as Cute Chess or ChessBase.

Custom commands

Along with the standard UCI commands, Reckless supports additional commands for testing and debugging:

Command Description
perft <depth> Run a perft test to count the number of leaf nodes at a given depth
bench <depth> Run a benchmark on a set of positions to measure the engine's performance
eval Print the static evaluation of the current position from white's perspective

Features

Board representation

  • Bitboards with Little-Endian Rank-File Mapping
  • Magic Bitboards for sliding piece attacks
  • Copy-Make approach

Move generation

Search

  • Fail-Soft Alpha-Beta
  • Principal Variation Search
  • Quiescence Search
  • Iterative Deepening
  • Aspiration Windows
  • Lockless Transposition Table
  • Lazy SMP (Shared-Memory Parallel)

Selectivity

  • Reverse Futility Pruning
  • Null Move Pruning
  • Futility Pruning
  • Razoring Pruning
  • Late Move Pruning
  • Static Exchange Evaluation Pruning
  • ProbCut Pruning
  • Mate Distance Pruning
  • Fractional Late Move Reductions
  • Internal Iterative Reductions
  • Singular Extensions
  • Check Extensions

Evaluation

  • NNUE
  • Architecture: (768 -> 512)x2 -> 1
  • Activation Function: SCReLU (Squared Clipped Rectified Linear Unit)
  • Quantization: i16 (384, 64)
  • Trained on original data generated entirely through self-play

Time management

  • Soft and hard bounds
  • Distribution of nodes
  • Evaluation stability
  • Best move stability

Acknowledgements