Awesome
<p align="center"> <a href="https://github.com/hexe-rs/Hexe/"> <img src="https://raw.githubusercontent.com/hexe-rs/Hexe/assets/Icon.png" alt="Hexe" width="250" > </a> <br> A pure <a href="https://www.rust-lang.org">Rust</a> chess engine </p><p align="center"><em>(pronounced "Hekseh")</em></p> <div align="center"> <a href="https://travis-ci.org/hexe-rs/Hexe"> <img src="https://travis-ci.org/hexe-rs/Hexe.svg?branch=master" alt="Travis Status"> </a> <a href="hhttps://ci.appveyor.com/project/nvzqz/hexe"> <img src="https://ci.appveyor.com/api/projects/status/github/hexe-rs/Hexe?svg=true" alt="AppVeyor Status"> </a> <img src="https://tokei.rs/b1/github/hexe-rs/Hexe" alt="Lines of code"> <br> <a href="https://www.patreon.com/nvzqz"> <img src="https://c5.patreon.com/external/logo/become_a_patron_button.png" alt="Become a Patron!" height="35"> </a> <a href="https://www.paypal.me/nvzqz"> <img src="https://buymecoffee.intm.org/img/button-paypal-white.png" alt="Buy me a coffee" height="35"> </a> </div>
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.