100 Commits
Author SHA1 Message Date
nocturn9xandGPT-6 Astra 51b07a2d18 Document direct executable downloads and Unix permissions (bench 5551733)
Co-authored-by: GPT-6 Astra <codex@openai.com>
2026-09-21 11:51:00 +02:00
nocturn9xandGPT-6 Astra 6cbd68cd01 Make Linux fallback instructions explicit in download documentation (bench 5551733)
Co-authored-by: GPT-6 Astra <codex@openai.com>
2026-09-21 11:46:14 +02:00
nocturn9xandGPT-6 Astra 00871d8699 Publish standalone Linux fallbacks in automatic releases (bench 5551733)
Co-authored-by: GPT-6 Astra <codex@openai.com>
2026-09-21 11:36:06 +02:00
nocturn9xandGPT-6 Astra e71ae8970c Clarify Linux universal builds, fallback downloads and testing (bench 5551733)
Co-authored-by: GPT-6 Astra <codex@openai.com>
2026-09-21 11:35:08 +02:00
nocturn9xandGPT-6 Astra 1a12e3ad71 Ship one Linux universal executable with shared network weights (bench 5551733)
Co-authored-by: GPT-6 Astra <codex@openai.com>
2026-09-21 11:30:12 +02:00
nocturn9x a570d38c2b Pass Microsoft-style syntax when building under MSVC on Windows (bench 5551733) 2026-09-14 22:15:39 +02:00
nocturn9xandGPT 5.6 Luna 12903ac97a Restructure README documentation (bench 5551733)
Move build, testing, UCI and TUI details into focused guides while keeping the README concise and preserving the engine overview, ratings and credits.

Co-authored-by: GPT 5.6 Luna <codex@openai.com>
2026-09-12 22:15:49 +02:00
nocturn9x baa5e82c16 Mark runtime SIMD target declarations as used (bench 5551733) 2026-09-12 22:15:48 +02:00
nocturn9x 14a248638b Respect node limits after verification searches (bench 5551733) 2026-09-12 22:15:48 +02:00
nocturn9x a12eacea82 Guard InvalidCmpOp pragma on older Nim compilers (bench 5551733) 2026-09-12 22:15:48 +02:00
nocturn9x 872dba5219 Explicitly silence or resolve all unnecessary hints/warnings 2026-09-12 19:59:42 +02:00
nocturn9x d602d7e2c1 Clarify universal binaries are available after 1.5 (bench 5551733) 2026-09-12 02:42:08 +02:00
nocturn9x 5dde49ed0c Simplify universal executable selection guide (bench 5551733) 2026-09-12 02:34:11 +02:00
nocturn9x 59699841f5 Add universal runtime SIMD binaries (bench 5551733)
Select SIMD kernels at startup and share the AVX-512 packing layout across
scalar, x86 and NEON inference using CJ's packing schedule. Preserve the
canonical network file format and provide backend diagnostics and overrides.

Add universal release targets, including a combined macOS executable. Tag
releases publish only universal binaries; individual SIMD variants remain
available through manual workflow runs.

Validate native x86 backends, Windows/Wine and AArch64/QEMU, older CPU and
OS vector-state fallback, network export/reload, NNUE state and UCI searches.
Tyrfing passes 17731 state comparisons per native backend and the full bench.
AVX-512/VNNI execution and native macOS validation require suitable runners.
2026-09-12 02:30:32 +02:00
nocturn9xandCodex b182e53f83 Optimize SIMD row updates and NEON dots (bench 5551733)
Unroll threat updates and rebuilds across four vectors on every SIMD
backend. Add a shared paired widening-load helper with full-register NEON
loads and a fallback using existing x86 primitives.

Use NEON SADALP and saturating even/odd byte products while preserving the
existing arithmetic contract. Reduce dot-loop register pressure on SSE2
and NEON to eliminate accumulator spills. Keep explicit PSQ unrolling on
SSE2, AVX2 and NEON, where measurements and code generation support it.

Add exhaustive byte-product and paired-load checks, PSQ wrapping/tail
oracles, and documentation of backend choices and arithmetic contracts.

