Publius - public domain teaching engine

Discussion of chess software programming and technical issues.

Moderator: Ras

abulmo2
Posts: 471
Joined: Fri Dec 16, 2016 11:04 am
Location: France
Full name: Richard Delorme

Re: Publius - public domain teaching engine

Post by abulmo2 »

benvining wrote: Mon Jun 30, 2025 8:15 pm My suggestion is to move to using CMake. It's more cross-platform and way more powerful than Make
I wonder on which platform cmake is available but make is not. Usually cmake builds a makefile and calls make on it. Personally I think cmake is overkill for something as simple as a chess engine.
Richard Delorme
benvining
Posts: 37
Joined: Fri May 30, 2025 10:18 pm
Full name: Ben Vining

Re: Publius - public domain teaching engine

Post by benvining »

which platform cmake is available but make is not
Windows, and cmake also makes it easier to cross compile if you ever need to target iOS or other embedded platforms.

It's not just about portability though, cmake allows you to use Ninja which can speed up the build dramatically. I also use cmake to configure my Doxygen documentation build and all my tests, it's a complete solution.
abulmo2
Posts: 471
Joined: Fri Dec 16, 2016 11:04 am
Location: France
Full name: Richard Delorme

Re: Publius - public domain teaching engine

Post by abulmo2 »

benvining wrote: Tue Jul 01, 2025 8:03 pm
which platform cmake is available but make is not
Windows,
Gnu make is available for windows. and nmake is part of Microsoft visual Studio.
and cmake also makes it easier to cross compile if you ever need to target iOS or other embedded platforms.

It's not just about portability though, cmake allows you to use Ninja which can speed up the build dramatically. I also use cmake to configure my Doxygen documentation build and all my tests, it's a complete solution.
You can cross compile with a makefile. You can target several compilers with a makefile. You can do pgo build with a makefile (not impossible but quite complex with cmake), etc.

As a chess programmer, my need is to do debug version, code coverage version, profiled version , etc of my code, to test and understand it. A Makefile is a perfect tool for that. Chess programs are simple, a few kilolines of code, a dozen files in a single src directory, with no dependency. CMake is a great tool for more complex projects, with hundred of files, millions if lines of code, multiple dependencies, etc. to build an editor, a chess gui, a compiler, etc. but I think it is too complex for a chess program, with more drawbacks than benefits.
Richard Delorme
benvining
Posts: 37
Joined: Fri May 30, 2025 10:18 pm
Full name: Ben Vining

Re: Publius - public domain teaching engine

Post by benvining »

abulmo2 wrote: Tue Jul 01, 2025 9:03 pm it is too complex for a chess program
I don't think that Make is inherently less complex or easier to write than a CMakeLists.txt file. For any C/C++ project of any size, my opinion is that CMake is the way to go, as it is a defacto industry standard and offers the best IDE integrations.

My current chess engine project consists of:
  • A core chess library: provides board representation, move generation, FEN/PGN handling, etc
  • Unit tests for this core library, including a perft executable
  • Doxygen documentation for this core library
  • The engine executable itself
It's not a huge project, but it's still more than just a single executable. Of course this isn't the only way to architect a chess engine, but my point is that using a proper modern build system empowers you to expand/reorganize the project as needed. For example, I plan on adding a custom binary book format, which will require a helper cli tool to take PGN files and compile them to the binary format.
abulmo2 wrote: Tue Jul 01, 2025 9:03 pm more drawbacks than benefits
What drawbacks does CMake have that Make does not? Any complaints about the CMake scripting language I think also apply to Make.
PK
Posts: 907
Joined: Mon Jan 15, 2007 11:23 am
Location: Warsza

Re: Publius - public domain teaching engine

Post by PK »

Publius went NNUE. The net can be used independently or alongside the handcrafted evaluation, and the AVX2 version is likely above 3100 Elo.

The net has been trained by Bullet on a less-than-ideal set of Ethereal + lichess_big3_resolved + a small amount of Publius-generated data.

Public domain teaching engine does not need more strength, but there is a stability issue i need to fix. After that it will be version 1.0 and a done project.
User avatar
Rebel
Posts: 7378
Joined: Thu Aug 18, 2011 12:04 pm
Full name: Ed Schröder

Re: Publius - public domain teaching engine

Post by Rebel »

PK wrote: Thu Sep 11, 2025 9:07 am Publius went NNUE. The net can be used independently or alongside the handcrafted evaluation, and the AVX2 version is likely above 3100 Elo.

The net has been trained by Bullet on a less-than-ideal set of Ethereal + lichess_big3_resolved + a small amount of Publius-generated data.

Public domain teaching engine does not need more strength, but there is a stability issue i need to fix. After that it will be version 1.0 and a done project.
Great news Pawel.
90% of coding is debugging, the other 10% is writing bugs.
Frank Quisinsky
Posts: 7042
Joined: Wed Nov 18, 2009 7:16 pm
Location: Gutweiler, Germany
Full name: Frank Quisinsky

Re: Publius - public domain teaching engine

Post by Frank Quisinsky »

Hi Pawel,

nice to see that you are working on a chess engine, now with Neural Network.
I hope you will make the compiles of Publius later available on GitHub?

Jim Ablett made three compile, date 250612 dev.
- Jim Ablett D/L: https://drive.proton.me/urls/4BCFDS43YW#BI9DbAtyM03P

BTW:
To Rodent ...
On your website: IV 0.22 ... http://www.pkoziol.cal24.pl/rodent/history.htm
On RWBC: IV 0.30, compiles by Günther Simon ... https://rwbc-chess.de/download.htm
On GitHub: IV 0.33, compiles by Jim Ablett
- GitHub: https://github.com/nescitus/rodent-iv
- Jim Ablett D/L: https://drive.proton.me/urls/PTVMHF8H4M#1ykDR0c2WuSw (250318)

Maybe a good idea to make 0.33 on the old Rodent website available too?!
Or compiles on GitHub?

Ed Schröder:
https://rebel13.nl/windows/rodent-nn.html

Ed Schröder made Rodent with NNUE available (211218).
Not longer available on the site by Ed, but in REPO with JA compiles by Jim Ablett:
- Jim Ablett D/L: https://drive.proton.me/urls/9TRAQG8SXC#3J2pemAZ0DpV (240513)

Ed Schröder made Rodent with NN available (220331).
Not longer available on the site by Ed, but in REPO with JA compiles by Jim Ablett:
- Jim Ablett D/L: https://drive.proton.me/urls/9TRAQG8SXC#3J2pemAZ0DpV (241008)

Very complicated to search and finds all this today!

Best
Frank