Releases: aywrite/arche
Release list
v0.4.8-rc.1
Features
- (uci) Add a debug log of every line read and said
- (search) Widen the late move pruning band to -5457 [bench 5769245]
- (eval) Report how the tuner's L-BFGS stopped [bench 5769245]
- (eval) Refit the pair term's factors at a weaker ridge of 3e-7 [bench 5966188] [elo +10 ±7 (6000 games, 10+0.1, vs d073151)]
Bug Fixes
- (uci) Answer an isready read behind a queued go infinite
- (search) Score a stalemate at the quiescence horizon as a draw [bench 6369864] [elo +3 ±8 (sprt [-10, 0] passed, 3000 games, 10+0.1, vs e01fb9a)]
- (board) Stop the swap walk at its last slot rather than write past it [bench 5769245]
- (board) Read a move name's promotion piece whatever its case [bench 5769245]
- (uci) Drop a line that is not utf-8 rather than leave the session
- (uci) Search a depth of zero or less as depth one
- (uci) Refuse a debug log path that is not a regular file
- (board) Try a promotion or an en passant capture from the table before generating [elo -4 ±10 (sprt [-10, 0] inconclusive, 2000 games, 10+0.1, vs ffdb1f0)] [bench 5965973]
Performance
- (eval) Weigh mobility and the king attack zone at each piece in the shared walk [bench 6369864] [speed +0.4% (bench nps, 95% interval -0.8% to +1.6%, 60 interleaved rounds over shuffled layouts vs d1beb6b)]
- (board) Read the static exchange evaluation from a table of attacker counts [bench 6369864] [speed +2.1% (bench nps, 95% interval +0.8% to +3.2%, 60 interleaved rounds over shuffled layouts vs d1beb6b)]
- (board) Read a piece's key, piece square value and factors from one row per square [bench 6369864] [speed +2.3% (bench nps, 95% interval +0.5% to +4.0%, 60 interleaved rounds over shuffled layouts vs 9d71072)]
- (board) Test a king step's legality before making the move [bench 6369864] [speed +0.9% (bench nps, 95% interval -0.7% to +2.6%, 60 interleaved rounds over shuffled layouts vs 4a05e83)]
- (board) Restore the pawn key and accumulator by copy in the unmake [bench 6369864] [speed +0.2% (bench nps, 95% interval -2.1% to +2.5%, 60 interleaved rounds over shuffled layouts vs 9f0d56f)]
- (search) Generate captures ahead of quiet moves so the ordering keys only the captures [bench 5769245] [speed +5.4% (bench nps, 95% interval +3.5% to +7.2%, 60 interleaved rounds over shuffled layouts vs cc865ba)]
- (search) Key the quiet moves four at a time with SSE and pick the least by a vector minimum [bench 5769245] [speed +0.3% (bench nps, 95% interval -1.3% to +2.1%, 60 interleaved rounds over shuffled layouts vs fe513cb)]
- (search) Probe a transposition table bucket with one SSE2 key compare and a generation mask [bench 5966188] [speed +0.6% (bench nps, 95% interval -0.9% to +2.0%, 60 interleaved rounds over shuffled layouts vs f22a1fe)]
- (search) Hoist the node checks of late move reductions and of futility and move count pruning out of the move loop [bench 5966188] [speed -0.8% (bench nps, 95% interval -2.2% to +0.5%, 60 interleaved rounds over shuffled layouts vs 44c7159)]
- (search) Step over the pruned quiet moves in one jump rather than one place at a time [bench 5966188] [speed +0.7% (bench nps, 95% interval -0.8% to +2.0%, 60 interleaved rounds over shuffled layouts vs 92829a8)]
Refactor
- (search) Count the transposition table's cutoffs and stores on the searcher [bench 6407589]
- (board) Read the swap table's piece values off the swap's own [bench 5966188]
- (uci) Dispatch the binary's commands from one array of instruments
- (search) Move the search's tests into a file of their own [bench 5966188]
- (search) Key the killers by comparing indexes rather than lending their ranks to the history [bench 5966188]
- (search) Carry the node's evaluation memo as a Score [bench 5966188]
- (search) Name the four states of the root bounds [bench 5966188]
- (search) Split alpha_beta into named steps and put each instrument behind one call [bench 5966188]
- (board) Shrink the history ring from 1,024 plies to 256 [bench 5965973]
Documentation
- (eval) Restate mobility's cost against the 5% budget at 8f9dafe
- (uci) Shorten the comments on the debug log, the isready fix and the games suite
- (board) Shorten the comments on the swap table, the kept stack and the king step [bench 5769245]
- (search) Shorten the comments on the SSE quiet keying and the stalemate test [bench 5769245]
- (board) Say why the move generator's writes are sound whatever the list held [bench 5966188]
Development
- (search) Pin how quiescence scores a stalemate at the horizon
- (bench) Add a games suite searched to a node budget beside the bench
- (docs) Correct the documentation the changes since 0.4.7 left behind
- (uci) Hold a stop read while idle to being counted like any other
- (ci) Test the quiet ordering's scalar forms on the baseline x86-64 target
- (search) Check in debug builds that the killers' lent ranks are put back [bench 5966188]
- (board) Check the static exchange's fast exits against the walk in debug builds [bench 5966188]
- (deps) Bump the mache actions from v0.5.0 to v0.7.1
- (ci) Name the 40/15 scale through mache rather than rewriting its line
Docker image: ghcr.io/aywrite/arche-lichess-bot:v0.4.8-rc.1 (sha256:599e4a49c081066e508c7f4e1b3f81935745f73dff665af76615a913f22f5d71)
Performance compared to v0.4.7 | +57 ±23 Elo (500 games)
Estimated rating | 2897 ±29 (95%) on the ccrl blitz scale (400 games)
Estimated rating | 2940 ±60 (95%) on the ccrl 40/15 scale (96 games)
v0.4.7
Features
- (eval) Add a factorization machine term, off at rank 0 [bench 6810240]
- (eval) Refit every weight but material jointly on 59,049 games [bench 6375981]
- (eval) Turn on the factorization machine at rank 16 with its fitted table [bench 6173942] [elo +95 ±19 (1000 games, 10+0.1, vs 8acbbc0)]
- (search) Refit the late move pruning model on game positions [bench 6407589] [elo +0 ±7 (sprt [-10, 0] passed, 4500 games, 10+0.1, vs e77fd54)]
Bug Fixes
- (uci) Match option names ignoring case
- (search) Print the searched count the gate read on the ledger's skipped rows [bench 6900228]
- (board) Say why a move in a position line cannot be played [bench 6900228]
- (uci) Refuse a setting keyword typed without its value
- (search) Refuse reverse futility and the null move at every open window [elo +2 ±9 (sprt [-10, 0] passed, 3000 games, 10+0.1, vs ec3d213)] [bench 6810240]
- (uci) Count stops so a stop read early reaches its own search
Performance
- (search) Skip SEE for the quiescence captures the delta test drops [bench 6900228] [speed +1.8% (bench nps, 95% interval +0.4% to +3.5%, 15 interleaved rounds vs bfc5143)]
- (search) Guard mate distance pruning on a mated alpha or a mating beta [bench 6900228] [speed -1.4% (bench nps, 95% interval -3.3% to +0.8%, 15 interleaved rounds vs c94b6a1)]
Refactor
- (search) Skip the table's move by its place rather than comparing every move [bench 6900228]
- (search) Derive the quiet run from the counts the ordering made [bench 6900228] [elo +13 ±15 (sprt [-10, 0] passed, 1000 games, 10+0.1, vs d379bc8)]
- (board) Answer gives_check from a per node table of checking squares [bench 6900228]
- (search) Order the quiets lazily, sorting only what the loop reads [bench 6900228]
- (magic) Take the probe's bounds check off with a power of two mask [bench 6900228]
- (magic) Build the magic tables without the long const evaluation warning [bench 6900228]
- (search) Give mate distance pruning a function of its own [bench 6900228]
Documentation
- (search) Record what the mate distance pruning match measured
- (search) Record the game batch for the skip at depth three
- (search) Correct three stale comments on the table, the quiet ordering and the late move count [bench 6900228]
- (search) Shorten the comments on pruning, ordering, the table and the limits [bench 6810240]
- (eval) Shorten the comments on the board, move generation and evaluation [bench 6810240]
- (uci) Shorten the comments on the protocol, the session and time control
- (search) Shorten the comments in the search [bench 6810240]
- (eval) Shorten the pair term's and the refit's comments to the sweep's standard [bench 6407589]
Development
- (ci) Point the match sections at mache where they repeat its readme
- (deps) Bump taiki-e/install-action in the actions group
- (release) Move the gauntlet up to bracket 2800 and add Weiss 1.0 and Stash 25.0
- (bench) Move the effort switch table onto the search configuration
- (release) Correct the 40/15 ladder's comparison with the blitz panel
- (search) Hold the reverse futility margin above its mate boundary with a test that fails [bench 6900228]
- (bench) Let the effort instrument turn two switches off at once
- (bench) Report speed as a paired Hodges-Lehmann estimate with a 95% interval
- (bench) Run a speed round again when the machine was loaded for it
- (bench) Count the bench's instructions under cachegrind beside the speed
- (bench) Discard a warmup bench per side before the speed rounds
- (bench) Add --cpu to pin the speed benches to chosen cpus
- (bench) Name the runner in the speed comment and turn the round rerun off
- (bench) Show the mean of each side's faster half in the speed report
- (bench) Run each speed round on a code layout of its own
- (bench) Measure the speed job over forty shuffled layouts
- (ci) Shorten the comments in the workflows and match scripts
- (bench) Shorten the comments on the instruments
- (docs) Shorten the documentation and correct what had drifted
- (search) Hold the beta mate exemptions with an ordinary alpha [bench 6810240]
- (search) Give the ledger's skipped fixtures the searched count it prints [bench 6810240]
- (search) Drop the switch guard and tighten three search tests [bench 6810240]
- (uci) Refuse an unreadable effort setting and drop a repeated test
- (ci) Close four gaps in the workflow and script tests
- (ci) Report the in-game nodes a second in the strength summary
- (eval) Run the factorization machine at rank 8 under a test feature
- (ci) Test the evaluation's pair term at its test rank
- (eval) Correct what the pair term's tests and comments say about it [bench 6407589]
- (docs) Describe the pair term where the documentation still missed it
- (release) Move the blitz and 40/15 gauntlets up to bracket 2870 and 2800
Docker image: ghcr.io/aywrite/arche-lichess-bot:v0.4.7 (sha256:fa097ff1f29e35b1d390f00c7b66b7ea7ba8ca791e4f2b1d36bff89fff685e71)
Performance compared to v0.4.6 | +127 ±26 Elo (500 games)
Estimated rating | 2862 ±29 (95%) on the ccrl blitz scale (400 games)
Estimated rating | 2874 ±58 (95%) on the ccrl 40/15 scale (96 games)
v0.4.6
Corrections to this section, written by hand after it was generated. The
generated lines below are left as they were published.
- Two entries here print
[bench 48354803]and their trees pin 47836191:
"Count the iteration a budget gave up in the nodes a search reports"
(3298289) and "Add an effort instrument that differences two
configurations by the node" (b9325ae). Both were written on quiet
futility pruning, which counts 48354803, and rebased onto the late move
count before they landed. Neither moves a pin, so their bench is the
late move count's 47836191.
Features
- (search) Add an adaptive null move reduction that grows with depth and the eval's margin over beta [bench 50127050] [elo +27 ±16 (sprt [0, 10] passed, 1000 games, 10+0.1, vs 54d85b9)]
- (search) Decide the deep reduction by depth and move index [bench 50263773] [elo +2 ±9 (sprt [-10, 0] passed, 3500 games, 10+0.1, vs ac53360)]
- (search) Add quiet futility pruning at depths one to three [bench 48354803] [elo +21 ±13 (sprt [0, 10] passed, 1500 games, 10+0.1, vs 92922de)]
- (search) Add a late move count at depths one to three [bench 47836191] [elo +37 ±16 (sprt [0, 10] passed, 1000 games, 10+0.1, vs bdf0bef)]
- (search) Add mate distance pruning [bench 2153533]
Bug Fixes
- (search) Count the iteration a budget gave up in the nodes a search reports [bench 48354803]
- (search) Fall back to a smaller transposition table at startup [bench 47836191]
- (search) Measure an aborted search's time over the nodes it reports [bench 47836191]
- (uci) Write a final info line with every node the search spent
Documentation
- (search) Record the attention model's objective as measured and rejected
- (search) Correct what the late move count's line is pinned to [bench 47836191]
Development
- (deps) Bump the actions group across 1 directory with 4 updates
- (bench) Hold a term by name rather than by a flag of its own
- (deps) Bump the mache actions from v0.3.0 to v0.4.0
- (bench) Add an effort instrument that differences two configurations by the node [bench 48354803]
- (bench) Read the effort test's outcomes above the depths the rule decides
- (deps) Bump the mache actions from v0.4.0 to v0.5.0
- (docs) Correct the quiet futility figure and four counts the new rules staled
- (release) Add a second calibration gauntlet against the ccrl 40/15 list
- (bench) Let the effort instrument ablate the late move count [bench 47836191]
- (ci) Chain up to four sprt batches in one strength run
- (ci) Read the ladder's numbers off resolve rather than off the inputs
- (bench) Raise the bench depth from nine to eleven [bench 6900228]
Docker image: ghcr.io/aywrite/arche-lichess-bot:v0.4.6 (sha256:a7cafa044be61347555d684869af5d2a24d0fdc62234c6132e8f4f54ab60e545)
Performance compared to v0.4.5 | +117 ±22 Elo (500 games)
Estimated rating | 2760 ±30 (95%) on the ccrl blitz scale (400 games)
Estimated rating | 2686 ±52 (95%) on the ccrl 40/15 scale (96 games)
v0.4.5
Features
- (eval) Count the enemy pieces bearing on the king's ring, at zero weight [bench 3868987] [elo not measured]
- (eval) Fit the king attack zone weights on the archive [bench 4102609] [elo +35 ±16 (sprt [0, 10] passed, 1000 games, 10+0.1, vs 4b1b80f)]
- (search) Add aspiration windows at the root [bench 52298065] [elo +19 ±11 (sprt [0, 10] passed, 2000 games, 10+0.1, vs dcc9688)]
- (search) Add a reduction table by depth and move count [bench 51236454] [elo +19 ±11 (sprt [0, 10] passed, 2000 games, 10+0.1, vs 5902681)]
Performance
- (eval) Take the king attack counts in the mobility walk [bench 4102609] [speed +5.7% (bench nps, 21 interleaved rounds vs 02432c9, spread 12.2%)]
- (search) Skip the stack sort for a list with no key and rotate one with a single key [bench 4102609] [speed +0.4% (bench nps, 7 interleaved rounds vs 6f32cbc, spread 4.1%)]
- (board) Probe one slider line for legality where the move vacated a line through the king [bench 4102609] [speed +0.3% (bench nps, 7 interleaved rounds vs 0df6a31, spread 5.9%)]
- (search) Build the late move node only where the node admits a reduction [bench 4102609] [speed +1.2% (bench nps, 7 interleaved rounds vs b10e2c0, spread 6.3%)]
- (search) Put the transposition table on huge pages [bench 52298065] [speed -1.1% (bench nps, 5 interleaved rounds vs 273c5eb, spread 3.6%)]
Refactor
- (uci) Read an instrument's suite in one place
- (search) Move the late move reductions and pruning into one module [bench 4102609] [elo not measured]
- (search) Make the principal variation exemption explicit [bench 4102609]
- (search) Rename Edges to RootBounds and pin how the bits travel [bench 4102609]
- (board) Derive the move number from the ply rather than keeping it [bench 52404553]
- (eval) Fold every leaf term through one weigh [bench 52404553]
- (board) Read recompute_checkers off the attacker helpers [bench 52404553]
- (board) Hold the castle rights as four bits [bench 52404553]
- (search) Share the sampling key, the share and the reference replay across the recorders [bench 52404553]
- (uci) Read the depth and the taint word in one place each
- (uci) Read every spin option through one reader from its row
- (eval) Give the shelter and the pawn structure one direct mapped cache type [bench 52298065] [elo not measured]
Documentation
- (search) Correct the claim that fail low nodes are not stored
- (search) Shorten the comments in the search, the generator and the suites [bench 4102609]
- (eval) Shorten the comments in the evaluation and the tuner [bench 4102609]
- (board) Shorten the comments in the board and make/unmake [bench 4102609]
- (uci) Shorten the comments in the protocol crate and its tests
- (search) Record a third sort shape and the stored static evaluation as measured and priced
- (uci) Give the terms row's formula every leaf term and the vector its width
- (search) Give the taint policy result its games and its control
- (eval) Correct what the whole key costs a cache entry
- (uci) Say which spin values are clamped and which are refused
Development
- (search) Store and probe a mate score at a nonzero ply
- (tactics) Add a floor under the suite and a list of accepted losses
- (uci) Check an instrument takes the sampling rate it was given
- (docs) Answer the mobility budget bullet and record two rejected arms
- (ci) Pin the three tools that prepare a release
- (uci) Pin what a terms argument takes and how it refuses
- (uci) Name a suite the bench does not use when checking one is read
- (bench) Split the attention fit by group and let a feature be dropped [bench 3868987]
- (ci) Refuse to resolve a ref under a trigger that carries secrets
- (ci) Shorten the comments in the workflows, the scripts and the manifests
- (board) Add the three evasion shapes to the perft edge cases
- (ci) Call the match orchestration out of mache rather than inlining it
- (deps) Bump smallvec from 1.16.0 to 1.16.1 in the cargo group
- (bench) Raise the bench depth from 7 to 9 [bench 52404553]
- (release) Move the gauntlet up to bracket 2700 and add Blunder, Inanis and Zahak
- (deps) Bump the mache actions from v0.2.0 to v0.3.0
- (docs) Correct the speed report example and eight stale claims
- (ci) Date the coverage estimate and pin the v2 figure to its commit
- (docker) Name every option the engine advertises and raise Move Overhead
Docker image: ghcr.io/aywrite/arche-lichess-bot:v0.4.5 (sha256:9c73bd7f062e51698311b382c411efa0a5a4230352b3424f8b45b7b791b5d9de)
Performance compared to v0.4.4 | +68 ±24 Elo (500 games)
Estimated rating | 2626 ±30 (95%) on the ccrl blitz scale (400 games)
v0.4.5-rc.1
Features
- (eval) Count the enemy pieces bearing on the king's ring, at zero weight [bench 3868987] [elo not measured]
- (eval) Fit the king attack zone weights on the archive [bench 4102609] [elo +35 ±16 (sprt [0, 10] passed, 1000 games, 10+0.1, vs 4b1b80f)]
- (search) Add aspiration windows at the root [bench 52298065] [elo +19 ±11 (sprt [0, 10] passed, 2000 games, 10+0.1, vs dcc9688)]
- (search) Add a reduction table by depth and move count [bench 51236454] [elo +19 ±11 (sprt [0, 10] passed, 2000 games, 10+0.1, vs 5902681)]
Performance
- (eval) Take the king attack counts in the mobility walk [bench 4102609] [speed +5.7% (bench nps, 21 interleaved rounds vs 02432c9, spread 12.2%)]
- (search) Skip the stack sort for a list with no key and rotate one with a single key [bench 4102609] [speed +0.4% (bench nps, 7 interleaved rounds vs 6f32cbc, spread 4.1%)]
- (board) Probe one slider line for legality where the move vacated a line through the king [bench 4102609] [speed +0.3% (bench nps, 7 interleaved rounds vs 0df6a31, spread 5.9%)]
- (search) Build the late move node only where the node admits a reduction [bench 4102609] [speed +1.2% (bench nps, 7 interleaved rounds vs b10e2c0, spread 6.3%)]
- (search) Put the transposition table on huge pages [bench 52298065] [speed -1.1% (bench nps, 5 interleaved rounds vs 273c5eb, spread 3.6%)]
Refactor
- (uci) Read an instrument's suite in one place
- (search) Move the late move reductions and pruning into one module [bench 4102609] [elo not measured]
- (search) Make the principal variation exemption explicit [bench 4102609]
- (search) Rename Edges to RootBounds and pin how the bits travel [bench 4102609]
- (board) Derive the move number from the ply rather than keeping it [bench 52404553]
- (eval) Fold every leaf term through one weigh [bench 52404553]
- (board) Read recompute_checkers off the attacker helpers [bench 52404553]
- (board) Hold the castle rights as four bits [bench 52404553]
- (search) Share the sampling key, the share and the reference replay across the recorders [bench 52404553]
- (uci) Read the depth and the taint word in one place each
- (uci) Read every spin option through one reader from its row
- (eval) Give the shelter and the pawn structure one direct mapped cache type [bench 52298065] [elo not measured]
Documentation
- (search) Correct the claim that fail low nodes are not stored
- (search) Shorten the comments in the search, the generator and the suites [bench 4102609]
- (eval) Shorten the comments in the evaluation and the tuner [bench 4102609]
- (board) Shorten the comments in the board and make/unmake [bench 4102609]
- (uci) Shorten the comments in the protocol crate and its tests
- (search) Record a third sort shape and the stored static evaluation as measured and priced
- (uci) Give the terms row's formula every leaf term and the vector its width
Development
- (search) Store and probe a mate score at a nonzero ply
- (tactics) Add a floor under the suite and a list of accepted losses
- (uci) Check an instrument takes the sampling rate it was given
- (docs) Answer the mobility budget bullet and record two rejected arms
- (ci) Pin the three tools that prepare a release
- (uci) Pin what a terms argument takes and how it refuses
- (uci) Name a suite the bench does not use when checking one is read
- (bench) Split the attention fit by group and let a feature be dropped [bench 3868987]
- (ci) Refuse to resolve a ref under a trigger that carries secrets
- (ci) Shorten the comments in the workflows, the scripts and the manifests
- (board) Add the three evasion shapes to the perft edge cases
- (ci) Call the match orchestration out of mache rather than inlining it
- (deps) Bump smallvec from 1.16.0 to 1.16.1 in the cargo group
- (bench) Raise the bench depth from 7 to 9 [bench 52404553]
- (release) Move the gauntlet up to bracket 2700 and add Blunder, Inanis and Zahak
- (deps) Bump the mache actions from v0.2.0 to v0.3.0
Docker image: ghcr.io/aywrite/arche-lichess-bot:v0.4.5-rc.1 (sha256:300fc0ae6adffebd5b9cbacca2560188595cdb0b154a720f235df55236cf970d)
Performance compared to v0.4.4 | +71 ±23 Elo (500 games)
Estimated rating | 2661 ±32 (95%) on the ccrl blitz scale (400 games)
v0.4.4
Features
- (eval) Add a pawn structure term behind a pawn hash [bench 3882989]
- (eval) Name the tuner's sealed games rather than drawing them from the key [bench 3882989]
- (eval) Fit the sixteen pawn structure weights to our own games [bench 4066438] [elo +57 ±25 (sprt [0, 10] passed, 500 games, 10+0.1, vs 062fd3c)]
- (eval) Add an insufficient material rule returning zero [bench 4089373] [elo +8 ±12 (sprt [-10, 0] passed, 1500 games, 10+0.1, vs acf076d)]
- (uci) Budget a twentieth of the clock when no move count is given [elo +58 ±17 (sprt [0, 10] passed, 1000 games, 10+0.1, vs 561ad40)]
- (eval) Hold the pawn structure weights through a fit [bench 4089373]
- (eval) Refit the eight mobility weights on the whole archive [bench 3868987] [elo +76 ±25 (sprt [0, 10] passed, 500 games, 10+0.1, vs 2df11cb)]
- (uci) Add a Move Overhead option in place of the constant fifty
Bug Fixes
- (search) Answer a move at a root whose fifty move counter has expired [bench 4089373]
- (eval) Tell a seal drawn on the wrong archive from a pair with no rows [bench 4089373]
- (search) Hold a line of check extensions to the ply rail [bench 3868987]
Refactor
- (eval) Move each leaf term into a module of its own under eval/ [bench 3868987]
Documentation
- (eval) Take a file the reader cannot open out of the mobility comment [bench 3868987]
Development
- (workspace) Build for x86-64-v2 by default
- (release) Ship the v2 build under the plain name
- (ci) Have the book table say what commit its books come from
- (ci) Take the match tools from the mache action instead of the tree
- (ci) Point the match documentation at the tool that reads the games
- (docs) Bring the readme, the roadmap and the map up to date with the code [bench 3868987]
- (bench) Let the named seal reach the labelling, not only the fit
- (ci) Read the published image's version, and pin the last loose action
- (docs) Correct four comments that describe a tree the code has left [bench 3868987]
- (tactics) Check a bm names a move the generator offers
- (ci) Put the Cinnamon paragraph back over the Cinnamon block
- (tactics) Write the strategy fixture as bytes so windows matches the pin
Docker image: ghcr.io/aywrite/arche-lichess-bot:v0.4.4 (sha256:f8a46153db1f4da387b048759a1c33ccf09daa632bcf0b97bca9ae1b1df767ba)
Performance compared to v0.4.3 | +195 ±27 Elo (500 games)
Estimated rating | 2601 ±31 (95%) on the ccrl blitz scale (400 games)
v0.4.3
Features
- (uci) Let the reductions argument search a suite of its own [bench 4162584]
- (eval) Fit the twelve piece square tables to our own games [bench 4070288] [elo +54 ±13 (sprt [0, 10] passed, 2000 games, 10+0.1, vs d17622f)]
- (eval) Add the mobility term with its eight weights at zero [bench 4070288]
- (eval) Fit the eight mobility weights to our own games [bench 4053745] [elo +12 ±8 (sprt [0, 10] passed, 4000 games, 10+0.1, vs 96bad35)]
- (eval) Add a basic king safety term from pawn masks [bench 4053745]
- (search) Rank the quiet moves by a cutoff rate [bench 4020251] [elo +22 ±13 (sprt [0, 10] passed, 1500 games, 10+0.1, vs 96bad35)]
- (eval) Add the pawn storm to the king safety term [bench 4020251]
- (eval) Fit the fourteen king safety weights to our own games [bench 3882989] [elo +44 ±15 (sprt [0, 10] passed, 1500 games, 10+0.1, vs ccd1804)]
Performance
- (eval) Count mobility only where a weight is not zero [speed +5.7% (bench nps, 41 interleaved rounds vs 54a6ceb, spread 20.1%)] [bench 4053745]
- (eval) Cache the king shelter by the pawn key and the two king squares [speed +4.9% (bench nps, 21 interleaved rounds vs 114fc59, spread 11.1%)] [bench 3882989]
- (board) Generate the evasions rather than filter them [bench 3882989] [speed +5.4% (bench nps, 21 interleaved rounds vs acf076d, spread 20.5%)]
- (search) Spare the swap two walks it always takes [bench 3882989] [speed -1.0% (bench nps, 21 interleaved rounds vs baf7a97, spread 14.6%)]
Refactor
- (eval) Give four pieces an endgame table of their own [bench 4162584]
Documentation
- (search) Say what the pruning threshold covers under its own weights
- (search) Re-measure the figures beside the reverse futility margin
- (eval) Record what the sealed games say about the king safety fit
Development
- (bench) Add a recorder module the three recorders share [bench 4162584]
- (ci) Play a panel of engines rather than one lineage
- (docs) Record that the reduction floor guards cheap nodes
- (docs) Record that the wider pruning band bought no strength
- (ci) Let a run play a second opening book
- (ci) Let build_at.sh be told how to build and what to copy
- (ci) Take the name the calibrated engine plays under as an input
- (ci) Take what a match is played on as inputs
- (ci) Take the release note marker as an input
- (docs) Move the instrument reference out of DEVELOPMENT.md
- (ci) Make the four match tools a package
- (ci) Declare the test pins in the package rather than beside it
- (ci) Give the match tools a json mode
- (bench) Print what a position's evaluation is made of
- (eval) Pin the piece square tables on shape rather than on numbers
- (bench) Add the evaluation tuner and its loss harness
- (bench) Split the tuner's corpus into three groups by game
- (bench) Count the tuner's phase shares by appearance
- (docs) Say that the tuner splits by game and seals a fifth
- (bench) Label a tuner position from its own group alone
- (docs) Take the run results out of the instrument reference
- (bench) Read a terms row whose id holds a space
- (bench) Keep a terms row whose id opens with the header word
- (deps) Bump smallvec from 1.15.2 to 1.16.0 in the cargo group
- (bench) Carry each game's run and round on its corpus row
- (bench) Split the tuner's groups by the opening pair
- (bench) Add a final command that scores the sealed group once
- (bench) Add a learning curve to the tuner
- (ci) Pin how long a run's games are kept
- (bench) Harvest the strength runs' games into the corpus
- (ci) Put the match report in the log as well as the summary
- (docs) Say that a title names the thing it changed
- (docs) Replace the em dashes with the punctuation the house rule asks for [bench 4053745]
- (docs) Bring three claims up to date with the code [bench 4053745]
- (ci) Print the gauntlet rating margin as a 95% interval
- (release) Print the whole Speed trailer in the changelog
- (release) Read the stated benches against their pins before a release
- (ci) Hold an Elo trailer to a base that still resolves
- (docs) Date the 2332 gauntlet and state one game count
- (bench) Add the attention model's fitting script
- (bench) Hold the mobility weights through a fit of a later term
- (tactics) Say what the strategic suite's total can and cannot resolve
- (release) Play fifty games against each rung of the gauntlet
- (release) Take the gauntlet's bottom rung off and add one above the top
- (release) Swap the bottom stash for a fifth lineage at the top
- (deps) Bump taiki-e/install-action in the actions group
Docker image: ghcr.io/aywrite/arche-lichess-bot:v0.4.3 (sha256:7dc55ac6cb581019c0ed1d0c9edb3ba3309b4f1d69429ff08609b0ea4827a3ad)
Performance compared to v0.4.2 | +133 ±29 Elo (500 games)
Estimated rating | 2456 ±34 (95%) on the ccrl blitz scale (400 games)
v0.4.2
Features
- (search) Record every reverse futility candidate, fired or not [bench 8182450]
- (search) Add principal variation search [bench 7184673]
- (search) Skip hopeless captures in quiescence [bench 6708286] [elo +50 ±24 (sprt [0, 10] passed, 530 games, 10+0.1, vs 24ef995)]
- (search) Add static exchange evaluation [bench 6708286]
- (search) Order captures by static exchange evaluation [bench 6146070] [elo +12 ±18 (sprt [-10, 0] inconclusive, 840 games, 10+0.1, vs master)]
- (search) Skip losing captures in quiescence [bench 5684750] [elo +24 ±19 (sprt [-10, 0] passed, 746 games, 10+0.1, vs 6e6fdec)]
- (search) Reduce late quiet moves by one ply [bench 4395471] [elo +44 ±22 (sprt [0, 10] passed, 648 games, 10+0.1, vs 899197c)]
- (board) Tell whether a move gives check without making it [bench 4395471]
- (search) Add a model gated two ply reduction [bench 4186515] [elo +11 ±12 (sprt [-10, 0] passed, 2000 games, 10+0.1, vs master)]
- (search) Add late move pruning under the model gate [bench 4162584] [elo +18 ±11 (sprt [0, 10] passed, 2000 games, 10+0.1, vs master)]
- (uci) Let the residuals argument search a suite of its own [bench 4395471]
Bug Fixes
- (board) Drop a castle right or en passant square without its pieces [bench 4395471]
- (uci) Take startpos, fen and moves as whole words
- (uci) Refuse an argument word nobody recognises, and spell them once
Performance
- (search) Score the quiet moves only when the search reaches them [bench 6146018] [speed +3.4%]
- (board) Mask the castling rights, step the repetition walk in twos [bench 4395471] [speed +3.5%]
- (search) Sort the keys and put the moves in order once [bench 4395471] [speed +2.1%]
- (search) Sort only the keys the move ordering scored [bench 4395471] [speed +6.4%]
- (search) Mask the squares the history table is read by [bench 4395471] [speed -0.9%]
Refactor
- (search) Leave the swap's gain array uninitialised [bench 5684750]
- (board) Make Board's active_color, line_ply and key pub(crate) [bench 4395471]
- (board) Add try_make and try_undo for callers outside the crate [bench 4395471]
- (magic) Move the mailbox and the MAGIC static into magic.rs [bench 4395471]
- (uci) Read a go line once into a Go value
- (uci) Answer the three research commands through one path
- (board) Write the castling rights out from a table [bench 4395471]
- (uci) Move the instruments out of the protocol module
Documentation
- (board) Say where the mailbox lives and how big it is
- (search) Say what Limits::starting_at is for
Development
- (bench) Let the residuals command set the reservoir cap
- (bench) Score the terminal positions the replay reaches
- (docs) Correct three verdicts in the experiments ledger
- (docs) Record that on-demand move picking measured slower
- (bench) Count the rows whose claim overstates the reference
- (docs) Record the tuning that measured slower
- (ci) Count how the games in a match ended
- (ci) Keep the games and a manifest from every strength run
- (bench) Record which move cuts a sampled node off [bench 4395471]
- (deps) Bump the actions group with 2 updates
- (docs) Record the check exemption verdict
- (ci) Pool the shards of a match into one estimate
- (ci) Give each shard of a match its own slice of the book
- (ci) Split the strength match across shards
- (bench) Label each sampled reduced scout's fail low [bench 4395471]
- (magic) Import the test module's names in one use
- (ci) Play the calibrate rungs at the same time
- (workspace) Drop or fix the checks that were already being made
- (workspace) Clean up the docs, the comments and the test scaffolding [bench 4395471]
- (docs) Record the tuning this round measured slower
- (workspace) Hold the unsafe to the two crates that need it
- (workspace) Look for the licence notice everywhere a source file is
- (ci) Read a match's pairs as a sequential test
- (ci) Play an sprt in batches across the shards
- (docs) Correct and tidy the documentation
- (ci) Read the elo figure and its interval off the same pairs
- (ci) Carry an sprt's pairs between batches rather than its ratio
- (tactics) Convert the Strategic Test Suite to epd
- (tactics) Score the strategic suite beside the tactical one
- (ci) State the whole test in an sprt's trailer
- (ci) Drop the script tests that restate what another pins
- (board) Name the positions the tests repeat
- (search) Put the move ordering's repeated cases in tables
- (uci) Read the go line and the option cases from tables
- (docs) Record that the reverse futility margin is where it should be [bench 4395471]
Docker image: ghcr.io/aywrite/arche-lichess-bot:v0.4.2 (sha256:255d144c8f762ea69848e54cea7b99d2aaa6a4a415bb3765bd826f5df6fb8e06)
Performance compared to v0.4.1 | +141 ±28 Elo (500 games)
Estimated rating | 2405 ±38 on the ccrl blitz scale (104 games)
v0.4.2-rc.2
Features
- (search) Record every reverse futility candidate, fired or not [bench 8182450]
- (search) Add principal variation search [bench 7184673]
- (search) Skip hopeless captures in quiescence [bench 6708286] [elo +50 ±24 (sprt [0, 10] passed, 530 games, 10+0.1, vs 24ef995)]
- (search) Add static exchange evaluation [bench 6708286]
- (search) Order captures by static exchange evaluation [bench 6146070] [elo +12 ±18 (sprt [-10, 0] inconclusive, 840 games, 10+0.1, vs master)]
- (search) Skip losing captures in quiescence [bench 5684750] [elo +24 ±19 (sprt [-10, 0] passed, 746 games, 10+0.1, vs 6e6fdec)]
- (search) Reduce late quiet moves by one ply [bench 4395471] [elo +44 ±22 (sprt [0, 10] passed, 648 games, 10+0.1, vs 899197c)]
- (board) Tell whether a move gives check without making it [bench 4395471]
Bug Fixes
- (board) Drop a castle right or en passant square without its pieces [bench 4395471]
- (uci) Take startpos, fen and moves as whole words
Performance
- (search) Score the quiet moves only when the search reaches them [bench 6146018] [speed +3.4%]
- (board) Mask the castling rights, step the repetition walk in twos [bench 4395471] [speed +3.5%]
- (search) Sort the keys and put the moves in order once [bench 4395471] [speed +2.1%]
- (search) Sort only the keys the move ordering scored [bench 4395471] [speed +6.4%]
- (search) Mask the squares the history table is read by [bench 4395471] [speed -0.9%]
Refactor
- (search) Leave the swap's gain array uninitialised [bench 5684750]
- (board) Make Board's active_color, line_ply and key pub(crate) [bench 4395471]
- (board) Add try_make and try_undo for callers outside the crate [bench 4395471]
- (magic) Move the mailbox and the MAGIC static into magic.rs [bench 4395471]
- (uci) Read a go line once into a Go value
- (uci) Answer the three research commands through one path
- (board) Write the castling rights out from a table [bench 4395471]
- (uci) Move the instruments out of the protocol module
Documentation
- (board) Say where the mailbox lives and how big it is
- (search) Say what Limits::starting_at is for
Development
- (bench) Let the residuals command set the reservoir cap
- (bench) Score the terminal positions the replay reaches
- (docs) Correct three verdicts in the experiments ledger
- (docs) Record that on-demand move picking measured slower
- (bench) Count the rows whose claim overstates the reference
- (docs) Record the tuning that measured slower
- (ci) Count how the games in a match ended
- (ci) Keep the games and a manifest from every strength run
- (bench) Record which move cuts a sampled node off [bench 4395471]
- (deps) Bump the actions group with 2 updates
- (docs) Record the check exemption verdict
- (ci) Pool the shards of a match into one estimate
- (ci) Give each shard of a match its own slice of the book
- (ci) Split the strength match across shards
- (bench) Label each sampled reduced scout's fail low [bench 4395471]
- (magic) Import the test module's names in one use
- (ci) Play the calibrate rungs at the same time
- (workspace) Drop or fix the checks that were already being made
- (workspace) Clean up the docs, the comments and the test scaffolding [bench 4395471]
- (docs) Record the tuning this round measured slower
- (workspace) Hold the unsafe to the two crates that need it
- (workspace) Look for the licence notice everywhere a source file is
- (ci) Read a match's pairs as a sequential test
- (ci) Play an sprt in batches across the shards
- (docs) Correct and tidy the documentation
Docker image: ghcr.io/aywrite/arche-lichess-bot:v0.4.2-rc.2 (sha256:e67c453bc987f9768ab02db820e66862fec23ff6b970d6b4e607da372c9cac5c)
Performance compared to v0.4.1 | +127 ±26 Elo (500 games)
Estimated rating | 2326 ±35 on the ccrl blitz scale (104 games)
v0.4.2-rc.1
Features
- (search) Record every reverse futility candidate, fired or not [bench 8182450]
- (search) Add principal variation search [bench 7184673]
- (search) Skip hopeless captures in quiescence [bench 6708286] [elo +50 ±24 (sprt [0, 10] passed, 530 games, 10+0.1, vs 24ef995)]
- (search) Add static exchange evaluation [bench 6708286]
- (search) Order captures by static exchange evaluation [bench 6146070] [elo +12 ±18 (sprt [-10, 0] inconclusive, 840 games, 10+0.1, vs master)]
- (search) Skip losing captures in quiescence [bench 5684750] [elo +24 ±19 (sprt [-10, 0] passed, 746 games, 10+0.1, vs 6e6fdec)]
- (search) Reduce late quiet moves by one ply [bench 4395471] [elo +44 ±22 (sprt [0, 10] passed, 648 games, 10+0.1, vs 899197c)]
Performance
- (search) Score the quiet moves only when the search reaches them [bench 6146018] [speed +3.4%]
- (board) Mask the castling rights, step the repetition walk in twos [bench 4395471] [speed +3.5%]
- (search) Sort the keys and put the moves in order once [bench 4395471] [speed +2.1%]
Refactor
- (search) Leave the swap's gain array uninitialised [bench 5684750]
Development
- (bench) Let the residuals command set the reservoir cap
- (bench) Score the terminal positions the replay reaches
- (docs) Correct three verdicts in the experiments ledger
- (docs) Record that on-demand move picking measured slower
- (bench) Count the rows whose claim overstates the reference
- (docs) Record the tuning that measured slower
- (ci) Count how the games in a match ended
- (ci) Keep the games and a manifest from every strength run
Docker image: ghcr.io/aywrite/arche-lichess-bot:v0.4.2-rc.1 (sha256:d383e13786d14a8e1b3bdf4b76d336077b304919bd50aa6393cb61559930c65a)
Performance compared to v0.4.1 | +78 ±77 Elo (50 games)
Estimated rating | 2268 ±34 on the ccrl blitz scale (104 games)