booot 7.0 final release

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

Moderator: Ras

User avatar
pohl4711
Posts: 2838
Joined: Sat Sep 03, 2011 7:25 am
Location: Berlin, Germany
Full name: Stefan Pohl

Re: booot 7.0 final release

Post by pohl4711 »

pohl4711 wrote: Wed Sep 14, 2022 3:15 pm
Cutechess-cli is not the problem. If it is used for testing by engine-developers, it is the solution for getting a proper working engine in all GUIs!
Forgot to say: Cutechess-cli is also used, playing the TCEC. Another good reason for using cuteches-cli for testing, not any of these "GUI"s, doing weird things...
Modern Times
Posts: 3780
Joined: Thu Jun 07, 2012 11:02 pm

Re: booot 7.0 final release

Post by Modern Times »

One of our testers a while ago reported that a handful of engines do have issues with concurrency under Cutechess-CLi, maybe Booot is one more.
booot
Posts: 86
Joined: Sun Jul 03, 2016 10:29 pm

Re: booot 7.0 final release

Post by booot »

pohl4711 wrote: Wed Sep 14, 2022 3:15 pm
booot wrote: Tue Sep 13, 2022 8:09 pm
Wolfgang wrote: Tue Sep 13, 2022 8:06 pm Our tester Jörg uses Cutechess GUI , not "cli".
No problems there too👍🤗
Hm.... So the bug nest is located. I will take a look to "cli' - i have never used it before.
The bug nest is the booot7 engine. Cutechess-cli is a commandline-tool. If an engine does not work there, it is buggy. If other GUIs ignore bogus engine outputs, that does not make the engine working correctly. Just hiding its buggy behaviour.
So, Cutechess-cli should always be the first test-tool for any engine. If an engine runs fine on this deep command-line level, without any GUI (doing weird things on their own), the engine is OK.
Strange thing here is: If I try to start a booot7-test gauntlet on a fresh restarted (offline) PC, some of the 20 booot-instances are terminating (as I wrote before). When I stop cutechess-cli and restart the gautlet immediately, then all 20 booot7 instances seem to run. So, perhaps a memory-allocation bug or so in booot7. Mention, that I tested more than 150 engines/versions in the last 2 years on this PC, using cutechess-cli. Never had such a strange behaviour of an engine until now. The illegal PV-move warnings were caused by some (rare) engines/versions before (first Uralochka for example). But they were all fixed by the engine authors.
Cutechess-cli is not the problem. If it is used for testing by engine-developers, it is the solution for getting a proper working engine in all GUIs!
I understand : problem is in Booot. May be some mistakes in UCI protocol implementation, may be some other bugs. I will take a look on this. It is interesting.
booot
Posts: 86
Joined: Sun Jul 03, 2016 10:29 pm

Re: booot 7.0 final release

Post by booot »

Modern Times wrote: Wed Sep 14, 2022 8:01 pm One of our testers a while ago reported that a handful of engines do have issues with concurrency under Cutechess-CLi, maybe Booot is one more.
Most probably the problem is somewhere in stdout-stdin implementation (for uci protocol). Delphi is quite uncommon language to make terminal applications. And i am not a programmer to 'feel' this. So the task could be even more difficult than increasing engine strength.
Pvt. Ryan
Posts: 65
Joined: Mon Sep 12, 2022 3:50 am
Location: Christchurch, NZ
Full name: Ray Bongalon

Re: booot 7.0 final release

Post by Pvt. Ryan »

Hi. How would you turn off the embedded neural network for chess engine matches under cutechess-cli? Cheers.
User avatar
Steve Maughan
Posts: 1307
Joined: Wed Mar 08, 2006 8:28 pm
Location: Florida, USA

Re: booot 7.0 final release

Post by Steve Maughan »

Hi Alex,

