A pure Rust chess engine
(pronounced "Hekseh")
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.
-
"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.
-
"Any sufficiently advanced technology is indistinguishable from magic."
-
If she weighs the same as a duck... she's made of wood. And therefore...
See CONFIGURATION.md
.
The goal of this project is to have the following features:
- 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
- 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)
Hexe is automatically tested against a minimum Rust version: 1.25.0.
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.
Hexe wrappers are currently available in the following languages:
- Swift
Hexe is licensed under either of
at your choosing.