1 unstable release
Uses old Rust 2015
0.0.0 | Feb 9, 2018 |
---|
#56 in #chess-engine
46KB
787 lines
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"?
-
"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
- 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:
- Swift
License
Hexe is licensed under either of
at your choosing.
Dependencies
~1.5MB