Since you’re here...

We hope you will consider supporting us today. We need your support to continue to exist, because good entries are more and more work time. Every reader contribution, however big or small, is so valuable. Support "Chess Engines Diary" even a small amount– and it only takes a minute. Thank you.
============================== My email: jotes@go2.pl



Petrel 3.1 JA - new version chess engine (Linux, Android and Windows)


Petrel, about the engine:

This engine is not strong, fast, or simple. It is relatively stable enough to serve as a sparring opponent for a weak engine.

The source code may be interesting for chess programmers due to several novel chess data structures.

The engine uses neither mailbox nor bitboard board representations. The fundamental data structure is a 16-byte vector: a vector of bytes for each chess piece on one side of the chessboard.

The engine incrementally updates the attack table using a unique data structure— a matrix of pieces and bitboards. Each bitboard rank is stored separately in one of 8 piece vectors. This allows a very fast implementation of the attackTo() function and relatively fast updates of the attack table state. The engine uses the so-called Reversed BitBoard (aka Hyperbola Quintessence) method for generating attacks of sliding pieces (bishops, rooks, queens).

Fully legal moves are generated in bulk from the attack matrix.

During the chess tree search, the engine does not distinguish between white and black playing sides. The PositionSide class represents a chess side without color specificity. Internally, squares are relative to each side's base rank, so all pawns push from RANK_2 and promote at RANK_8, both kings start at E1 square, etc.

Zobrist hashing uses only a few keys per piece type, which rotate to generate a key for each square. Changing the position's move side to move (null move) is a byte-reversed operation. This Zobrist implementation allows hash transpositions with color changes.

Author: Aleks Peshkov

Petrel 3.1 what's new?

First version with NNUE static evaluation. (768 -> (2*128) -> 1 scheme, bullet quantised.bin file).
minor time management improvement (petrel will spend more time on first moves)
CounterMove and FollowUpMove heuristics use first 2 legal moves out 4 in one slot (Move[Color][Piece][Square][4] array)
other minor move ordering improvements
Fixes from 3.0:

fixed serious evaluation accumulator incremental update bug
fixed code to use default bullet scale 400 and rebuild NN file for this scale (compatibility fix)
Attached linux binary file (requires external NN file in current working directory).

Windows/Linux & Android PGO builds by Jim Ablett (with embeded NN file):

Petrel 1.0 JA vs other engines:

Critter 1.6a0/16-1616 Games
Trout 1.0 JA4/14-614 Games
Senpai 2.0 JA0/14-1414 Games
Rebel Extreme 1.10/14-1414 Games
Molybdenum 4.1 JA0/14-1414 Games
Topas 1.3.3 JA6.5/13+013 Games
Defenchess 2.3 JA0/13-1313 Games
Pounce 1.2.4.8 JA3/11-511 Games
Rustic 3.99.0 JA6/10+210 Games
Wordfish 1.00/10-1010 Games
Integral 7 dev.8bab JA0/10-1010 Games
Spirit 0408250/10-1010 Games
Spirit 1008250/9-99 Games
Omega 100/8-88 Games
Knightx 4.50/8-88 Games
Stockfish dev-202508090/8-88 Games
YuliGM Pro 200/8-88 Games
ShashChess 390/7-77 Games
Benbot 1.4.44/4+44 Games
Belofte 2.1.9 (u) JA4/4+44 Games
Rustic 3.99.02.5/4+14 Games



Jim Ablett compiles:

Comments