Hexe
Hexe copied to clipboard
[WIP] A pure Rust chess engine
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_binThe 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"?
-
"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...
Configuration
See CONFIGURATION.md.
Features
The goal of this project is to have the following features:
hexe
- [x] UCI compatibility
- [x] 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
- [x] Bitboard and square-to-piece map chess board representations
- [x] Lookup tables
- [x] Magic bitboards without runtime initialization
- [x] Usually aligned to common cache line size (64 bytes)
- [x] 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:
- Swift
License
Hexe is licensed under either of
at your choosing.