Skip to content

Releases

Pawnstar 2.1.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 23:04

Pawnstar 2.1.0: the Pawnstar UCI chess engine (C++, NNUE), built and tested at commit 4512ed768171d25528961871ddd84ae1537febc3
by run #41250655691.

  • Windows (x86-64, AVX2): pawnstar-2.1.0-windows-x86_64.exe, Authenticode-signed (Jonathan Reckless).
  • macOS (Apple silicon): the binary in pawnstar-2.1.0-macos-arm64.zip, signed with a
    Developer ID and notarised by Apple.
  • Linux (x86-64, AVX2): pawnstar-2.1.0-linux-x86_64; chmod +x it.

What's Changed

  • Credit PlentyChess by handle, not a legal name by @jonny-reckless in #56
  • Attribute the net's training data, stop publishing a source tarball, and stop calling v12 shipped by @jonny-reckless in #57
  • Print the ports' shared licence notice from the license command by @jonny-reckless in #58
  • Measure the opening-replay correlation and correct the pooled bars by @jonny-reckless in #59
  • Correct the two stale net-to-net bars to the opening-replay-corrected ones by @jonny-reckless in #60
  • Correct the last three stale net-to-net bars, in a comment and in memory by @jonny-reckless in #61
  • Correct the two stale bars deeper in nnue/README.md, found by a full sweep by @jonny-reckless in #62
  • Replace the TSCP opening book with one built from the CC0 Lichess database by @jonny-reckless in #63
  • Screen the opening book against the engine's own judgement, at 100 cp by @jonny-reckless in #64
  • Stop an export hiding a failed cygpath from set -e by @jonny-reckless in #65
  • Stop claiming 0.5 trained the shipped net, and stop nnue/README.md reading as binary by @jonny-reckless in #66
  • Shorten the NNUE section to the net that ships, and correct what it said by @jonny-reckless in #67
  • Correct the stale claims a documentation audit found by @jonny-reckless in #68
  • Say in the notices that 84 book lines end in the engine's own move by @jonny-reckless in #69
  • Finish the book screening: the engine's own notice, and the opening set by @jonny-reckless in #70
  • Retire tools/filter_book.cpp; the screener lives in amphitheater-chess by @jonny-reckless in #71

Full Changelog: v2.0.0...v2.1.0

Pawnstar 2.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 19:58

Pawnstar 2.0.0: the Pawnstar UCI chess engine (C++, NNUE), built and tested at commit 2ec763798cbfb6b398dd7987f2209733ef3289eb
by run #41118913326.

  • Windows (x86-64, AVX2): pawnstar-2.0.0-windows-x86_64.exe, Authenticode-signed (Jonathan Reckless).
  • macOS (Apple silicon): the binary in pawnstar-2.0.0-macos-arm64.zip, signed with a
    Developer ID and notarised by Apple.
  • Linux (x86-64, AVX2): pawnstar-2.0.0-linux-x86_64; chmod +x it.

New evaluation network

This release ships v20, an evaluation network trained entirely on Leela Chess Zero self-play data.
It replaces v12, which was trained on data generated by PlentyChess
(Yoshie2000). That data is no longer used in any Reckless chess
engine network, and no network trained on it is distributed any longer: v12 and its predecessors are removed
from the source tree and every release that shipped them has been deleted. The credit for those earlier
networks is kept permanently in nnue/README.md,
because they were measurably stronger for that data and the record should show where they came from.

Measured against v12 in single-threaded self-play: +10 Elo at 8+0.08 over 8,000 games, and level at
12+0.12
over 12,000 games. A gain at fast time controls, neither a gain nor a loss at slower ones.

The network architecture changes with it: 8 horizontally mirrored king buckets and 8 material output heads,
replacing v12's unmirrored single head. The major version marks the network provenance change and the new
network format, not a search rewrite.

Training-data attribution