Validation: shared correctness suites on scalar, SSE2, SSSE3, SSE4.1,
AVX2 and NEON under QEMU; tail-width checks; all selected engine builds;
AVX-512/VNNI compile and assembly checks; make dev and 49 Python/UCI tests.
Depth-13 bench remains 5551733 nodes. Eight paired fixed-node UCI runs on
a Ryzen 5900X show a 7.84% native AVX2 NPS gain (95% interval 7.37-8.32%)
with matching per-position nodes, depths and best moves. ARM is not timed
natively and AVX-512 is not executed on this host.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-12 01:43:58 +02:00
nocturn9xandCodex 8a812ae6b3 Add Mac targets and independent release jobs (bench 5551733)
Add native Intel macOS/SSE2 and Apple Silicon/NEON Make targets with a
macOS 11 deployment target and Apple ld stack settings.

Build each release artifact in its own CI job. Manual dispatch selects one
target or platform and can publish it to an existing release tag, using
current workflow tooling with the exact tagged source. Give every target
its own checksum and archive so uploads leave other release assets intact.

Document source selection, Mac builds and adding artifacts to an existing
release without moving its tag.

Validation: actionlint, 13 release tests, all 15 target build plans and
both Mac convenience targets. Single-target Linux builds from current
and 1.5.1-dev source both matched bench 5551733. Native Mac compilation
still needs validation on GitHub runners.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-12 00:13:58 +02:00
nocturn9xandCodex 9e16ed867d Run SIMD correctness CI only on manual dispatch (bench 5551733)
Remove push and pull-request triggers from the correctness workflow and
document how to start it manually. Release workflows retain their tag
triggers.

Validation: actionlint and git diff --check. Engine code is unchanged.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-11 23:51:12 +02:00
nocturn9xandCodex 660fea4a56 Add SSE2, SSSE3, SSE4.1 and NEON backends (bench 5551733)
Extend the existing vec* API with a shared x86 128-bit backend and a small
AArch64 NEON adapter, preserving integer arithmetic and inference layout.
SSE4.1 selects native int32 min/max and multiplication intrinsics.

Use feature-set names for Make targets and release artifacts, with CPU
tuning selected separately through TUNE. Preserve the historical download
guide in the README and scope the new names to versions after 1.5.0.

Add shared SIMD and inference tests, native ARM CI, minimum x86 CPU checks,
and Linux ARM release builds. Check full v3/v4 requirements before running
release benches.

Validation: all six scalar/SSE2/SSSE3/SSE4.1/AVX2/NEON correctness suites,
41 Python tests, production bench 5551733, workflow lint and release dry
runs. NEON also passes under QEMU Cortex-A53, including full-engine perft
and single-/four-thread searches.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-11 23:50:26 +02:00
nocturn9xandCodex b7bfe4c8e6 Bound history updates without widening tables (bench 5551733)
Clamp depth-scaled bonuses and compute complete history updates in int32,
narrowing only the final value to int16. Apply continuation-history gravity
to each individual entry so its value remains bounded. Keep table layouts
unchanged and use the same helper for quiet and capture histories.

Add the matetrack overflow position as a UCI regression. It fails on the
old checked binary; the fixed engine also completes a 1M-node reproduction.
Checked and optimized make dev builds pass, as do all 36 Python tests and
a checked 280-position matetrack run without runtime failures.

Eight paired timed UCI runs measured -0.06% NPS change, with a 95% bootstrap
interval of [-1.98%, +1.92%]. Playing strength has not been tested.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-11 09:56:11 +02:00
nocturn9x d72809cf69 Always clamp variation count to the number of legal moves (bench 5247438) 2026-09-11 01:29:27 +02:00
nocturn9x e8a2611a88 Ensure MultiPV searches don't exclude best moves across ID iterations (bench 5247438) 2026-09-11 01:24:52 +02:00
nocturn9x 7c418f2f9b Print lowerbound and upperbound mates correctly (bench 5247438) 2026-09-11 01:18:41 +02:00
nocturn9x 5f2b6dca57 Clean up some of the more inconsequential AI assistance notes (bench 5247438) 2026-09-10 14:20:48 +02:00
nocturn9x 6a313a2c41 Windows is fucking weird bro (bench 5247438) 2026-09-10 10:48:50 +02:00
nocturn9x fa63f28c19 Switch to TI net (tyrfing) (bench 5247438) 2026-09-10 10:35:14 +02:00
nocturn9x 17f8102a9b Finalize TI inference (SIMD & scalar). Currently using pawnocchio's arch (bench 5834033) 2026-09-09 21:53:51 +02:00
nocturn9x 1e2d2b0dc8 Add notes on AI usage (bench 5834033) 2026-09-09 14:28:26 +02:00
nocturn9x 6370fb5941 Update license headers, clean up README, clarify licensing of third party content (bench 5834033) 2026-09-09 14:20:22 +02:00
nocturn9x 97aab4aea2 Complete threat inputs indexing and refresh logic (bench 5834033) 2026-09-09 14:09:55 +02:00
nocturn9x c7b02fbe1a Initial work on threat inputs indexing (bench 5834033) 2026-09-09 00:32:50 +02:00
nocturn9xandGPT-6 Astra 00b1950b87 Pack pieces into one byte (bench 5834033)
Store piece kind and color in a private uint8 payload, add construction and field access helpers, and migrate all constructors. Add packed representation tests while preserving defaults and sentinels.

