About Rustic
The chess engine discussed in this book is called Rustic. It is written in the Rust programming language. The engine is an original implementation built on many well-known concepts from both computer science and chess programming.
Rustic is an open-source engine licensed under GPL v3, so anyone can download the source code, modify it, and compile it for their preferred platform or CPU. Creating derivative works is possible within the rules stated by GPL v3.
The feature set for Rustic Alpha 3.0.0 is:
-
Engine:
- Bitboard board representation
- Fancy magic bitboard move generator
- Transposition table
- UCI protocol
-
Search
- Alpha/beta search
- Quiescence search
- Check extension
- Principal variation search
-
Move ordering
- Transposition table move priority
- MVV-LVA
- Killer moves
-
Evaluation
- Material counting
- Piece-square tables
The feature list will grow longer as the engine is developed further. The book describes how each feature works and how it is implemented. Example code is taken directly from a working release. There will be enough explanation so that each feature can be rewritten in any desired programming language.
The programming language needs the right capabilities. Something like WhiteSpace is probably not the best choice. Even if your chosen language is capable of supporting a non-trivial project, it still may not be a good fit. For a chess engine like Rustic, a programming language should preferably have these features:
- 64-bit compilation, or performance will likely suffer.
- Support for 64-bit unsigned integers, or you will need to use tricks.
- High performance, if playing strength is a goal you want to pursue.
- Expressiveness, so you can implement complex ideas with little code.
- Good tooling, including an IDE and debugger.
Any suffering caused by choosing the wrong programming language will likely be self-inflicted. Choose your language wisely.