GtpEngine version 1.4 has been released. GtpEngine is a C++ implementation of the Go Text Protocol released under the LGPL. The major new feature is support for interrupting commands. The source code is available from:
http://www.cs.ualberta.ca/~emarkus/amigogtp/
- Markus
That's not useful however unless it's part of the standard. I'm not particularly interested in a library that has a non-standard way of working around the GTP protocol.
- Don
On Wed, 2007-03-07 at 11:41 -0700, Markus Enzenberger wrote:
GtpEngine version 1.4 has been released. GtpEngine is a C++ implementation of the Go Text Protocol released under the LGPL. The major new feature is support for interrupting commands. The source code is available from:
http://www.cs.ualberta.ca/~emarkus/amigogtp/
- Markus
gtp mailing list gtp@lists.lysator.liu.se http://lists.lysator.liu.se/mailman/listinfo/gtp
But that is not meant in any way to be critical of your fine work.
Thanks for posting the information - I will take a look at it.
- Don
On Wed, 2007-03-07 at 15:08 -0500, Don Dailey wrote:
That's not useful however unless it's part of the standard. I'm not particularly interested in a library that has a non-standard way of working around the GTP protocol.
- Don
On Wed, 2007-03-07 at 11:41 -0700, Markus Enzenberger wrote:
GtpEngine version 1.4 has been released. GtpEngine is a C++ implementation of the Go Text Protocol released under the LGPL. The major new feature is support for interrupting commands. The source code is available from:
http://www.cs.ualberta.ca/~emarkus/amigogtp/
- Markus
gtp mailing list gtp@lists.lysator.liu.se http://lists.lysator.liu.se/mailman/listinfo/gtp
gtp mailing list gtp@lists.lysator.liu.se http://lists.lysator.liu.se/mailman/listinfo/gtp
On Wednesday 07 March 2007, Don Dailey wrote:
That's not useful however unless it's part of the standard.
interrupting commands was a feature that I needed personally, and I think that it could be useful for other people, too. I agree that it would be preferable to have such a feature included in future versions of the standard.
Support for interrupting is enabled in GtpEngine only, if it is compiled with GTPENGINE_INTERRUPT=1. You can view it as a reference implementation of a proposal for an extension to the GTP standard. This extension is already used in practice in some Go engines (like Explorer, NeuroGo and Crazy Stone).
The way, in which GtpEngine implements interrupting, is by receiving a special comment line "# interrupt". This is non-intrusive and does not create problems with GTP version 1 and 2. Engines that do not understand it will simply ignore it as any other comment lines.
Also, to my knowledge, the only GTP controllers who presently use interrupting are GoGui (http://gogui.sf.net) and some tools of the GoGui package. They will only use it, if the GTP engine indicates that it supports interrupting by implementing the GTP extension command gogui-interrupt.
- Markus
So this is becoming the defacto standard although it isn't part of GTP.
What are you using this for? Just for stopping the engine or are you using it to implement other interesting features such as pondering?
- Don
On Wed, 2007-03-07 at 14:05 -0700, Markus Enzenberger wrote:
On Wednesday 07 March 2007, Don Dailey wrote:
That's not useful however unless it's part of the standard.
interrupting commands was a feature that I needed personally, and I think that it could be useful for other people, too. I agree that it would be preferable to have such a feature included in future versions of the standard.
Support for interrupting is enabled in GtpEngine only, if it is compiled with GTPENGINE_INTERRUPT=1. You can view it as a reference implementation of a proposal for an extension to the GTP standard. This extension is already used in practice in some Go engines (like Explorer, NeuroGo and Crazy Stone).
The way, in which GtpEngine implements interrupting, is by receiving a special comment line "# interrupt". This is non-intrusive and does not create problems with GTP version 1 and 2. Engines that do not understand it will simply ignore it as any other comment lines.
Also, to my knowledge, the only GTP controllers who presently use interrupting are GoGui (http://gogui.sf.net) and some tools of the GoGui package. They will only use it, if the GTP engine indicates that it supports interrupting by implementing the GTP extension command gogui-interrupt.
- Markus
gtp mailing list gtp@lists.lysator.liu.se http://lists.lysator.liu.se/mailman/listinfo/gtp
On Wed March 7 2007 14:30, Don Dailey wrote:
What are you using this for? Just for stopping the engine
I used it originally with NeuroGo, because NeuroGo does global search and can be interrupted at any time and play the best move so far. Most other Go programs had no meaningful way to interrupt move generation at an arbitrary time (that only recently changed with the new MC algorithms).
or are you using it to implement other interesting features such as pondering?
Pondering is an implementation detail of a GTP engine, I see no reason why there should be support for pondering in the protocol.
The way GtpEngine implements pondering is that it calls the function GtpEngine::Ponder() in a different thread than the command thread, whenever the engine is sitting and waiting for the next command. GtpEngine ensures that Ponder() and any other function of the Go engine can never execute concurrently, so there are no thread-safety requirements on the engine.
- Markus
On Wed, 2007-03-07 at 15:46 -0700, Markus Enzenberger wrote:
or are you using it to implement other interesting features such as pondering?
Pondering is an implementation detail of a GTP engine, I see no reason why there should be support for pondering in the protocol.
But there is actually a GOOD reason to support it.
Having support from the protocol is a huge blessing and lowers the barrier for less experienced programmers substantially.
Also, it's not like it adds a great deal of complexity to a new GTP protocol, it only requires one additional provision, the ability to pass a ponder move to the controller. Of course a controller or user interface doesn't have to support pondering just because it's possible and an engine does not have to ponder (or pass a ponder move) if it wants to implement pondering it's own way.
This is not a big deal to me. I know how to do pondering without support of the protocol (Lazarus ponders on CGOS) and my only motivation for suggesting it is that the less experienced programmers will thank you for it. If you are the competitive type you may not want that :-)
- Don