Validated with make dev, packed-piece, move-generation and NNUE tests, and all 35 Python regression tests.

Co-authored-by: GPT-6 Astra <codex@openai.com>
2026-09-08 18:32:38 +02:00
nocturn9x f4156c9c00 Update README (bench 5834033) 2026-09-08 15:08:56 +02:00
nocturn9xandCodex 6a73b1ec86 Make distinct board iterators Nim 2.2 compatible (bench 5834033)
Use explicit safe iterators for File, Rank, and Square traversal so compile-time generation remains compatible with Nim 2.2.2 and newer. Relax the Nimble and README version requirements accordingly.

Co-authored-by: Codex (GPT-6) <codex@openai.com>
2026-09-08 11:44:42 +02:00
nocturn9xandCodex 35293bafaa Add DFRC genfens starts and randomize default opening length (bench 5834033)
Use the seeded generator for independent DFRC back ranks and an equal choice of 8 or 9 plies per opening. Preserve explicit lengths and use doMove for known legal moves. Document the options and add regression coverage.

Co-authored-by: Codex (GPT-6) <codex@openai.com>
2026-09-07 18:23:05 +02:00
nocturn9xandCodex 899f031976 Support configurable L1 bias scaling (bench 5834033)
Rescale loaded L1 biases with L1_BIAS_SHIFT for networks that add
biases after requantization. Keep the default shift at zero for
existing networks and document bias compatibility and dual activation.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-07 15:35:01 +02:00
nocturn9xandCodex 79fd2b4a9c Add OpenBench genfens support (bench 5834033)
Co-authored-by: Codex (GPT-5.6 Luna) <codex@openai.com>
2026-09-07 15:34:30 +02:00
nocturn9x e110f2419e Bump version to 1.5.1 (bench 5834033) 2026-09-07 10:34:30 +02:00
nocturn9xandCodex 344fed5589 docs: record carryover experiments and final validation (bench 5834033)
Document retained limiter, NNUE and PGO improvements, rejected prefetch trials, correctness findings, measured intervals, regression coverage, and reproduction commands.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-06 13:10:03 +02:00
nocturn9xandCodex 1fdb162c76 build: add opt-in profile-guided native builds (bench 5834033)
Train a separate instrumented executable on configurable node and time workloads, merge its profiles, and rebuild with profile use. Preserve EXE overrides, reject standalone-test training, and leave default dev and OpenBench behavior unchanged.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-06 13:09:46 +02:00
nocturn9xandCodex 708803afd7 feat(bench): add paired UCI workload measurements (bench 5834033)
Run normalized FEN subsets with real node or time budgets, recording final search summaries and optional perf counters. Require per-position node/depth/best-move agreement for deterministic comparisons and cover the driver with regression tests.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-06 13:09:42 +02:00
nocturn9xandCodex 96d6d73c92 perf(nnue): share move decoding across accumulator perspectives (bench 5834033)
Reuse the existing scalar and SIMD update kernels with one move decode for both perspectives, retaining the separate king-refresh path. Extend fresh-versus-incremental checks to all Chess960 castling arrangements, including stationary pieces and king/rook swaps.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-06 13:08:53 +02:00
nocturn9xandCodex 7fe35dcf29 perf(search): skip unnecessary hard-limit dispatch (bench 5834033)
Cache active limit kinds and bypass limit-list scans when no hard budget can expire. Keep node limits unconditional and preserve the 1024-node clock sampling cadence. Correctness and limiter regressions are introduced separately.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-06 13:08:30 +02:00
nocturn9xandCodex f2befa5a4d fix(search): complete all MultiPV lines at the depth limit (bench 5834033)
Check depth limits between whole iterative-deepening iterations instead of interrupting later PV lines. Preserve real node and time cutoffs, including mixed budgets, and cover limiter state transitions with mandatory diagnostics.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-06 13:07:49 +02:00
nocturn9xandCodex 27b192eee2 fix(search): keep aspiration retries above quiescence (bench 5834033)
Clamp root retry depth to one so repeated fail-high reductions cannot return an empty quiescence PV and stop before the node budget. Strengthen the warm-TT and late-worker regression.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-06 13:07:04 +02:00
nocturn9xandCodex e5e52a4946 docs: record audit results and validation workflows (bench 5834033)
Document retained and reverted experiments from both audit passes, aggregate measurements, correctness coverage, limitations and reproduction commands.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 22:07:33 +02:00
nocturn9xandCodex 6e2f8df714 perf(search): pre-index continuation-history rows (bench 5834033)
Transpose continuation history for sibling locality and resolve the shared 1/2/4-ply row pointers once per move list. Keep all score/update semantics and omit quiet-history code from capture-only scoring.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 22:07:08 +02:00
nocturn9xandCodex 6c42b7a8dd perf(movegen): specialize pawn generation by color (bench 5834033)
Select a compile-time pawn generator for each color so shifts, source offsets and rank masks are constants. Preserve move ordering and legality masks.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 22:06:43 +02:00
nocturn9xandCodex 7cc48030f9 perf(movegen): defer special-move metadata loads (bench 5834033)
Read king/rook metadata only in the branches that need it, and obtain the previous en-passant target from the copied position. Avoid keeping unused values live across position-stack growth.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 22:06:19 +02:00
nocturn9xandCodex f2fb343556 perf(movegen): simplify castling targets and clearance masks (bench 5834033)
Use direct home-rank king/rook destinations and one union occupancy test per side. Preserve Chess960 occupancy removal and attack-path checks.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 22:05:47 +02:00
nocturn9xandCodex 2f430bd5cb perf(search): specialize quiescence move scoring (bench 5834033)
Make the picker/scorer's quiescence mode static and skip killer/countermove probes that cannot match captures. Depends on capture-only generation excluding quiet castling.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 22:05:17 +02:00
nocturn9xandCodex f2657d025f fix(movegen): exclude castling from capture-only generation (bench 5834033)
Restore the capture-only contract used by quiescence. Add capture-list/state/hash/undo/clone invariants, all special-move flags, and cleared castling paths for all 960 arrangements and both colors.

