Pipes are a pretty efficient way to communicate in most OS. I once timed it on an old Pentium M laptop, and it was about 1.5ms. That is negligible compared to the resolution of the system clock (~16ms) or the CECP time-measurement unit (10ms). On modern machines it might be faster. And protocol translation is a quite limited and well-defined task. Once it works, it works.Joost Buijs wrote: ↑Wed Nov 25, 2020 8:45 amUsing external adapters to support different protocols might be easier to maintain, but it also has some drawbacks like needing two pipes instead of one for communication (which slows the communication down), and the extra translation step adds complexity which makes the chance that an error will occur larger IMHO.
An additional advantage is that when you run the engine through a network, you can run adapter + engine on the remote machine, so that the efficient CECP can be used on the network. This might even speed up the communication.
I don't see any logic in that. How many threads or processes a program uses to do what it does is a technical implementation detail, and should not affect the user experience. You might as well say that "since Shredder is an external engine, the only natural way to change its settings is to edit an ini file". Obviously editing ini files is not very popular with users since the 80s; this is why engine-GUI communication protocols nowadays have commands for changing engine settings interactively, through a menu dialogs of the GUI.Since Polyglot is an external adapter the only natural way to change settings is to edit it's ini file, adding the option to change UCI settings to a GUI that doesn't support UCI natively seems more like a hack to me.
What you propose would "leak" all kinds of technical details to the user. Which would actually have to know whether the engine is UCI or CECP, most likely never having heard of either, and having no clue what they mean. A good design would completely shield the user from such technical details, and provide the same optimal user experience no matter what type of engine they use.