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.5 JA - new version chess engine


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

The previous version of Petrel 3.3.1 played in the chess league qualifiers, but did not advance to the TOP 64. We will see how this version fares in the 06/2026 edition.

Petrel 3.3.1 what's new?

Added bench command line parameter and UCI command. bench can have additional options valid for go command
Updated NN quantisation factors that improve evaluation precision.
Added Razoring and Reversed Futility Pruning upto depth 3.
More flexible and improved time management logic.
More aggressive Weak Moves Reductions (SEE) and prunings.
Better root moves ordering.
Change from 3.3:

Fixed time management calculation bug.

Petrel 3.3.1 JA vs other engines:

Clockwork 202603203/6+06 games
Raid 6.11.5/6-36 games
DarkSeid 10.6 SE1.5/6-36 games
SF-POLY 2103261.5/6-36 games
Artemis 28.4TR PrO1.5/6-36 games
Raphael 3.2.01/6-46 games
Stockfish dev-202603181/6-46 games
Stockfish 18 JA0.5/6-56 games
SF PB 2003260.5/6-56 games
Hlamnick 2003260/6-66 games
Revolution 5.0 0303261/4-24 games
Bread Engine 3.0.01/4-24 games
Alexandria 9.0.0 JA0.5/4-34 games
HypnoS EN 2.00/4-44 games
Zeppelin 1.4.22/2+22 games
Tunguska 2.02/2+22 games
Allaya 1.52/2+22 games
BenBot 1.7.52/2+22 games
Tilt Engine 1.32/2+22 games
Chal 1.3.22/2+22 games
Solo 1.6.02/2+22 games


Jim Ablett compiles:

Comments