This correctness fix changes search nodes; throughput measurements use a separately saved capture-correct baseline.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:23:50 +02:00
nocturn9xandCodex 4477560e9e fix(bench): use elapsed time for multithreaded throughput (bench 5725647)
Keep CPU timing for single-thread benchmarks and use monotonic wall time for multithreaded NPS instead of summed process CPU time.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:23:14 +02:00
nocturn9xandCodex 4ba8d3b2f9 perf(nnue): reuse worker state and copy only live frames (bench 5725647)
Introduce idle-state copyFrom, retain worker allocations across setup/network changes, and copy only live accumulator/update prefixes. Extend NNUE regressions to cover reused storage and self-rebinding.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:22:41 +02:00
nocturn9xandCodex 7954d5010a fix(nnue): allocate an accumulator for the deepest search ply (bench 5725647)
Reserve the root frame plus all 255 search plies. Add incremental/full-refresh checks covering delayed updates, clone undo, special moves and eager/lazy depth boundaries; mandatory checks use doAssert.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:22:09 +02:00
nocturn9xandCodex 7f66a42a4c perf(see): specialize the evaluation context at compile time (bench 5725647)
Remove runtime selection of SEE weight arrays by making the caller's context static.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:21:26 +02:00
nocturn9xandCodex 1018f5c1a4 fix(memory): preserve alignment and advise full huge-page ranges (bench 5725647)
Round allocations to their required alignment, advise the entire allocation, and retain aligned allocation/free when THP is unavailable. Add a forced noTHP path and alignment regressions.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:21:01 +02:00
nocturn9xandCodex 14ded78eab perf(position): keep position stacks plain-data (bench 5725647)
Remove the custom copy hook so shrinking a position stack does not clear popped entries. Enforce the raw-copy contract with a compile-time doAssert.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:20:35 +02:00
nocturn9xandCodex 70edfdcdfc perf(movegen): retain the move-list append index (bench 5725647)
Keep the list length across the move store to avoid an aliasing reload.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:20:09 +02:00
nocturn9xandCodex 5ef4974993 fix(search): clear stale worker node totals before dispatch (bench 5725647)
Reset idle worker counters before enqueuing Go so short node-limited searches cannot observe previous-search totals. Add node-limit, worker-restart and affinity-based regressions.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:19:32 +02:00
nocturn9xandCodex 61d82a67d8 fix(uci): avoid reallocating an unchanged hash size (bench 5725647)
Compare configured MiB with configured MiB instead of comparing MiB with the transposition-table entry count. Cover repeated size settings.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:19:03 +02:00
nocturn9xandCodex 297963ee3f fix(uci): reject unsupported searches before worker dispatch (bench 5725647)
Validate unsupported time controls and pondering synchronously so rejected requests cannot strand the busy flag or block stop/wait. Test rejected requests and allowed time-control exemptions.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:18:35 +02:00
nocturn9xandCodex 3a3d37a563 fix(uci): validate command arguments and preserve token boundaries (bench 5725647)
Guard missing arguments and invalid depths, recognize whitespace and multiword options, and allow searchmoves before limits. Add parser integration regressions.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:18:08 +02:00
nocturn9xandCodex 79784c33d8 fix(tests): reject incomplete perft results and propagate failures (bench 5725647)
Validate perft summaries, repair imported verbose output and crash reporting, and return reliable suite exit statuses in serial and parallel modes. Include test-tool regressions.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:17:51 +02:00
nocturn9xandCodex 25073310c7 build: support focused audit tests and paired benchmarks (bench 5725647)
Allow standalone MAIN targets and extra Nim flags through make dev. Add paired search/perft measurements and focused NNUE inference and worker-setup benchmarks.

