Moderator: Andres Valverde
9. Commands from the engine to xboard wrote:feature FEATURE1=VALUE1 FEATURE2=VALUE2 ...
...
debug (boolean, default 0)
If debug=1, it means the engine wants to send debug output prefixed by '#', which WinBoard should ignore, except for including it in the winboard.debug file. As this feature is added to protocol 2 ony late, so that not all protocol-2 supporting versions of WinBoard might implement it, it is important that engines check if WinBoard accepts the feature. If the feature is rejected, engines must refrain from sending the debug output, or do so at their own risk.
Teemu Pudas wrote:9. Commands from the engine to xboard wrote:feature FEATURE1=VALUE1 FEATURE2=VALUE2 ...
...
debug (boolean, default 0)
If debug=1, it means the engine wants to send debug output prefixed by '#', which WinBoard should ignore, except for including it in the winboard.debug file. As this feature is added to protocol 2 ony late, so that not all protocol-2 supporting versions of WinBoard might implement it, it is important that engines check if WinBoard accepts the feature. If the feature is rejected, engines must refrain from sending the debug output, or do so at their own risk.
Fermin Serrano wrote:where is this info published? I am looking at http://www.tim-mann.org/xboard/engine-intf.html and the above text is not there......
Teemu Pudas wrote:Fermin Serrano wrote:where is this info published? I am looking at http://www.tim-mann.org/xboard/engine-intf.html and the above text is not there......
I already linked to it.
http://home.hccnet.nl/h.g.muller/engine-intf.html#9
EugeneCarey wrote:
You should also point out that this is an unofficial extension to the winboard / xboard protocol and that it's quite possible that Muller's hacked winboard may be the only one to ever support it.
Others may support it in the future, but until such time you are better off not sending any unexpected output.
And since Muller's extension is optional, you'll have to support the possibility that the winboard gui doesn't accept it, so why bother expecting it to exist?
And since Muller made his own extensions (and still doing so), and still calling them v2, all it's really doing is causing confusion with the real, official v2 protocol.Muller should have made them v3 instead of v2. Since he didn't, follow the real specs is my advice.
And that means not sending any output that might confuse winboard. And it can happen. I've had it happen.
EugeneCarey wrote:You should also point out that this is an unofficial extension to the winboard / xboard protocol and that it's quite possible that Muller's hacked winboard may be the only one to ever support it.
EugeneCarey wrote:You should also point out that this is an unofficial extension to the winboard / xboard protocol and that it's quite possible that Muller's hacked winboard may be the only one to ever support it.
Others may support it in the future, but until such time you are better off not sending any unexpected output.
And since Muller's extension is optional, you'll have to support the possibility that the winboard gui doesn't accept it, so why bother expecting it to exist?
And since Muller made his own extensions (and still doing so), and still calling them v2, all it's really doing is causing confusion with the real, official v2 protocol.
Muller should have made them v3 instead of v2. Since he didn't, follow the real specs is my advice.
And that means not sending any output that might confuse winboard. And it can happen. I've had it happen.
Roger Brown wrote:EugeneCarey wrote:
You should also point out that this is an unofficial extension to the winboard / xboard protocol and that it's quite possible that Muller's hacked winboard may be the only one to ever support it.
Hello Eugene,
H.G. makes it clear that 4.3 is an independent development so I guess his hacks are to be understood to be relevant only to his project...
Others may support it in the future, but until such time you are better off not sending any unexpected output.
And since Muller's extension is optional, you'll have to support the possibility that the winboard gui doesn't accept it, so why bother expecting it to exist?
And since Muller made his own extensions (and still doing so), and still calling them v2, all it's really doing is causing confusion with the real, official v2 protocol.Muller should have made them v3 instead of v2. Since he didn't, follow the real specs is my advice.
Again, he did say why he did this. In his opinion he is not creating anything new, merely extending and clarifying possible gray areas in the protocol. I guess the full possibilities of protocol 2 (indeed Winboard) are yet to be fully explored much less stepped up to version 3.And that means not sending any output that might confuse winboard. And it can happen. I've had it happen.
Later.
H.G.Muller wrote:EugeneCarey wrote:You should also point out that this is an unofficial extension to the winboard / xboard protocol and that it's quite possible that Muller's hacked winboard may be the only one to ever support it.
Wrong:
it is the official extension of the protocol for WinBoard version 4.3 and higher. Which I do consider the main branch of WinBoard development. If you thnk there will ever be another version from Tim Mann's development team: keep on dreaming...
Others may support it in the future, but until such time you are better off not sending any unexpected output.
There are already other GUIs that are suporting some of the protocol extensions I introduced, (e.g. ChessGUI).
And since Muller's extension is optional, you'll have to support the possibility that the winboard gui doesn't accept it, so why bother expecting it to exist?
Because if you make your engine send protocol-violating output, (as virtually every engine does for debugging purposes), it is always better to only crash some GUIs than to crash all GUIs. In general prefixing a protocol-violating line with '#' will not increase its probability to confuse any known GUI; in the worst case they just skip over the '#'.
And since Muller made his own extensions (and still doing so), and still calling them v2, all it's really doing is causing confusion with the real, official v2 protocol.
Muller should have made them v3 instead of v2. Since he didn't, follow the real specs is my advice.
There is no danger of confusion, as the extensions are fully compliant with the existing v2 protocol.
The reaction of the GUI to receiving feature commands it does not recognize (e.g. like feature debug=1) is fully described by this protocol, and consists of rejected debug. The v2 protocol does not guarantee that every feature it defines will be implemented: it grants the GUI the right to refuse features.
Neither does it guarantee that every feature not in the original protocol definition will be rejected by the GUI. And even if it did, it seems a bit far-fetched to suppose that there will ever be an engine whose correct operation will depend on sending a nonexistent feature, and it then being rejected.
So if you can do something that work better in some cases, and never worse, do it. That is my advice...And that means not sending any output that might confuse winboard. And it can happen. I've had it happen.
In practce everyone just does it anyway, because the risk is small, and
the benifit enormous. And if they are going to do it anyway, they might as well prefix it with a '#' and send the debug=1 feature... They can do
that even if the feature is rejected, it would still be better than sending the lines without 'protection'. Because even if the GUI does not understand the '#' (e.g. because it is an obsolete WinBoard version), the lines will still end up in the debug file, and other programs that use the debug file (like TLCS) might benifit from the '#' prefix. It is more common for TLCS being confused by spurious engine output, than the GUI.
So my advice to engine authors is: never use the protocol v2 specification on Tim Mann's website, but always use mine. Then you can be 100% sure that your engine runs without problems on GUIs that only implement Tim Mann's version, but in addition it won't function sub-optimally when you are using a state-of-the-art GUI.
EugeneCarey wrote:Teemu, for example, though it was official winboard protocol.
EugeneCarey wrote:Caling it an "official extension" is an oxymoron.
If it's an official v2, then it's not an extension.
If it's an extension, then it can not be v2.
His is the official version 2.
If you want to do your own version, then great. No problem.
If you want to fork your own and make radical or minor changes, then fine. Just don't call it v2, because it's not.
Call it v2.1 or v3 or whatever, but it's not v2.
I didn't say it was or was not a good idea.
Oh yeah? Which problem?It is a change that can potentially cause problems.
Do # for your v2.1 extensions and don't send any unsafe output when using v2 does require a change.
Sending # lines to a v2 gui when there's a chance it'll cause problems is just plain foolish.
Teemu Pudas wrote:EugeneCarey wrote:Teemu, for example, though it was official winboard protocol.
No, I didn't! I just thought the opposite was so obvious that it didn't need to be explained.
Not to mention irrelevant - the description of the debug feature specifically warns that not all protocol-2 supporting versions of WinBoard might implement it. Remember this thread was originally only about sending debug info to Winboard...
H.G.Muller wrote:EugeneCarey wrote:Caling it an "official extension" is an oxymoron.
If it's an official v2, then it's not an extension.
If it's an extension, then it can not be v2.
Apparently we have different interpretation of what a version of the protocol means.
In my definition, a version is different if it prescribes things that might crash another version. Protocol v2 is different from v1 because it sends the protover command, and there is no guarantee that that command would not make a v1 engine crash. And indeed there are engines that do.
Version 2 defines the feature mechanism to let GUI and engine negociate what they can do. The document by Timm Man explicitly states that in protocol 2 any feature can be requested by the engine, even features that are not defined in that document.His is the official version 2.
If you want to do your own version, then great. No problem.
If you want to fork your own and make radical or minor changes, then fine. Just don't call it v2, because it's not.
Call it v2.1 or v3 or whatever, but it's not v2.
My document clearly states that you could call it v2f if you want. But what I am not going to do, is have WinBoard send anyting else but protover 2, as this might confuse some engines, where now no confusion is possible: engines that stick to the obsolete standard will simply never sent the feature command.I didn't say it was or was not a good idea.
You adviced against using it...
Oh yeah? Which problem?It is a change that can potentially cause problems.
Do # for your v2.1 extensions and don't send any unsafe output when using v2 does require a change.
Sending # lines to a v2 gui when there's a chance it'll cause problems is just plain foolish.
But people do it anyway. and if they intend to do it anyway, they might as well prefix it with '#'. That is all I am saying. It is safe for them to send feature debug=1 to a prototocol-2 GUI. If they want to know if it is supported, they should pay attention to the accepted / rejected responses.
If it is not supported, they should refrain from sending any debugging output, or do so at their own risk. This just explicitly describes what Tim Mann's version 2 already described implicitly. Stepping up the protocol number would not change anything to that: the fact that a GUI says it is using protover 3 need not imply it supports every feature of that version. This is also explicitly stated in Timm Mann's document. So even if I would call it v3, engines woud still have to test if the feature is accepted or not.
EugeneCarey wrote:Apparently. I think "official" means the real stuff and you think that any modified version that some hack puts toegher can also be called 'official'.
I advised against using it if you are trying to do a v2 protocol chess engine.
If an engine author *wants* to use unofficial extensions that somebody hacked together, then go ahead. I don't care in the slightest.
Oh yeah? Which problem?
Crashing the gui.
Causing the gui to think you made a move that you didn't, because it misunderstood some debugging output.
Both of which have happened with my older winboard programs while debugging.
For real v2 winboard, it is not safe to send unexpected output.
Your recommending that people do it anyway is not responsible.
Again, you are trying to change the subject. Seems to happen a lot with you.
HG... I've seen enough of your other threads to know you aren't going to be persuaded by reason.
So let's just say that you and I significantly disagree on very basic common sense things.
9. Commands from the engine to xboard wrote:feature FEATURE1=VALUE1 FEATURE2=VALUE2 ...
...
debug (boolean, default 0)
If debug=1, it means the engine wants to send debug output prefixed by '#', which WinBoard should ignore, except for including it in the winboard.debug file. As this feature is added to protocol 2 ony late, so that not all protocol-2 supporting versions of WinBoard might implement it, it is important that engines check if WinBoard accepts the feature. If the feature is rejected, engines must refrain from sending the debug output, or do so at their own risk.
Michel wrote:Reading this discussion I wonder how the independent development of 4.3 came about. Was TIm Mann unwilling to accept patches? Has he officially indicated he is no longer working on Winboard/Xboard?
In any case, since this is an independent project, I think it would have been better to choose a different name, like Winboard-ng or something.
Return to Programming and Technical Discussions
Users browsing this forum: No registered users and 7 guests