Ras wrote: ↑
Thu May 21, 2020 12:37 pm
Ah that's a good point. If an engine fails to announce "analyze=0", then the analysis command would already yield an error. That's even easier to test and store.
That is how WinBoard does it. But only if the engine responds with the compliant error message (or in fact any message that contains the word 'analyze'). I think it would be overly paranoic to assume bay default that engines do not only lie about supporting 'analyze', but also would be non-compliant w.r.t. error messages.
It's also frustrating when you try to do stuff that randomly fails depending on the engine, which is the rule and not the exception with CECP engines specifically.
It is frustrating when the engine would not allow you to do what you want. But what you propose doesn't change that. At some point the engine will think long about a trivial move, and an impatient user will try to force it to move. When 'Move Now' is greyed out, he will be frustrated. When it is not, and he hits it, and nothing happens, he will be frustrated. So he will always be frustrated. Difference is that in case 1 he will blame the GUI, while in case 2 he will blame the engine.
Well rather just kill the engine process and restart it, that seems to be a good compromise.
No, that would be very bad. Killing the engine is a heavy measure, which should not be undertaken without explicit user approval. The user asked for 'Move Now', and killing the engine will not accomplish that. A restarted engine would have to redo all the thinking, and likely take just as long as the previous one, so the excessively long time it already had been thinking that made the user so impatient that he felt the need to intervene will have been wasted, and will now have to be suffered again, as the "?" command will not become magically implemented by restarting the engine. So this is a disastrously bad 'solutution'. The thing most closely to what the user wanted is let the engine complete its thinking; there is no way he could get a move from thi engine any faster than that.
The idea is making that mess of the CECP ecosystem somewhat bearable to the user.
Well, I would not be surprised if that mess mainly existed in your imagination. Do you have actual examples of serious CECP engines that misbehave? That sub-1000-Elo engines are crappy in every respect should of course not surprise anyone. And that most engines do not implement Move Now should just be common knowledge; the CECP specs define it as an optional command. That doesn't make it an "unbearable mess" anymore than the fact that some UCI engines support UCI_Chess960 and others don't makes UCI an unbearable mess.