Revolution
A free and open-source UCI chess engine combining classical algorithms with neural network innovations.
Explore Revolution Documentation »
Based on Stockfish by the Stockfish developers (see AUTHORS file)
Revolution modifications by Jorge Ruiz Centelles
Overview
Revolution is a free, open-source UCI chess engine implementing cutting-edge search algorithms combined with neural network evaluation. Derived from fundamental chess programming principles, Revolution analyzes positions through parallelized alpha-beta search enhanced with null-move pruning and late move reductions.
As a UCI-compliant engine, Revolution operates through standard chess interfaces without an integrated graphical interface. Users must employ compatible chess GUIs (Arena, Scid vs PC, etc.) for board visualization and move input. Consult your GUI documentation for implementation details.
Technical Architecture
Revolution’s architecture features:
- Hybrid evaluation system combining classical heuristics with NNUE networks
- SMP parallelization with YBWC (Young Brothers Wait Concept)
- Advanced pruning techniques (Reverse Futility Pruning, Late Move Pruning)
- Efficient move ordering with history heuristics and killer moves
- Tuned search parameters through reinforcement learning
Files
The distribution includes:
README.md
(this documentation)COPYING.txt
(GNU GPLv3 license)AUTHORS
(contributor acknowledgments)src/
(source code with platform-specific Makefiles)- Neural network weights (
revolution.nnue
)
Contributing
Development Guidelines
Contributions must adhere to:
- Clean, documented C++17 implementations
- Benchmark validation through perft testing
- Elo measurement via OpenBench
- Compatibility with UCI protocol standard
Testing Infrastructure
Improvements require extensive testing:
- Install the Revolution Test Worker
- Participate in active tests on Revolution Test Suite
- Verify ELO gains through SPRT validation
Community
Technical discussions occur primarily through:
Compilation
Compile from source using included Makefiles:
cd src
make -j ARCH=x86-64-modern
Supported architectures:
x86-64
: Modern x86 processorsarmv8
: ARMv8+ architecturesppc64
: PowerPC systems
Full compilation guides available in documentation.
License
Revolution is distributed under the GNU General Public License v3 (GPLv3). It integrates source code from:
- Stockfish
Because these projects are GPLv3, any distribution of Revolution must also comply with GPLv3. When redistributing, you must:
- Include the original license text (
COPYING.txt
) - Provide complete corresponding source code
- Disclose all modifications under GPLv3
Acknowledgements
Revolution also benefits from:
- Neural networks trained on Lichess open database
- Search techniques from CCC testing community
- Positional analysis concepts from CPW research
- The experience file extension has been changed to .exp and the documentation has been updated to reflect the new default name, revolution.exp.
- Experience loading and saving routines now use binary streams to improve performance and avoid unnecessary reprocessing.
Testing
- ✅
g++ -std=c++17 -I src -c src/experience.cpp -o /tmp/experience.o
Simplified LMR extensions by dropping the redundant depth comparison, basing deeper searches solely on move quality
Removed per-depth threshold variables in favor of fixed reduction limits for skipped LMR searches
Testing
✅ cd src && make -j2 build ARCH=x86-64-sse41-popcnt
✅ bash tests/perft.sh ./src/revolution
Download revolution 1.0 dev 270825
Results of Revolution vs Revolution1 (10+0.1, 1t, 32MB, UHO_2024_8mvs_+085_+094.pgn):
Elo: 30.64 +/- 7.21, nElo: 56.04 +/- 13.12
LOS: 100.00 %, DrawRatio: 47.88 %, PairsRatio: 1.90
Games: 2694, Wins: 783, Losses: 546, Draws: 1365, Points: 1465.5 (54.40 %)
Ptnml(0-2): [14, 228, 645, 427, 33], WL/DD Ratio: 0.82
LLR: 2.95 (100.2%) (-2.94, 2.94) [0.00, 2.50]
--------------------------------------------------
SPRT ([0.00, 2.50]) completed - H1 was accepted
Finished match