My main language is Delphi (although Maverick is written in C) and I'm creating a new chess engine in Delphi and grappling with the stdin and stdout interface at the moment. ChatGPT has been somewhat helpful. Currently I'm using the main thread to read the input (with a simple Readln command) and have the engine in a separate thread. I believe stdout is thread safe in that the engine thread, which will be the only thread to send output to stdout, can safely send commands.

— Steve
boot wrote: Wed Sep 14, 2022 9:29 pm
Modern Times wrote: Wed Sep 14, 2022 8:01 pm One of our testers a while ago reported that a handful of engines do have issues with concurrency under Cutechess-CLi, maybe Booot is one more.
Most probably the problem is somewhere in stdout-stdin implementation (for uci protocol). Delphi is quite uncommon language to make terminal applications. And i am not a programmer to 'feel' this. So the task could be even more difficult than increasing engine strength.
http://www.chessprogramming.net - Juggernaut & Maverick Chess Engine
User avatar
GONeill
Posts: 87
Joined: Sun Jun 15, 2014 6:40 am
Location: New Zealand
Full name: Graham O'Neill

Re: booot 7.0 final release

Post by GONeill »

Steve Maughan wrote: Fri Mar 24, 2023 6:21 pm Hi Alex,

My main language is Delphi (although Maverick is written in C) and I'm creating a new chess engine in Delphi and grappling with the stdin and stdout interface at the moment. ChatGPT has been somewhat helpful. Currently I'm using the main thread to read the input (with a simple Readln command) and have the engine in a separate thread. I believe stdout is thread safe in that the engine thread, which will be the only thread to send output to stdout, can safely send commands.

— Steve
Hi Steve,

I don't know about Delphi, but Lazarus/FPC has a Pipes unit and I use:

Code: Select all

   GUIinput:=TInputPipeStream.Create(StdInputHandle);
   GUIoutput:=TOutputPipeStream.Create(StdOutputHandle);
Seems to work OK.

Graham
User avatar
Steve Maughan
Posts: 1307
Joined: Wed Mar 08, 2006 8:28 pm
Location: Florida, USA

Re: booot 7.0 final release

Post by Steve Maughan »

Thanks Graham,

It looks like Delphi doesn't have this unit. I'll investigate further — maybe I can copy it from FPC.

— Steve
GONeill wrote: Sat Mar 25, 2023 4:09 am Hi Steve,

I don't know about Delphi, but Lazarus/FPC has a Pipes unit and I use:

Code: Select all

   GUIinput:=TInputPipeStream.Create(StdInputHandle);
   GUIoutput:=TOutputPipeStream.Create(StdOutputHandle);
Seems to work OK.

Graham
http://www.chessprogramming.net - Juggernaut & Maverick Chess Engine
User avatar
Roland Chastain
Posts: 692
Joined: Sat Jun 08, 2013 10:07 am
Location: France
Full name: Roland Chastain

Re: booot 7.0 final release

Post by Roland Chastain »

Hello everybody!
Steve Maughan wrote: Sat Mar 25, 2023 6:08 pm It looks like Delphi doesn't have this unit. I'll investigate further — maybe I can copy it from FPC.
I don't believe that you need pipes for an engine. You would need it rather for a GUI.

By the way, I remember that there is a Delphi version of the Process unit, but I cannot find where I downloaded it, and I no longer have it on my HD. I could search more if you are interested. But, once again, it is not needed for an engine.
Steve Maughan wrote: Fri Mar 24, 2023 6:21 pmCurrently I'm using the main thread to read the input (with a simple Readln command) and have the engine in a separate thread. I believe stdout is thread safe in that the engine thread, which will be the only thread to send output to stdout, can safely send commands.
This is what I do in my Pascal engines, and I never had problems. It has the advantage to make engines multiplatform, since you don't use any OS specific stuff. This is also what I did in a previous version of Booot that I modified to make it compatible with Linux.

Regards.

Roland
Qui trop embrasse mal étreint.

Author of Eschecs, a simple UCI chess GUI written in Pascal.