# Mono A UCI chess engine written in c++ ## TODO - Fix wrong perft 5 results on starting position - Fix wrong perft 5 results on fen "rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - 1 8" (expected: 89,941,194) ## Running ### Requirement - Cmake (3.24+) - C/C++ compiler that supports c 23 and c++ 23 standard (GCC 14+, Clang 18+) - ASan (sudo dnf install libasan) - UBSan (sudo dnf install libubsan) ### Building ```bash cmake -B build -S . # Run only on cmake config changes (and first time) # Or for development cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug cmake --build ./build # Build ./build/mono # Run the app ``` ### Details - [AddressSanitizer](https://github.com/google/sanitizers/wiki/AddressSanitizer) (aka ASan) - [UndefinedBehaviorSanitizer](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html) (aka UBSan)