Bump version to 4.0
[uci2wb.git] / README.txt
index 5a41725..3a09133 100644 (file)
@@ -16,10 +16,31 @@ and just passes on the moves and position FENs as it receives them from engine o
 As this can be done without any knowledge of the game rules, or even of the board size, \r
 such a dumb adapter can in principle be used for any variant. To use it for UCI protocol\r
 (both the Chess or Xiangqi dialects), use it without the -s flag (or with a -c flag).\r
+  As of version 2.0 UCI2WB also supports the UCCI protocol for Xiangqi, for which it was\r
+made slightly less dumb: in UCCI mode it keeps track of the board position on a (Xiangqi)\r
+board, so it can recognize capture moves, and send only the moves after it (with an\r
+appropriate FEN to start them from).\r
+  The general syntax of the UCI2WB command is:\r
 \r
-This package includes the source code. To compile, use the command\r
+UCI2WB [debug] [-var VARIANTLIST] [-s|-c|-x] ENGINE.exe [ENGINEFOLDER]\r
 \r
-gcc -O2 -s -mno-cygwin UCI2WB.c -o UCI2WB.exe\r
+Presence of the 'debug' argument causes UCI2WB to report everything it receives from the engine,\r
+as well as the 'position' and 'go' commands sent to it, as debug output (prefixed with '#')\r
+to the GUI. This has the same effect as switching the option 'UCI2WB debug output' on,\r
+except that it forces the option to be on from the very beginning, so that the engine\r
+startup will also be reported.\r
+  The '-var' option overrules the list of variants UCI2WB says it supports with the given list,\r
+like 'feature variants="VARIANTLIST"'.\r
+\r
+\r
+This package includes the source code. To compile on Windows under Cygwin, use the commands\r
+\r
+windres --use-temp-file -O coff UCI2WB.rc -o rosetta.o\r
+gcc -O2 -s -mno-cygwin UCI2WB.c rosetta.o -o UCI2WB.exe\r
+\r
+To compile under Linux, use\r
+\r
+gcc -O2 -s UCI2WB.c -lpthread -o UCI2WB\r
 \r
 Have fun,\r
 H.G.Muller\r
@@ -27,25 +48,109 @@ H.G.Muller
 \r
 \r
 \r
