1 unstable release

Uses old Rust 2015

0.0.0 Feb 9, 2018

#56 in #chess-engine

MIT/Apache

46KB
787 lines

Hexe
A pure Rust chess engine


(pronounced "Hekseh")

What is Hexe?

Hexe is an open-source chess engine written in Rust. It is written primarily as a library, with a separate executable CLI frontend. This project is split into three packages (crates):

  • [ bin ] hexe_bin

    The CLI frontend for Hexe that actually executes the chess engine.

  • [ lib ] hexe (documentation)

    The chess engine itself. All code is heavily opinionated and specialized for Hexe's use cases.

  • [ lib ] hexe_core (documentation)

    The chess engine's building blocks. It can be used easily by other chess programs and engines for better code reuse and efficiency.

Why "Hexe"?

  1. "Hexe" means "witch" in German, denoting the use of magic bitboards within this project.

    "Magic bitboards" refers to a very fast perfect hash function used for indexing into a large precomputed table of bishop and rook attacks.

  2. Clarke's Third Law:

    "Any sufficiently advanced technology is indistinguishable from magic."

  3. If she weighs the same as a duck... she's made of wood. And therefore...

Configuration

See CONFIGURATION.md.

Features

The goal of this project is to have the following features:

hexe

  • UCI compatibility
  • Work stealing multi-threaded search
  • Aspiration Windows
  • Iterative Deepening
  • Killer Moves
  • Minimax with Alpha-Beta pruning
  • Null Move Heuristic
  • SIMD parallelism (see #4)
  • Transposition Tables

hexe_core

  • Bitboard and square-to-piece map chess board representations
  • Lookup tables
    • Magic bitboards without runtime initialization
    • Usually aligned to common cache line size (64 bytes)
  • Optional dependency on the Rust standard library or libc
  • SIMD parallelism (see #4)

Compatibility

Hexe is automatically tested against a minimum Rust version: 1.25.0.

Cross-Platform Compatibility

Hexe is written to be available for the main platforms that Rust compiles to. hexe and hexe_core are both automatically tested—separately—against all Tier 1 platforms. As of this writing, they are:

Platform Version Bits
macOS 10.7+, Lion+ 32/64
MinGw/MSVC Windows 7+ 32/64
Linux 2.6.18+ 32/64

hexe_core is designed to not require the Rust standard library. Because of this, it is compatible with all platforms that stable Rust compiles to.

Cross-Language Compatibility

Hexe wrappers are currently available in the following languages:

License

Hexe is licensed under either of

at your choosing.

Dependencies

~1.5MB