Skip to content
[WIP] A pure Rust chess engine
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
hexe
hexe_bin Remove periods from help messages May 22, 2018
hexe_core Add patreon and paypal donation links Nov 6, 2018
.gitattributes Set linguist language for rs files to Rust Nov 23, 2017
.gitignore [Git] Ignore all IntelliJ-related files Mar 29, 2018
.travis.yml Use static pointers into attacks table in magics Oct 14, 2018
CONFIGURATION.md Link `len` methods docs in CONFIGURATION.md Jul 9, 2018
Cargo.toml
LICENSE-APACHE Relicense project under MIT and Apache 2.0 Oct 26, 2017
LICENSE-MIT Update MIT License for 2018 Jan 14, 2018
README.md Add patreon and paypal donation links Nov 6, 2018
appveyor.yml Use static pointers into attacks table in magics Oct 14, 2018
travis.sh

README.md

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.

You can’t perform that action at this time.