fix: rewrite Supersonic LUT generator, wire evaluator chain, parallelize tournaments

- Rewrite generate_tables() with HashMap-based BFS instead of broken
  sentinel-loop sorted array approach. The old generator used a
  zero-terminated loop that stopped prematurely when mid-array key
  insertions left gaps, producing invalid trie pointers.

- Re-enable auto-generation in load_or_generate() since the generator
  now works correctly (verified by exhaustive C(52,5) correctness test).

- Wire HandRunner::showdown() through Evaluator::instance() instead of
  calling AlgorithmicEvaluator directly, giving access to the full
  3-tier cascade (Supersonic -> Cactus Kev -> Algorithmic).

- Parallelize tournament series loop with rayon for multi-core speedup.

- Remove dead insert_key function and test (unused after generator rewrite).

- Fix tautological benchmark assertion in integration tests.
This commit is contained in:
Jan-Peter von Hunnius 2026-05-30 12:55:11 +02:00
parent a46a800d11
commit 458b8af580
8 changed files with 238 additions and 274 deletions

46
Cargo.lock generated
View file

@ -222,6 +222,25 @@ dependencies = [
"libc",
]
[[package]]
name = "crossbeam-deque"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
dependencies = [
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
version = "0.9.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
version = "0.8.21"
@ -283,6 +302,12 @@ dependencies = [
"windows-sys 0.61.2",
]
[[package]]
name = "either"
version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
[[package]]
name = "encode_unicode"
version = "1.0.0"
@ -439,6 +464,7 @@ dependencies = [
"once_cell",
"proptest",
"rand",
"rayon",
"serde",
"serde_json",
"sha2",
@ -752,6 +778,26 @@ dependencies = [
"rand_core",
]
[[package]]
name = "rayon"
version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
dependencies = [
"either",
"rayon-core",
]
[[package]]
name = "rayon-core"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
dependencies = [
"crossbeam-deque",
"crossbeam-utils",
]
[[package]]
name = "redox_syscall"
version = "0.5.18"