Co-authored-by: Codex (GPT-6 Astra) <codex@openai.com>
2026-09-05 21:17:20 +02:00
nocturn9x c8ad8b2806 Add AGENTS.md (bench 5725647) 2026-09-05 09:54:21 +02:00
nocturn9x 01948cb2fe The most important change ever in the history of heimdall (autism go brrrr) (bench 5725647) 2026-09-03 20:48:02 +02:00
nocturn9x 2acfb53bfa Add dummy handler for register command (bench 5725647) 2026-09-03 20:45:52 +02:00
nocturn9x f41874315d Keep track of and print lines that failed high/low, make pretty logs even prettier (lov u codex) (bench 5725647) 2026-09-03 20:16:25 +02:00
nocturn9x dcc7d7c614 Ensure at least 8MiB of stack space are available on all platforms (bench 5725647) 2026-09-03 19:38:35 +02:00
nocturn9x ef22de4886 Use incremental NNUE updates in policy eval (bench 5725647) 2026-08-29 13:59:53 +02:00
nocturn9x 52b610a101 Add static evaluation mode to relabeler (bench 5725647) 2026-08-29 13:56:28 +02:00
nocturn9xandCodex 50353a4631 Compute threats lazily (bench 5725647)
Co-authored-by: Codex <codex@openai.com>
2026-08-25 11:38:31 +02:00
nocturn9xandCodex 5d46ea5dac Reduce position stack overhead (bench 5725647)
Co-authored-by: Codex <codex@openai.com>
2026-08-25 11:12:12 +02:00
nocturn9x 556c9c8a6e Simplify transposition table ownership (bench 5725647) 2026-08-25 11:12:12 +02:00
nocturn9xandCodex e191ee8ac2 Speed up parallel relabelling (bench 5725647)
Co-authored-by: Codex <codex@openai.com>
2026-08-25 11:12:12 +02:00
nocturn9xandCodex f37f0ffd3d Make relabel depth optional (bench 5725647)
Co-authored-by: Codex <codex@openai.com>
2026-08-25 11:12:12 +02:00
nocturn9xandCodex 94af695bda Print relabel progress in place (bench 5725647)
Co-authored-by: Codex <codex@openai.com>
2026-08-25 11:12:11 +02:00
nocturn9xandCodex c1e0f7a708 Report live relabel chunk progress (bench 5725647)
Co-authored-by: Codex <codex@openai.com>
2026-08-25 11:12:11 +02:00
nocturn9xandCodex 11dc969671 Add relabel progress and ETA reporting (bench 5725647)
Co-authored-by: Codex <codex@openai.com>
2026-08-25 11:12:11 +02:00
nocturn9xandCodex 9a598e40e3 Add parallel viriformat relabel command (bench 5725647)
Co-authored-by: Codex <codex@openai.com>
2026-08-25 11:12:10 +02:00
nocturn9x b607a75fd9 Top 40 babyyy (bench 5725647) 2026-07-14 20:08:03 +02:00
nocturn9xandGPT 5.6 Sol d6a3386753 Speed up move generation and position updates (bench 5725647)
Co-authored-by: GPT 5.6 Sol <codex@openai.com>
2026-07-09 22:04:00 +02:00
nocturn9x c010a37702 Update ratings (bench 5725647) 2026-07-07 12:47:00 +02:00
nocturn9x d8ec13e049 Remove dead lists, add row for 1.5, format tables (bench 5725647) 2026-06-29 10:27:17 +02:00
nocturn9x fcdbbdbbd0 Ensure move list can hold up to 218 moves (bench 5725647) 2026-06-26 14:09:21 +02:00
nocturn9x a7b7dad514 Nonfunctional changes (bench 5725647) 2026-06-25 18:47:57 +02:00
nocturn9xandClaude Opus 4.8 d3b1e0f7d1 Add en passant moves to the search histories (bench 5725647)
Removes the temporary `and not move.isEnPassant()` guards that kept en
passant out of capture history, capture-history LMR, ttCapture and the
failed-capture malus. En passant now scores and updates capture history
like any other capture, with the victim looked up via captureSquare().

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 21:02:37 +02:00
nocturn9xandClaude Opus 4.8 5dedf549b6 Treat en passant as a capture and add captureSquare() helper (bench 5775715)
isCapture() now returns true for en passant moves; the new captureSquare()
helper disambiguates the to-be-captured square (targetSquare for normal
captures, targetSquare xor 8 for en passant). movegen and eval route the
captured-piece lookup through it, removing the bespoke ep square math and
the separate ep-removal block.