-Change log:
-
-14/10/2010
+Change log:\r
+\r
+8/12/2018 4.0\r
+Complete redesign of the internal logic, to make interruption of thinking\r
+actually work. The engine thread is made responsible for parsing the GUI\r
+commands that require the engine to be idle. These commands are passed to\r
+it from the GUI thread through an internal command queue. The engine thread\r
+can peek in this queue when a search terminates and it enters the idle or\r
+pondering state. It only goes reading the ponder output after all queued\r
+commands are processed. This way the GUI thread is sensitive to input all\r
+the time, and can instantly handle all commands by either processing those\r
+that can be done during search, and queueing the others. In the latter case\r
+it can abort an ongoing search to divert the attention of the engine thread\r
+back to the command queue.\r
+ Other changes are:\r
+Added option to force the engine to ponder if force mode (for OTB tournaments).\r
+Produce a compliant error message for unknown commands.\r
+Fix time increment in ponder-on games (which was subtracted rather than added).\r
+Fix periodic updates, to include move and correct move counts.\r
+Set UCCI newgame option after initial isready handshake rather than before it.\r
+Suppress spurious sending of 'uxinewgame' in UCCI mode.\r
+Suppress 'setup' command in the standard variants 'suicide' and 'losers'.\r
+Add support for robbobases and Scorpio bitbases as EGT flavors.\r
+Support extended UCI info-string-variant command that can set board size.\r
+Assume engines with UCI_Chess960 option but no UCI_Variants play only Chess and\r
+Chess960, and not xiangqi or shogi.\r
+\r
+24/12/2016 3.0\r
+Implement UCI_AnalyseMode option\r
+Support egtpath command for Nalimov, Gaviota and Syzygy\r
+Allow ?, quit, force and result commands to terminate thinking\r
+Stop search during setoption commands, or buffer those until engine is done thinking\r
+Explicitly report when engine dies, through GUI popup (tellusererror)\r
+Make sure reporting of mated-in-0 score causes resign, even without PV\r
+Fix eclipsing of -var option with engines that have UCI_Chess960 option\r
+Fix empty default of string options\r
+\r
+8/11/2016 2.3\r
+Implement handling of 'UCI_Variant' option for variant announcement and selection\r
+Pass 'info string variant' line as 'setup' command to allow engine-defined variants\r
+Set 'UCI_Opponent' option in accordance with CECP 'name' and 'computer' commands\r
+Fix option setting during analysis (MultiPV!)\r
+\r
+22/11/2016 2.2\r
+Use USI gameover command to relay game result\r
+Handle USI win claims\r
+Correct wtime/btime for byoyomi\r
+\r
+7/11/2016 2.1\r
+Make Linux version SIGTERM-proof\r
+Recognize forward Pawn pushes as irreversible in UCCI\r
+Block input from GUI during thinking\r
+Use uxinewgame\r
+Implement support for pre-standard UCI Chess960 engines ('Arena960 dialect')\r
+Fix hash-size setting in UCCI\r
+Combine name and version when engine gives them in separate 'id' commands\r
+Fake time and node count for engines that do not report it\r
+Add interactive options for byoyomi work-around\r
+\r
+28/10/2014 2.0\r
+Implement UCCI support\r
+\r
+4/12/2012 1.10\r
+Implement pause / resume commands\r
+\r
+9/5/2012\r
+Fix bug in converting shogi moves, introduced in v1.8\r
+\r
+19/4/2012 1.9\r
+Remove S-Chess move translation, to parallel change in UCI S-Chess 'standard'\r
+Implement WB exclude feature\r
+\r
+17/4/2012 1.8\r
+Wait for uciok before processing GUI commands for setting options\r
+Implement move translations required for variant seirawan\r
+Make supported-variants string configurable from command line.\r
+\r
+15/4/2012 v1.7\r
+Take 30ms safety margin in translating st command to movetime\r
+\r
+14/1/2011 v1.6\r
+Replaced all polling by blocking synchronization (through pipes).\r
+Implemented ping (using isready/readyok)\r
+Made sending of debug info to GUI subject to option feature / command-line argument.\r
+Fixed myname feature to handle names containing spaces.\r
+\r
+14/10/2010\r
 Port v1.5 to Linux\r
-
-26/9/2010 v1.5
-Add mini-Shogi ("variant 5x5+5_shogi") in USI mode; make coordinate translation board-size dependent.
-Translate FEN in setboard to SFEN (does not fully work for holdings yet).
-
-23/9/2010 v1.4
-Translate USI engine PV to standard coordinates (no provision for deferred promotion yet).
-
-??/?/2010 v1.3
-Add work-around for non-compliant USI engines that do not understand winc, binc, movestogo.
-Send btime before wtime, to avoid crashing USI engines with flakey (Shogidogoro) USI support.
-
-1/8/2010 v1.2
-Suppress mate claim on mate-in-1 score in Xiangqi (cyclone dialect),
-as some engines use this score when they reach repeats they would win if continued.
+\r
+26/9/2010 v1.5\r
+Add mini-Shogi ("variant 5x5+5_shogi") in USI mode; make coordinate translation board-size dependent.\r
+Translate FEN in setboard to SFEN (does not fully work for holdings yet).\r
+\r
+23/9/2010 v1.4\r
+Translate USI engine PV to standard coordinates (no provision for deferred promotion yet).\r
+\r
+??/?/2010 v1.3\r
+Add work-around for non-compliant USI engines that do not understand winc, binc, movestogo.\r
+Send btime before wtime, to avoid crashing USI engines with flakey (Shogidogoro) USI support.\r
+\r
+1/8/2010 v1.2\r
+Suppress mate claim on mate-in-1 score in Xiangqi (cyclone dialect),\r
+as some engines use this score when they reach repeats they would win if continued.\r
 \r
 31/7/2010 v1.1\r
 Add WB remove command\r
@@ -98,4 +203,4 @@ Only classical time control tested.
 Pondering not tested. (Blunder does not give a ponder move?)\r
 Setboard not tested. (Probably does not work due to FEN format discrepancy.)\r
 No analyze mode yet.\r
-No SMP yet.
+No SMP yet.\r