Strictly speaking, it is violating the protocol, but in a way that will not be confusing to the GUI, so it should work. It depends on the engine, however, how strictly it implements the spec. My implementation for example will not return earlier when called with movetime. Shredder itself, however, does not implement UCI that strictly.hgm wrote:It is true 'movetime' asks the engine to search exactly the specified time, but I don't think it is a protocol violation to return a move earlier, if there is nothing to search.
[d]k7/7Q/K7/8/8/8/8/8 w - - 0 1
The CT800 engine will think for 10 seconds when called with "go movetime 10000" while DeepShredder13 returns after 0.6 seconds. The reason why Shredder returns isn't that mate has been found, but that the depth has reached 100, which seems to be the maximum depth.
When called with "go wtime 10000 btime 10000 movestogo 1", the CT800 engine returns after 0.005 seconds, and Shredder after 0.013 seconds. Both engines return because mate in 1 has been found.