Skip to content

Releases: PavolUlicny/HyperPrune

HyperPrune v2.5.2

Choose a tag to compare

@github-actions github-actions released this 01 May 17:09

Documentation

  • Updated the vendored Unity test framework sources to upstream 2.6.3 and removed the local formatting changes
  • Added upstream Unity MIT license text at test/unity/LICENSE.txt
  • Added a short third-party notices section to README.md pointing to the vendored Unity license

HyperPrune v2.5.1

Choose a tag to compare

@github-actions github-actions released this 03 Apr 17:30

CI

  • Added dedicated verify-5x5 CI job: builds for BOARD_SIZE=5 and runs 1M self-play games with a 200M-entry transposition table to verify perfect play on 5×5

Documentation

  • Updated README tagline to reflect verified perfect play on 3×3 to 5×5 (was an unverified claim for all boards up to 8×8)
  • Documented bitboard_has_won LUT precondition: player_pieces must have no bits set above MAX_MOVES-1

HyperPrune v2.5.0

Choose a tag to compare

@github-actions github-actions released this 22 Mar 16:39

Performance

  • Replaced bitboard_has_won mask loop with a precomputed lookup table for MAX_MOVES ≤ 16 (i.e. BOARD_SIZE ≤ 4); 512 bytes for 3×3, 64 KiB for 4×4, populated once at startup by init_win_masks()
  • Extended lookup table to checkWinner for MAX_MOVES ≤ 16, replacing the bitboard_did_last_move_win mask scan with a single table load (equivalent under the precondition that the board was non-terminal before the move)

Fixed

  • Corrected initializeBoard() comment: player_turn is not used by checkWinner(); only move_count is
  • Corrected checkWinner() comment: abbreviated return values TIE/CONTINUE changed to actual enum names GAME_TIE/GAME_CONTINUE

HyperPrune v2.4.0

Choose a tag to compare

@github-actions github-actions released this 20 Mar 10:59

Performance

  • Added ENABLE_MOVE_ORDERING compile-time flag to control killer-move and history heuristics; defaults to ON for BOARD_SIZE <= 4 (pruning gains outweigh O(n²) sort cost) and OFF for larger boards where ordering degrades performance

CI

  • Reworked test workflow: replaced matrix dimensions for board_size and move_ordering with inner shell loops, reducing job count while covering all board sizes (3–8) × both move-ordering states across every job
  • Added Debug build coverage to test (Make), test-cmake, and test-windows jobs
  • Added --seed / -S CLI smoke tests to test, test-cmake, and test-windows (3×3 Release runs)
  • Added default ENABLE_MOVE_ORDERING selection validation (no explicit override) for BOARD_SIZE=3 and BOARD_SIZE=5 in test, test-cmake, and test-windows, exercising the Makefile and CMake default-derivation logic
  • Expanded build-portable to cover all board sizes × both move-ordering states (was 3×3 only)
  • Switched test-windows from PowerShell to Bash to fix CMake -D variable expansion

HyperPrune v2.3.4

Choose a tag to compare

@github-actions github-actions released this 19 Mar 20:41

Performance

  • Portable builds (make portable, make install) now use LTO, -fno-semantic-interposition, matching the release build flags (minus -march=native)
  • Default CMake Release builds now use LTO, -funroll-loops, and -fno-semantic-interposition; previously these required -DENABLE_NATIVE_OPTIMIZATIONS=ON

Documentation

  • Rewrote "How it works" as a step-by-step pipeline walkthrough of a single getAiMove() call, covering board representation, move generation, search entry point, negamax loop, transposition table, terminal conditions, move ordering, and PGO
  • Trimmed Highlights section — removed redundant inline explanations already covered in "How it works"
  • Added CodeQL, release version, and platforms badges to README
  • Added CI/CD bullet to Highlights covering the test matrix and automated release workflow
  • Added note after Requirements about 5×5+ boards being impractical for real-time play

HyperPrune v2.3.3

Choose a tag to compare

@github-actions github-actions released this 18 Mar 18:47

Fixed

  • make install now runs make clean after installing, preventing root-owned build artifacts from blocking future make clean calls when installing with sudo
  • CI: set cancel-in-progress: false on all workflows so new pushes queue instead of cancelling in-progress runs

Tests

  • Renamed nx to x_count in test_restartGame_clears_board_and_resets_turn for consistency with o_count

Documentation

  • Clarified that make install and make uninstall require sudo on systems where /usr/local/bin is root-owned
  • Corrected PGO description in README from "compiles twice" to the accurate three-step process
  • negamax.h: added zobrist_init() and transposition_table_init() to getAiMove() prerequisites

HyperPrune v2.3.2

Choose a tag to compare

@github-actions github-actions released this 17 Mar 18:37

Added

  • -S short flag for --seed (e.g. ttt -S 42 -s 1000)

Documentation

  • Added "Prebuilt binaries" section to README with chmod +x instructions for Linux/macOS release downloads
  • Added author credit to README and --help output

HyperPrune v2.3.1

Choose a tag to compare

@github-actions github-actions released this 16 Mar 20:22

Performance

  • player_to_index: replaced conditional with player & 1 (ASCII bit-parity)
  • getAiMove: cache occupied mask to avoid recomputing x_pieces | o_pieces twice
  • Combined throughput improvement: 3×3 release ~7.3 M games/s, PGO ~8.2 M games/s (up from ~7.1 / ~7.7)

HyperPrune v2.3.0

Choose a tag to compare

@github-actions github-actions released this 16 Mar 18:10

Changed

  • Self-play mode now exits with code 1 and prints a diagnostic to stderr if any game is won (perfect play broken); previously continued silently
  • Self-play output no longer includes the Outcomes breakdown (x/o/tie counts); all games are expected to be ties
  • Self-play output condensed to a single line: N games in X.XXX s (Y.YY M games/s)

Fixed

  • --help text now documents that --quiet requires --selfplay
  • Corrected inaccurate comments and documentation across the codebase

CI

  • CodeQL now runs on all branches and pull requests, not only main
  • Simplified self-play verification steps to rely on exit code instead of parsing human-readable output
  • Release workflow now runs 1M-game self-play verification before uploading binaries

HyperPrune v2.2.3

Choose a tag to compare

@github-actions github-actions released this 15 Mar 19:12

Fixed

  • Replaced scanf("%d") with fgets+strtol in interactive coordinate input to eliminate undefined behaviour on out-of-range integer input

CI

  • Added CodeQL static analysis workflow (security-extended query suite) with weekly schedule
  • Bumped github/codeql-action from v3 to v4 for Node.js 24 compatibility