Gaia 4.2.2 released — now open source (GPLv3)

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

j_romang
Posts: 99
Joined: Mon May 16, 2011 2:52 am

Gaia 4.2.2 released — now open source (GPLv3)

Post by j_romang »

Hi everyone,

When I announced Gaia 4.1.0 here back in February, I said the source wasn't public yet because it needed a serious cleanup first. That's done: Gaia 4.2.2 is out, and it is the first open-source release.

Source (GPLv3): https://github.com/jromang/gaiachess
Binaries: https://github.com/jromang/gaiachess/re ... tag/v4.2.2
Networks: https://huggingface.co/jromanghf/gaiachess-networks

The repository has the full engine, the NNUE trainer and the release CI — everything needed to reproduce the exact binaries I ship.

For anyone who missed the first thread: Gaia was a French engine written in C by David Rabel and myself between 2003 and 2006. Gaia 4 is a complete rewrite in Rust — not a single line of the original code survived.

What's inside:

- Search: PVS with aspiration windows, null move pruning, LMR, singular extensions with multi-cut, RFP/FP/LMP, SEE pruning, ProbCut, IIR, several correction histories, Lazy SMP.

- Evaluation: NNUE, threat-feature architecture (12 king buckets x 768 PST inputs plus filtered threat features, ~41K inputs -> 640 -> CReLU with pairwise product -> 16 -> 32 -> 1, 8 output buckets), trained with bullet. AVX-512 / AVX2 / NEON inference paths.

- Endgame tablebases: Syzygy up to 7 men, and — for the vintage collectors — Nalimov DTM support. I am probably the only person shipping a new engine in 2026 that still reads Nalimov files, but that's what we used in 2003 and I wasn't going to leave them behind. If you threw yours away twenty years ago, they're here: https://huggingface.co/datasets/jromang ... tablebases

There is also GaiaTB, my own compressed DTM format for 3-4 men, embedded directly into the binary — exact mate distances out of the box, with nothing to configure. Which brings me to Werner: the KQ vs K game you posted in the 4.1 thread now returns "mate in 10" after 409 nodes. Thanks for catching it, that report is the reason the endgame code exists at all.

- Builds: 22 binaries per release (Windows and Linux x86-64 with PGO, ARM64, Apple Silicon). Graham, your "could you please provide an avx2/bmi2 compile" from last February is directly responsible for that matrix — these days everything from plain x86-64 up to Zen 5 gets its own build, so nobody has to open an .exe and hope. The AVX-512 variants are profiled under Intel SDE, since CI runners cannot be trusted to actually expose AVX-512.

Compared to 4.2.1 the engine itself only gained two small SPRT-validated search refinements — this release is really about the source going public.

One genuine request. The search side I'm fairly comfortable with: write it, SPRT it, keep it or throw it away. NNUE training, on the other hand, is where I mostly flail around. My current methodology is roughly: generate a few billion positions, change three hyperparameters at once because I'm impatient, wait seven hours, then stare at a loss curve pretending it tells me something. It has produced some spectacular regressions. So if you have opinions about data mixes, WDL blending, learning-rate schedules or when a generation is actually worth keeping, I'd love to hear them — the trainer is in the repo, so you can point at the exact line where I went wrong. I promise to test every suggestion with SPRT before believing it.

Thanks also to the Chess Programming Wiki, which remains an incredible resource for anyone coming back to this after two decades.

Jean-François