Chal v1.3.2 release

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

namanthanki
Posts: 6
Joined: Wed Mar 04, 2026 12:39 pm
Full name: Naman Thanki

Chal v1.3.2 release

Post by namanthanki »

Hi all,

I've just tagged v1.3.2 of Chal, a compact UCI engine written in C99.

This release focuses on search clarity, evaluation improvements, and cleaner internal state handling. The engine now comes in at 919 lines of code.

Estimated strength is ~2400 Elo.

Recent SPRT testing (8+0.08, UHO_Lichess_4852_v1.epd):

v1.3.2 vs v1.3.1
Elo: +77.84 ± 28.76 | LOS: 100%

v1.3.1 vs v1.3.0
Elo: +184.00 ± 41.00 | LOS: 100%

The main gain in this release comes from a search refactor. This reduced complexity and improved inlining opportunities for the compiler, resulting in roughly +30 Elo on its own.

Pawn evaluation has also been expanded. Explicit passed pawn detection replaces the previous implicit PST-only handling. Passed pawns now receive rank-scaled bonuses, with additional weight in endgames when the pawn is far advanced.

The PeSTO piece-square tables were refreshed and retuned. Pawn evaluation also received minor tuning to better capture common positional structures seen in recent testing games.

On the search side, quiescence delta pruning was retuned, and check extensions were made more selective to reduce unnecessary search expansion while preserving tactical accuracy.

Internally, the engine state structure was updated:
non_pawn_count[2] -> piece_count[2][6]

This enables per-piece tracking while still allowing constant-time null-move guards, and should also make future evaluation tuning easier.

Draw detection was tightened as well. Repetition checking now uses stricter hash equality, and insufficient material detection now correctly handles all basic cases (KvK, KNvK, KBvK). Some edge cases around the 50-move rule boundary were also fixed.

A huge thanks again to Pawel Koziol (nescitus) for his continued mentorship, code reviews, and concrete contributions. Many of the evaluation refinements, state structure changes, and search clarity improvements in this release benefited directly from his guidance.

GitHub: https://github.com/namanthanki/chal/releases/tag/1.3.2
chesskobra
Posts: 365
Joined: Thu Jul 21, 2022 12:30 am
Full name: Chesskobra

Re: Chal v1.3.2 release

Post by chesskobra »

This is a very interesting project, and I am watching it to learn a few things.

I get the following error when I try to compile with make on linux.

Code: Select all

mkdir -p bin
gcc -O2 -Wall -Wextra -pedantic -std=gnu99 -DVERSION=\"1.3.0\" src/chal.c -o bin/chal
/usr/bin/ld: /tmp/cc68R9MG.o: in function `uci_loop':
chal.c:(.text+0x36ba): undefined reference to `log'
/usr/bin/ld: chal.c:(.text+0x36cd): undefined reference to `log'
collect2: error: ld returned 1 exit status
make: *** [Makefile:21: bin/chal] Error 1
namanthanki
Posts: 6
Joined: Wed Mar 04, 2026 12:39 pm
Full name: Naman Thanki

Re: Chal v1.3.2 release

Post by namanthanki »

chesskobra wrote: Sun Mar 15, 2026 11:25 am This is a very interesting project, and I am watching it to learn a few things.

I get the following error when I try to compile with make on linux.

Code: Select all

mkdir -p bin
gcc -O2 -Wall -Wextra -pedantic -std=gnu99 -DVERSION=\"1.3.0\" src/chal.c -o bin/chal
/usr/bin/ld: /tmp/cc68R9MG.o: in function `uci_loop':
chal.c:(.text+0x36ba): undefined reference to `log'
/usr/bin/ld: chal.c:(.text+0x36cd): undefined reference to `log'
collect2: error: ld returned 1 exit status
make: *** [Makefile:21: bin/chal] Error 1
Hi chesskobra,
Thank you for letting me know this, I've updated the Makefile, it should work fine now! sorry for the bad Makefile.
chesskobra
Posts: 365
Joined: Thu Jul 21, 2022 12:30 am
Full name: Chesskobra

Re: Chal v1.3.2 release

Post by chesskobra »

Thanks. It worked.