Eubos v2.16
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