Michel wrote:The GUI->engine traffic is only one "." character /sec which is tiny. So this argument I definitely don't buy.
Then you are wrong. There is in fact huge overhead, no matter how little the GUI sends. The GUI process has to be woken up by the timer interrupt. It has to use a pipe system call to copy data to kernel memory space. Several task switches and context switches are involved. In usual OS implementations they involve searching the process table to get the process that should be woken up.
We are talking about node counts here. When is a node count interesting?
When it is a round figure so that the user can easily interpret what he reads, or when sufficient time has elapsed for the user to actually read the old value.
Michel wrote:How about a command
tellfatalerror <string>
for fatal errors (such as an engine not finding its configuration files). After such message the engine could quit without WB popping up it own ugly dialogbox.
Currently this is handled very badly in the WB protocol. WB simply reacts to 6 magic strings.
unknown host
No remote directory
not found
No such file
can't alloc
Permission denied
When the WB box for reporting fatal errors is ugly, it would be more logical to fix that. This is an implementation matter, not a protocol matter.
From what I understad, the "magic strings" are there for handling the case where the engine runs on a remote machine through rsh, and rsh somehow fails to startup the engine binary. We can be sure that no one will change rsh to give error messages in WB protocol, so we have no choice but to recognize the messages that rsh gives.
There already exists a command that allows the engine to popup a message. I don't see how the information of adding that the engine has a fatal error would help the GUI. The GUI gets a signal when the engine process terminates, which is a pretty unambiguous message that there was a fatal error in the engine.
Again, if the WB does not handle that well, it is an implementation problem.