Skip to content

Lynx 1.4.1

Choose a tag to compare

@maelic13 maelic13 released this 28 May 20:07

This is the first public 1.4-series release. It includes the unreleased 1.4.0 TT/hash-move safety work together with 1.4.1 search hotpath and move-ordering improvements.

Highlights

  • Hardened TT/hash move handling so stale, aliased, or corrupted TT moves cannot enter search or emitted PVs.
  • Added validated TT-first move picking.
  • Improved UCI ponder support with TT-derived ponder fallback.
  • Reduced overhead in search hotpaths after the TT safety work.
  • Improved quiet move ordering with direct-check bonuses and expanded low-ply history.

Fixed

  • Fixed malformed TT/hash moves being accepted as searchable moves.
  • Fixed illegal PV risk from stale or corrupted TT moves, including SMP/hash-aliasing cases.
  • Fixed validation of impossible moves, wrong-side moves, friendly-occupied destinations, malformed king moves, and malformed special-move encodings before make_move.
  • Fixed fast legal validation for recaptures that remove a checking piece, such as ...gxf6 after Nxf6+.

Search And Move Ordering

  • Reworked move picking to emit a validated TT move first.
  • Skipped duplicate generated moves after the TT move has already been emitted.
  • Added a direct-check ordering bonus for quiet checking moves.
  • Expanded low-ply quiet history from 4 plies to 8 plies.
  • Skipped duplicate TT capture scoring in staged move picking.
  • Batched Lazy SMP shared node accounting so threaded search avoids aggregate atomic node increments on every node while still reporting exact final totals.

Ponder And PV Safety

  • Added TT-derived ponder fallback from the child position when the searched PV does not already contain a ponder move.
  • Ensured TT moves are canonicalized and legally validated before use in search, quiescence, PV construction, or ponder fallback.
  • Added PV replay safety coverage for tournament-derived malformed TT/hash-move positions at Threads=1 and Threads=8.

Tests And Validation

  • Added board-level pseudo-legal and legal move validation APIs for raw UCI or TT-shaped moves.
  • Added board benchmark coverage for direct legal move validation.
  • Added regression tests for:
    • friendly-occupied king moves
    • impossible king movement
    • malformed tournament-derived TT moves
    • pseudo-legal pinned moves
    • TT-first move picking
    • TT-derived ponder fallback
    • direct-check quiet move ordering
    • expanded 8-ply low-ply history boundaries
    • UCI PV replay legality with one and eight search threads