Skip to content

Comments

feat: futility pruning#197

Open
ptsouchlos wants to merge 8 commits intomainfrom
feature/futility-pruning
Open

feat: futility pruning#197
ptsouchlos wants to merge 8 commits intomainfrom
feature/futility-pruning

Conversation

@ptsouchlos
Copy link
Owner

@ptsouchlos ptsouchlos commented Jan 27, 2026

Closes #160

@codecov-commenter
Copy link

codecov-commenter commented Jan 27, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.27%. Comparing base (8f46dd6) to head (6aeb703).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #197      +/-   ##
==========================================
+ Coverage   91.26%   91.27%   +0.01%     
==========================================
  Files          40       40              
  Lines        7610     7619       +9     
==========================================
+ Hits         6945     6954       +9     
  Misses        665      665              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

After making other changes first, try to implement futility pruning
(again).

bench: 798118
@ptsouchlos ptsouchlos force-pushed the feature/futility-pruning branch from b5813c5 to de52049 Compare February 13, 2026 04:12
commit 8f46dd6
Author: Paul T <6591180+ptsouchlos@users.noreply.github.com>
Date:   Thu Feb 19 14:01:20 2026 -0500

    fix: pvs logic (#221)

    Changes:
    * chore: add Node::Next type
    * chore: use moves_seen instead of "i" in move loop
    Also use `Node::Next` instead of hard coding PvNode.
    * fix: adjust pvs logic and lmr reduction condition
    Adjust the lmr reduction condition to use moves_seen - not the full move
    number from the current game. Also added a full depth research at a null
    window for PVS before doing a expensive full research.
    * chore: extract LMR min depth/moves seen
    * chore: revert to using loop counter
    Removed the new moves_seen loop counter (clippy doesn't like it) and
    renamed `i` to `moves_seen`.
    * chore: revert loop counter and add moves_seen
    Moves seen gets incremented after undoing a move, so it can potentially
    be different (at times) from the loop counter. Revert back to having
    separate variables and suppress the clippy warning for now. The search
    bench didn't change, so presumably there's no functional change but I'm
    not convinced. We can do further later tested to see the if there's a
    measurable difference.

    Elo   | 50.32 +- 15.45 (95%)
    SPRT  | 8.0+0.08s Threads=1 Hash=16MB
    LLR   | 3.03 (-2.94, 2.94) [0.00, 5.00]
    Games | N: 1182 W: 462 L: 292 D: 428
    Penta | [26, 111, 210, 155, 89]
    https://openbench.nocturn9x.space/test/5745/

    bench: 877749

commit fd91215
Author: Paul T <6591180+ptsouchlos@users.noreply.github.com>
Date:   Thu Feb 19 08:53:01 2026 -0500

    feat: add threats to eval  (#219)

    Changes:
    * chore: rename attacks::for_piece to for_piece_on_sq
    * feat: add `iter()` to `Bitboard`
    * chore: remove unused code
    * chore: add "threat value" trait for eval
    * feat: enhance phased score for maths
    Added mul and add/add assign support to the type for convinience.
    * chore: constrain return type of eval values trait
    * feat: add values and scoring for piece threats
    * fix: use knight attacks for threats
    Not rook attacks...
    * fix: threat scoring
    Make sure we score for both sides.
    * feat: add "flip" function for board
    * chore: add unit test for board.flip()
    * chore: add test for score symmetry in eval
    * feat: add support for threat values in hce tuner
    * fix: issue with printing tunning output
    * chore: 20k lichess big3 tune
    * chore: update how threats are scored
    * chore: reset unused threat values
    * chore: lichess big 3 tune, 20k epochs
    * fix: bug with new params for tuner
    * fix: minor issues with hce values and traits
    Updated phased score add and mul ops to work with i16 (ScoreType)
    * chore: 20k lichess big 3 tune

    Elo   | 8.60 +- 5.73 (95%)
    SPRT  | 8.0+0.08s Threads=1 Hash=16MB
    LLR   | 2.95 (-2.94, 2.94) [0.00, 5.00]
    Games | N: 7960 W: 2514 L: 2317 D: 3129
    Penta | [309, 870, 1462, 993, 346]
    https://openbench.nocturn9x.space/test/5731/

    bench: 1125437

commit a48d919
Author: Paul T <6591180+ptsouchlos@users.noreply.github.com>
Date:   Thu Feb 19 08:50:47 2026 -0500

    fix: properly reset half move clock (#220)

    STC Regression

    Elo   | 2.12 +- 4.10 (95%)
    SPRT  | 8.0+0.08s Threads=1 Hash=16MB
    LLR   | 3.00 (-2.94, 2.94) [-5.00, 0.00]
    Games | N: 12960 W: 3940 L: 3861 D: 5159
    Penta | [383, 1430, 2812, 1435, 420]
    https://openbench.nocturn9x.space/test/5732/

    bench: 1085109

commit 8980308
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Feb 16 21:47:31 2026 -0500

    chore(deps): bump clap from 4.5.57 to 4.5.58 (#217)

    Bumps [clap](https://github.com/clap-rs/clap) from 4.5.57 to 4.5.58.
    - [Release notes](https://github.com/clap-rs/clap/releases)
    - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
    - [Commits](clap-rs/clap@clap_complete-v4.5.57...clap_complete-v4.5.58)

    ---
    updated-dependencies:
    - dependency-name: clap
      dependency-version: 4.5.58
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

    bench: 1085109

commit c2253ab
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Feb 16 21:46:24 2026 -0500

    chore(deps): bump indicatif from 0.18.3 to 0.18.4 (#218)

    Bumps [indicatif](https://github.com/console-rs/indicatif) from 0.18.3 to 0.18.4.
    - [Release notes](https://github.com/console-rs/indicatif/releases)
    - [Commits](console-rs/indicatif@0.18.3...0.18.4)

    ---
    updated-dependencies:
    - dependency-name: indicatif
      dependency-version: 0.18.4
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

    bench: 1085109

commit 23483df
Author: Paul T <6591180+ptsouchlos@users.noreply.github.com>
Date:   Thu Feb 12 23:21:21 2026 -0500

    chore: make opposite a member function (#213)

    Change `Side::opposite` to `side.opposite()`.

    Elo   | 0.05 +- 2.62 (95%)
    SPRT  | 8.0+0.08s Threads=1 Hash=16MB
    LLR   | 2.95 (-2.94, 2.94) [-5.00, 0.00]
    Games | N: 27662 W: 8247 L: 8243 D: 11172
    Penta | [707, 2862, 6677, 2890, 695]
    https://openbench.nocturn9x.space/test/5633/

    bench: 1085109
Merge branch 'main' into feature/futility-pruning
For FP compute static eval outside move loop. Also some build fixes
after merging in `main`.

bench: 816319
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] Implement futility pruning

2 participants