Skip to content

JLErvin/purple

Repository files navigation

purple

Purple is a simple UCI-compliant chess engine and move generator written in Rust. This is a hobbyist project with the goal of learning, and documenting, the technologies that go into modern chess engines. An in-depth blog on the development of purple is available on the author's website

Installation

To use the purple binary, you can always build from source. Simply clone this repository and execute

$ cargo build --release

This will build an optimized binary in target/releases/purple.

Features

  • Board representation using bitboards
  • Compute magic numbers during application startup
  • Sliding move generation using magic numbers
  • Standalone legal-move generator
  • Move searching using alpha-beta pruning
  • Transpositon tables using Zobrist hashing
  • Quiescence search
  • Internal Iterative Deepending
  • Late Move Reduction
  • TT Move Ordering
  • MVV-LVA Move Ordering
  • Both a high-level API and binary are available in this repo
  • UCI compliance

Planned features

  • Parallel Searching
  • Null Move Pruning
  • 3-Fold Repition Detection

Usage

purple 
Joshua L Ervin
A UCI chess engine

USAGE:
    purple [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -a, --alpha-perft <depth> <fen>    run a performance test on the alpha-beta searcher
    -m, --mini-perft <depth> <fen>     run a performance test on the minimax searcher
    -p, --perft <depth> <fen>          run a performance test on the move generator

Releases

No releases published

Packages

No packages published

Languages