En passant is deliberately kept out of the search histories for now via
explicit `and not move.isEnPassant()` guards, so bench is unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 20:55:15 +02:00
nocturn9x 3853ff5db2 Do not require the main thread to wait for all workers to start when running multithreaded searches (bench 5775715) 2026-06-23 19:55:31 +02:00
nocturn9x a882f5825b Go back to initializing NNUE state only in the main thread and copying into workers (bench 5775715) 2026-06-22 20:57:41 +02:00
nocturn9x a519cca795 Make pretty logs print nps in Millions or Billions if the value is large enough (bench 5775715) 2026-06-22 12:34:19 +02:00
nocturn9x 807763e8a4 Update default king bucket scheme (bench 5775715) 2026-06-21 19:43:59 +02:00
nocturn9x 071ff691de Fix all.txt in test suite (bench 5775715) 2026-06-21 13:16:45 +02:00
nocturn9x 61492b6b13 Modularize UCI monolith, remove unused TUI utilities (bench 5775715) 2026-06-21 09:51:07 +02:00
nocturn9x 6169d70ade Implement more robust handling of not-in-a-git-repo condition when grabbing version hash (bench 5775715) 2026-06-21 09:28:36 +02:00
nocturn9x b8e2dc93cb Add NNUE-as-policy functionality, minor documentation fix in NUMA utility (bench 5775715) 2026-06-20 22:40:18 +02:00
nocturn9x ca2d308bc2 Update README (bench 5775715) 2026-06-18 11:52:22 +02:00
nocturn9x 448ca6670b Update TODOs (bench 5775715) 2026-06-18 11:18:45 +02:00
nocturn9x 8a84481f8d Document recovered TUI analysis features (bench 5775715) 2026-06-18 11:06:21 +02:00
nocturn9x 28f116d43c Honor score normalization setting in TUI (bench 5775715) 2026-06-18 11:02:35 +02:00