Carp, a Rust didactic chess engine
Finally satisfied with the results, so I wanted to share what I've been working on in my spare time the last few months.
Here is the repo and here a link to the lichess bot (still need to figure out proper deployment to my little home server) for anyone that wants to check it out!
This was my first Rust project so I'm sure there are many improvements to be made: any feedback is greatly appreciated, especially to make the code as "Rusty" as possible. The code is all mine, but many ideas are picked out from the works of various other people; I tried to be as explicit as possible when using others' ideas, and I cannot thank the chess programming community enough for the infinite supply of available resources.
Implementation wise, I have definitely dedicated way too much time in search optimization/move generation and way too little on a proper evaluation, so if anyone is a bit more well versed in chess engines I'd love to hear some pointers to work on that. The engine is obviously a tactical monster, but positionally leaves much to be desired. I've tested it against a few human players (up to ~1700 chess.com) and the games did not last long. Hopefully I'll be able to take it to my uni's chess club soon and have it play against a ~2000 FIDE player, which should make for a very interesting game.
Overall, this project was by far the most fun and rewarding coding project I've worked on, and I am definitely not even close to being done. I have quickly fallen in love with Rust: be it the peace of mind that, once compiled, the program would always run without random errors, or just the syntax being simply very ergonomic to me. On top of that, this sort of work is an incredibly fun way to practice some rather complex algorithmic challenges, especially regarding move generation (search is a much more well defined field, though certainly not any less interesting).
If anyone is considering working on a chess engine, I would strongly encourage you to do so: seeing become stronger and stronger is incredibly rewarding, the resources available are simply endless, and it's something you can keep on incrementally improving for as long as you want!