June 16, 2025
tried to make the TT faster but failed
bruhhhh its too slow it seems so the old version is stronger, cause of mobility eval slowing everything down :(
added TT to qsearh
removed threading for mobility since it slows it down, not speed up suspecting overhead in starting the threads, etc
minor optimizations
yay removed the makeNullMove by gettting chess.hpp to expose both
template <MoveGenType mt = MoveGenType::ALL>
void static legalmoves(Movelist &movelist, const Board &board, int pieces)
template <Color::underlying c, MoveGenType mt>
static void legalmoves(Movelist &movelist, const Board &board, int pieces);
publicly so i can use chess::Color::BLACK instead of flipping board state using null moves, also added some minor optimizaions
adding threads
fixed some bugs in mobility and added some profiling to see how to optimize this more, thinking about multithreading this function since its stateless and can easily be made thread-safe
working on adding mobility eval, its not really working rn cause i need to modify the chess.hpp library to make this reasonably fast, since it generates the bitboards of moves for each piece but doesn't make them accessible to the public.
refactoring negamax, making code simpler
removed nmp and readded test (nmp caused -200 Elo)
added null move pruning (idk if it helps yet)
meh refactored a lot
Added butterfly boards/history heuristic
added some new testing
fixed sm bugs and stuff with time management/iterative
True iterative deepening added (searches until time runs out) Before it was just upto depth 5, not good in situation where you have lots of time and want to use it
Adding time management
ADDED ITERATIVE DEEPENING, MASSIVE SPEED GAIN (5x faster from 1550ms to 300 ms)
still unit tests for iter, mvvlva, transpo, and qsearch not here lol
workign on the transposition table
Quiescence search implemented (yay!)
We got MVV_LAA move ordering!!!, around 40%-50% speedup (700 ms down from around 1400 ms)
sprt done
no ext, king safety works !!!!
trying to add search extensions
FINALLY FIXED THE BUG
std::numeric_limits<int>::min() is one smaller than -max, which causing wraparound, fixed by adding one lol
are devlogs broken wtf
fixing material bug
finding Material bug
Optimized the program by using more const & refs in function arguments but still trying to find why its dropping so much material
Quality of life upgrades -> refactored code, added logging with spdlog, and added unit tests (only for evaluation so far tho)
Bug is in evaluate function, it is actually a piece of work
i am on the verge of an existensial crisis
Moved everything to C++ and ran a basic test, huge improvement in speed. I miss you, Python, but you're just too slow 😭.
trying to find the PHANTOM ROOK
Tryign to find why C++ SLOWS IT DOWN, while its supposed to be FASTTTT.
Finally got c++ eval working to the bare minimum, not pushed to main lichess bot yet tho
Fixed checkmate bug
SPRT tests on a new heuristic!
added UCI parsing so can be used with SPRT testing and cutechess-cli
got basic functionality
The classic Tower of Hanoi game in terminal, coded in Rust. With autosolve algorithm, see if you can beat the computer!
Quiescence search fleshed out with features reccomended by chess programming wiki [helps calculate long tactics to avoid loss of material/checkmate]
Made the basic negamax, a\b, and eval functions.
[NOTICE: ONLY TAKES 'REAL TIME' GAMES] Mostly built from scratch, except for reliancy on (a) Disservin's chess-lib (b) a Polyglot reader library and (c) magic_enum. May not always be online ... Uses Negamax with alpha/beta pruning, a material/positional eval function, quiescence search, and transposition table. NNUE eval function coming soon!
This was widely regarded as a great move by everyone.