Skip to content

Eubos v2.16

Compare
Choose a tag to compare
@cjbolt cjbolt released this 18 Dec 14:20
· 512 commits to master since this release

Full Changelog: v2.15...v2.16

Features

  • Internal iterative deepening
  • Revitalisation of multi-threaded execution to support use of Eubos on a Raspberry Pi

Tuning / Optimisation / Tweaks

  • Modify how data is stored on the stack when doing/undoing moves
  • Change Zobrist to store En Passant square in an array as opposed to a stack requiring boxing/unboxing
  • Optimise the updates of the Castling state flags
  • Major refactor to use bit offsets as name constants to address sqaures of the board, instead of long bitmasks
  • Cache the root transposition table entry in case it is overwritten during the search due to a hash clash
  • SearchResult object shall return root transposition to the caller
  • Don't run full construction at PlySearcher for each succesive iterative deepening event
  • Tweak Queen scoring in King Tropism function

Fixes

  • Correct defect in applying en passant square to a Position when detecting 3-fold repetitions
  • Fix crash bug in long games with over 250 moves
  • Correct defect in isPlayable(move) function
  • Correct defect causing occassional time forfeits in multi-threaded execution due to deadlocks

Quality

  • Use Eubos package internal BitBoard.INVALID rather than JCPI package Position.NOPOSITION
  • Overhauled synchronized sections and locking, removed obsolete synchronized sections
  • Audited logging to reduce cost of redundant String formatting when logging is disabled
  • Simplification of sendBestMove method in EubosEngineMain, functionality was dispersed over many methods across several classes
  • Consolidated hash update logic in FixedSizeTranspositionTable, this was dispersed acoss several classes

Potential Improvements

  • It seems there is an issue with this release, it may not be stronger that Eubos v2.15. I am investigating this issue