Stockfish Top Authors and Methods

Analysis of Stockfish search.cpp contributors (April 2013 to December 2025)

Overview

This report ranks the top 20 Stockfish contributors by merged commits to src/search.cpp over 12 years of development.[1][2] The analysis is based on the git commit history of the official Stockfish repository, counting only accepted pull requests that were merged into master.[1] This file contains the core alpha-beta search implementation with all pruning, reduction, extension, and move ordering logic.[2][3]

Authors are identified by their GitHub accounts.[1] Author names link to their GitHub profiles.[1] Multiple git author names are consolidated to their primary GitHub accounts (e.g., Michael Chaly commits as both "Michael Chaly" and "Vizvezdenec").[1]

Authors Ranked by Merged Commits

#Author (GitHub Account)CommitsTop Methods
1Marco Costalba268PvNode, ttMove, cutNode
2Michael Chaly176PvNode, ttMove, cutNode
3Joost VandeVondele139PvNode, improving, ttMove
4FauziAkram128PvNode, ttMove, cutNode
5Shawn Xu98PvNode, cutNode, ttMove
6VoyagerOne95PvNode, cutNode, ttMove
7Stefan Geschwentner83ttMove, PvNode, cutNode
8Daniel Monroe58cutNode, PvNode, statScore
9Stephane Nicolet53PvNode, ttMove, improving
10Guenther Demetz41ttMove, PvNode, nullMove
11Muzhen Gaming40PvNode, singular, cutNode
12bmc433PvNode, ttMove, ttHit
13Disservin30PvNode, ttMove, cutNode
14lucasart29PvNode, cutNode, ttMove
15xoto1028improving, futility, statScore
16mstembera27ttMove, PvNode, improving
17Joona Kiiski24PvNode, ttMove, cutNode
18Dubslow24PvNode, ttMove, cutNode
19Nonlinear223PvNode, cutNode, ttMove
20joergoster22ttMove, PvNode, cutNode

Method Definitions

Principal Variation Node (PV-Node, Type 1)
Part of the expected best line.[7] Searched with full window; no reductions applied.[6][11]
Hash Move / Transposition Table Move
Best move from previous search of this position.[20][21] Tried first for move ordering.[19]
Cut Node (Type 2, Fail-High Node)
Expected to fail high (beta cutoff).[7] Searched with more aggressive pruning and reductions.[11]
Improving Heuristic
Position eval increased vs 2 plies ago.[26] Reduces pruning when true; increases reductions when false.[11][26]
Singular Extensions
One move is much better than others.[17] Extended to avoid missing critical tactical lines.[17]
Null Move Pruning (NMP)
Skip a turn to prove position is good.[12] If opponent cannot gain advantage, prune subtree.[12]
Futility Pruning
Skip moves unlikely to raise alpha.[13] Based on static eval + margin being below alpha.[13]
History Heuristic / Statistical Score
Accumulated history bonus along the search path.[22] Positive values indicate favorable move sequences.[22][2]

References

Primary Sources

  1. Stockfish Chess Engine - Official GitHub Repository. https://github.com/official-stockfish/Stockfish
  2. Stockfish search.cpp - Main search implementation. https://github.com/official-stockfish/Stockfish/blob/master/src/search.cpp
  3. Chess Programming Wiki. https://www.chessprogramming.org/
  4. Fishtest - Stockfish Testing Framework. https://tests.stockfishchess.org/

Chess Programming Wiki - Search Algorithms

  1. Alpha-Beta Pruning
  2. Principal Variation Search (PVS)
  3. Node Types (PV, Cut, All)
  4. Iterative Deepening
  5. Aspiration Windows
  6. Quiescence Search

Chess Programming Wiki - Pruning and Reductions

  1. Late Move Reductions (LMR)
  2. Null Move Pruning
  3. Futility Pruning
  4. Razoring
  5. ProbCut
  6. Internal Iterative Reductions (IIR)
  7. Singular Extensions
  8. Multi-Cut

Chess Programming Wiki - Move Ordering and Heuristics

  1. Move Ordering
  2. Transposition Table
  3. Hash Move
  4. History Heuristic
  5. Killer Heuristic
  6. Countermove Heuristic
  7. Static Exchange Evaluation (SEE)
  8. Improving Heuristic

Chess Programming Wiki - Testing and Tuning

  1. Sequential Probability Ratio Test (SPRT)
  2. Automated Tuning
  3. SPSA (Simultaneous Perturbation Stochastic Approximation)
  4. NNUE (Efficiently Updatable Neural Networks)
  5. Lazy SMP (Parallel Search)