The network was trained on positions from the Leela Chess Zero self-play training data
(https://storage.lczero.org/files/training_data/), runs test91 and test60, published under the
Open Database License 1.0 (http://opendatacommons.org/licenses/odbl/1.0/) with its contents under the
Database Contents License 1.0 (http://opendatacommons.org/licenses/dbcl/1.0/):

Position data from the Leela Chess Zero self-play training data
(https://storage.lczero.org/files/training_data/), run test91, used under the Open Database License 1.0
(http://opendatacommons.org/licenses/odbl/1.0/).

Position data from the Leela Chess Zero self-play training data
(https://storage.lczero.org/files/training_data/), run test60, used under the Open Database License 1.0
(http://opendatacommons.org/licenses/odbl/1.0/).

A trained network is an ODbL Produced Work, so distributing it obliges that notice. ODbL does not require
the network itself to be ODbL-licensed, and does not make it GPL merely because this project's code trained
it. The engine prints this notice itself: send license over UCI. Full notices are in
THIRD-PARTY-NOTICES.md.

No source archive

This release publishes binaries and documentation only. For the source, clone or fork the repository.

What's Changed

  • Run CI and releases on GitHub-hosted runners by @jonny-reckless in #21
  • UCI test: wait for the first currmove line rather than a fixed movetime by @jonny-reckless in #22
  • Add a CI aggregate job as the branch ruleset's single required check by @jonny-reckless in #23
  • Restore the self-play data generator and calibrate it, with an opening set of our own by @jonny-reckless in #24
  • Make self-play data diversity survive a real campaign by @jonny-reckless in #25
  • Move the pinned bullet trainer to da426a49 and force the checkout by @jonny-reckless in #26
  • Close the two holes a campaign across machines would have fallen into by @jonny-reckless in #27
  • Extract the CC0 Lichess open database into training shards by @jonny-reckless in #28
  • Convert Lc0's v6 self-play training data into training shards by @jonny-reckless in #29
  • Make the documents true about the suites, the tools and the data sources by @jonny-reckless in #31
  • Make the trainer's usage header list and describe what it reads by @jonny-reckless in #32
  • Stop nnue/README.md telling a reader to fetch the retired dataset by @jonny-reckless in #33
  • Fail the build when kKingBucketMap overruns kNumKingBuckets by @jonny-reckless in #34
  • Derive kNumKingBuckets from kKingBucketMap instead of asserting it by @jonny-reckless in #35
  • Move pawnstar's nets into the shared RNNUE1 container, with CRC-64/XZ by @jonny-reckless in #36
  • Make a refused net fatal, not a silent fall back to the embedded one by @jonny-reckless in #37
  • The shared NNUE shape behind a build knob: king mirroring and 8 output heads by @jonny-reckless in #38
  • Pin the advertised Hash default, which bench cannot see by @jonny-reckless in #39
  • Build and gate the new NNUE shape in CI, which nothing exercised by @jonny-reckless in #40
  • Read lc0's v7 training records, which only append to the v6 layout by @jonny-reckless in #42
  • Document a real RNNUE1 header, and who should write it by @jonny-reckless in #41
  • Say which net is still playing when EvalFile is refused by @jonny-reckless in #43
  • Say which net loaded as an info string on stdout, where a GUI reads it by @jonny-reckless in #44
  • Restore bullet's MIT attribution on the two trainer files adapted from it by @jonny-reckless in #45
  • Read an RNNUE1 header with one tested tool (print_net_header) by @jonny-reckless in #46
  • Bring the SPRT match harness into the tree, where a decoder gets reviewed by @jonny-reckless in #47
  • Pool match chunks with a tested tool, and stop a shape note reading as a refusal by @jonny-reckless in #48
  • Count Actions workers by process name, not by mentions of them by @jonny-reckless in #49
  • Check what the engine does with a net's weights, which nothing did by @jonny-reckless in #50
  • Say the symmetry invariant the way the test asserts it by @jonny-reckless in #51
  • Refuse a learning-rate schedule whose last drop never applies by @jonny-reckless in #52
  • Take the trainer's resume support from the single source by @jonny-reckless in #53
  • Ship the v20 net, trained entirely on Leela Chess Zero self-play data by @jonny-reckless in #54
  • Record what the int8 bound measures, and correct two accounts of the flip by @jonny-reckless in #55

Full Changelog: v1.2.0...v2.0.0