Author: Miloslav Macůrek
Rarog 2.3.0 what's new?
The correctness-and-search release: long-standing evaluation and search bugs fixed, move ordering and in-check selectivity reworked, the parallel search rebuilt, and every published binary now profile-guided-optimized.
Strength
Measured against 2.2.0 over roughly 19,000 games against a pool of established engines:
Condition Gain over 2.2.0
1 thread, 3s+30ms +76 Elo
1 thread, 10s+100ms +78 Elo
4 threads, 10s+100ms +194 Elo
Search speed rose about 11%. The four-thread figure is larger because the parallel-search rework only applies there. No losses on time occurred in any condition tested.
Added
Parallel-search rework: threads share what they have proven about each root move, vote together on when to stop, and search deliberately decorrelated trees.
Repacked shared transposition table, restoring full entry density when using more than one thread.
Separately tunable history bonus and malus, with history coverage extended across the capture, continuation, pawn and correction tables.
Profile-guided optimisation for every published binary, and a pinned Rust toolchain so a given release can be rebuilt exactly.
Additional internal consistency checking in debug builds, and expanded regression test coverage.
Changed
Checking moves are always extended, replacing the previous conditional rule.
Static-exchange evaluation is pin-aware; its consumers were re-tuned to match the more accurate result.
Time management compares the current score against the average of previous iterations when deciding to spend longer on a falling evaluation.
Search parameters now have a single source of truth, removing a class of configuration drift.
Evaluation and move-ordering hot paths were made cheaper.
Build tooling: CPU tuning is now independent of the instruction-set choice. cargo xtask build --arch {x86-64|avx2|pext|arm64} selects the instruction set, and the new --native flag additionally tunes for the building machine, so the two combine freely.
A plain cargo build --release no longer applies target-cpu=native. Native tuning is opt-in via --native, and such binaries are marked -native and are not portable.
Fixed
Aspiration-window re-search could fail to terminate on sudden mate scores.
A capture cutoff could teach the evaluation corrections to expect tactics.
Several evaluation terms had incorrect side-to-move or scaling semantics.
Multi-threaded diagnostic output was unreliable.
Asking for a native build on a CPU without BMI2/PEXT produced a binary that executed an unsupported instruction. It is now checked and refused up front.
Removed
The 32-bit x86 build path; the engine is 64-bit only.
Comments
Post a Comment