Dog is a chess program for the ESP32 (= 240MHz dualcore cpu with 320kB RAM), it also runs on linux/windows/android/macosx.
It is multithreaded, also on the ESP32 ("lazy smp" - note that due to limited RAM, the ESP32 only has a transposition table of 48 kB)!
The ESP32 code uses "ESP IDF" (no Arduino code) with FreeRTOS for threading.
As Dog "speaks" the UCI protocol, it can run under xboard (for the ESP32 you need to use the included socat-wrapper (in app/wrapper.sh)) on Linux and Arena 3.5.1 on Windows and Linux.
Comparing Dog playing on an ESP32 versus on Dog my laptop (an "11th Gen Intel(R) Core(TM) i5-11400H @ 2.70GHz") (using Ordo) gives:
For a more statistical sound result it should play more games (see the 'error' column).
Also see: on lichess.
> source code: https://github.com/folkertvanheusden/Dog/
> windows binary: Dog-windows-v2.5c.zip
> Android: the program can be retrieved from Google Play (this requires Chess for Android to be installed (or an other OEX compatible board program)).
Dog plays at lichess.org as MaxtheDog.
This is a picture of the dog that triggered the development of this program. His name is Max.
Max is very strong, likes to chase cats and other dogs and is worlds' fastest eater.
This is an ESP32 running Dog. It has 3 LEDs that show if it is calculating ("thinking"), if there's an error or if it is pondering. The TTL-converter is for connecting a serial terminal to the device.
Dog can speak the UCI protocol but has a tui (text interface) as well:
The ESP32 is a better chess-player than the dog Max, but Max can run faster.
Version 0.1 only has alpha/beta with aspiration windows
Version 0.2 has null move, lmr, PSQ in evaluation, quiescence-search, tt, lazy smp and mvv-lva
Version 0.3 has improved evaluation (copy/paste from Micah with some parts removed because of RAM-space issues), IID, sibling moves, futility pruning, an improved version of the killer heuristic
Version 0.4 pondering, removed lazy-smp due to issues
Version 0.5 lazy-smp is back and other fixes
Version 0.6 performance tweak for ESP32
Version 0.7 performance tweaks, LED effects, adjustable thread count (1 or 2)
Version 0.8 timing tweaks, pondering can be switched off, bug fixes
Version 0.9 butterfly tables
Version 2.0 Syzygy endgame tablebase support and lazy-smp fixes
Version 2.1 changing the number of threads could cause a segfault
Version 2.2 updated libchess (because of compile fail in gnu-c++ 14.2), fathom and tuning-segfault-fix
Version 2.4 has all kinds of improvements. Better, faster, stronger.
Version 2.5 threading fixes/tweaks and more
Version 2.6 can connect a TTL uart to pins 16+17 for access to the TUI as well
For contact info, see this page.