Mantissa is a young UCI-compatible chess engine written as a side project to learn both chess programming and also rust. Because of this, there are many things to improve both in terms of code organization and in terms of performance and correctness for Mantissa, but there are a lot of ideas packed in already.
Mantissa is named after the "significand" (or mantissa) in the floating point spec (and math in general). Ironically there are next-to-no floats in Mantissa's code.
Mantissa is hosted on lichess here: https://lichess.org/@/AKS-Mantissa
She accepts challenges from humans and bots in any time format except ultrabullet (bots aren't allowed to play ultra-bullet on lichess) or correspondence/unlimited (a few bad apples have clogged up Mantissa's match queue before by leaving once they were in a bad spot). Mantissa accepts both casual and rated challenges.
As of this writing, Mantissa is currently between 2300 and 2550 lichess Elo in most formats and is slowly getting stronger. Lichess Elo does not seem to have a straightforward conversion into CCRL/CEGT/etc ratings, however, due to several reasons, most notably the wall of Stockfish Clones around 2600 Elo.
All ratings listed her are for the 1CPU version.
Version | CCRL Blitz (40/4) | CCRL 40/40 | CCRL 40/40 (4CPU) | CEGT 40/4 | CEGT 40/20 | SPCC |
---|---|---|---|---|---|---|
3.7.2 | 3281 | 3238 | ~3310 | ~3186 | 3193 | 3283 |
3.3.0 | 3115 | 3093 | 3180 | 2993 | 3044 | N/a |
3.0.0 | 2999 | 2996 | N/a | 2877 | N/a | N/a |
2.5.0 | N/a | N/a | N/a | N/a | N/a | N/a |
2.1.x | 2685 | N/a | N/a | N/a | N/a | N/a |
Mantissa is UCI-compatible and can be used with most UCI GUIs (e.g. cutechess, arena). She supports both clock+inc time and x moves in y time formats.
In terms of search, Mantissa uses some form of the following ideas:
In order to build Mantissa, you'll need rust nightly > 1.63.0 installed. From there, you can use whatever build method is easiest for you. Typically, this is navigating to the directory of the project (in this case, Mantissa), and running RUSTFLAGS='-C target-cpu=native' cargo build --release
.
I am not very good at chess and am still relatively new to chess programming, so many of the ideas implemented in Mantissa have been very much informed by or taken from those who have come before. I have to give a big thanks to the Chess Programming Wiki in general, which is an excellent jumping-off point for new chess programmers. While I have looked at a lot of engines recently, there are a few I will directly credit for having been particularly influential of my understanding of chess programming:
tissa-trainer
, which is the program I wrote to be able to train Mantissa nets, is basically a port of zahak-trainer
to rust with some slight modifications. He also helped explain a lot of the resources and information needed to understand the process. tissa-trainer
has since been changed ot train a different type of net, but still has many roots there.