Skip to content

FunComp 2.0

Choose a tag to compare

@Moxnar Moxnar released this 03 Oct 00:06
· 2 commits to main since this release

FunComp 2.0 (2026-10-02)

The complete classical engine: multi-threaded, with tablebases and
pondering, a richer evaluation, and every parameter tuned.

Strength. About 3280 on the CCRL Blitz scale: 3282 ± 10 from a
single-threaded gauntlet of 2,880 games at 10+0.1 against 24 rated
engines from eight families (Stash, Booot, Reckless, Akimbo, RubiChess,
Seer, Igel, Clover; CCRL Blitz 3049-3419), about 245 above 1.0 measured
the same way. Against 1.0 directly: +306 ± 23 in 1,000 self-play games
from balanced openings at 8+0.08. An estimate on
our hardware, not an official CCRL rating.

Binaries.

  • funcomp-2.0-x86-64-v3.exe: for CPUs with AVX2 and BMI2 (Intel
    Haswell, AMD Zen and later). The faster build.
  • funcomp-2.0-x86-64.exe: for any 64-bit x86 CPU.

Both search identically (bench 1614718 nodes) and are statically linked.

New UCI options. Threads (Lazy SMP, 1-256), Ponder,
SyzygyPath, SyzygyProbeLimit, SyzygyProbeDepth, and TelemetryDir
(for testing). Hash and Move Overhead as before.

What's new.

  • Multi-threaded search (Lazy SMP): threads share the hash table.
    +151 Elo at 4 threads and +87 at 2 in self-play.
  • Syzygy tablebases through Fathom: WDL probes in the search, and at
    the root winning moves ranked by distance to zeroing, so won endings
    are converted inside the fifty-move rule.
  • Pondering.
  • Evaluation: an initiative term (threats, safe mobility, territory,
    coordination, pawn-push threats, safe checks, king pressure, tempo),
    a drawishness scale for opposite-coloured bishops and close pawnless
    endings, and driving a bare king to the edge (to the right corner for
    bishop and knight).
  • Search: the halfmove clock in the hash key (so a score from early in
    a fifty-move count isn't reused late), a fix to the prior-countermove
    bonus, late move pruning in the move picker, underpromotion pruning,
    static exchange evaluation of promotions, and time management that
    weighs how much of the search went into the best move, how long it has
    held and whether the score dropped.
  • Tuning: all of the search's parameters, about 110, tuned together by
    SPSA in two full passes (160,000 games), and the time
    management in a pass of its own at a longer time control.

Checked before release.

  • A stress run of 8,000 games on both builds (bullet and 40 moves in
    10 s, 24 at a time): no time losses, crashes, disconnects or illegal
    moves; 300 games with both sides pondering, all normal.
  • Threads with tablebases in bullet (4 threads, 2+0.02): the stress runs
    found and fixed three problems, none of which changes the search. The
    reported line could start with a helper thread's move; a tablebase
    root's ranking ran before the clock started; and that ranking (by
    distance to zeroing) can take 50 ms on cold tables, so with less than
    a second left the root is now ranked by win, draw or loss alone. After
    the fixes, 2,000 games with 20 search threads on 24 hardware threads:
    no failures.

Known limitations.

  • No Chess960.
  • The evaluation is hand-written; an NNUE comes in 3.0.
  • With every hardware thread busy (many threaded games at once), bullet
    games can still be lost on time about once in a thousand, to the
    operating system's scheduling: raise Move Overhead in such setups.

Next. Chess960 (2.x), then an NNUE trained on FunComp's own games
(3.0), and a learned guide for the search's pruning.