Alter version number to 2.0.4
[polyglot.git] / ChangeLog
1 =========2.0.4==================
2 - Fix move choice using learn info (when BookLearn is on).
3 - Use new XBoard mate-score convention by default.
4 - Support UCI_PlayByNodes option / CECP nps command, and simulate this option using 'go nodes' when the engine does not support it.
5 =========2.0.3==================
6 - Bugfix, removing a debug printf which would forward all engine output to the GUI as comment. (Which would cause problems if the line contained "not found".)
7 =========2.0.2==================
8 - The Polyglot Affinity option was activated to set the proces affinity mask on Windows, and turned into a string option to allow it to be given in hexadecimal.
9 - The makefile for building with MSVC was repaired, and several docs updated.
10 - The default name for engines that do not emit an "id name" was changed to "unknown".
11 - Fail-low and fail-high info provided by the engine is realyed in thinking output as trailing ? and ! on the PV.
12 - The UCI option SyzygyPath is recognized as special, and connected to the XBoard 'egtpath' command.
13 - Tablebase hits, selective depth and nodes/sec can be shown in thinking output, subject to the Polyglot option ShowTbHits.
14 - XBoard commands wrapped as info strings ("info string xboard XXX") will now be passed to the GUI (as "XXX").
15 - Hash size is now capped at the engine-specified maximum, even when the XBoard memory command allows more tha that.
16 - The exclude-moves feature now fully supports the WB protocol extension for this (exclude MOVE|all, include MOVE|all).
17 =========2.0.1==================
18 - This is the first of a fork initiated by HGM. It starts by reverting the previous book-learning change, as the reasons for it seem invalid. People do not use book learning for making better opening books, but for adapting a book to one specific engine, and provide diversity in on-line play, to prevent human opponents from exploiting a likely line they once won by repeating it again and again.
19 - Polyglot was now also made to use the learn info it updates, for promoting diversity and avoidance of lines with a poor result record.
20 - An option to refrain from resigning while you still have a Queen (QueenNeverResigns) was added
21 - Option to accept draw offers (HandleDraws and ContemptScore) were added.
22 - A first onset towards an exclude-moves feature was made.
23 ========1.4.67b=================
24 - Disable "book learning". Polyglot saves learning information but does not use it itself, probably for a reason. I believe the booklearning concept of Polyglot is fundamentally broken. Learning information is engine specific so it should not be saved in the opening book (it might be saved elsewhere). There are other issues as well, such as copyright and the possibility of the proliferation of polluted books. Opening books can be improved with information from games by using the merge command. This is a form of off line learning which is probably much more effective since one has strict control over what kind of information is added to the book.
25 ========1.4.66b=================
26 - Fix a printf 32 vs 64 bit format (crash) bug which manifested itself on windows.
27 ========1.4.65b=================
28 - Bugfix: dump-book with -color black generated the file book_white.txt.
29 ========1.4.64b=================
30 - Reduce movetime in the implementation of the fixed time per move command, to to account for differences in the wording of the protocols. 
31 ========1.4.63b=================
32 - Give ponder move as hint.
33 - Support for egtpath gaviota (this is a bit hacky right now).
34 ========1.4.62b=================
35 - StringSize was not everywhere the same in Polyglot. This could lead to a buffer overflow in case of very long PV's. 
36 ========1.4.61b=================
37 - uci_isready replaced by uci_isready_sync. Polyglot should not send commands to the engine while it is syncing.
38 ========1.4.60b=================
39 - The result string after an illegal move now shows the actual attempted move.
40 ========1.4.59b=================
41 - Bugfix: the changes in 1.4.57b created a regression where the input buffer of polyglot could overflow with engines producing lots of output very fast. 
42 ========1.4.58b=================
43 - Implementation of BookDepth in UCI mode.
44 - Small corrections to the manpage.
45 ========1.4.57b=================
46 - First attempt at killing engines that do not react to "quit". 
47 ========1.4.56b=================
48 - Better handling of non-existing engine command on Linux. No changes on Windows.
49 =========1.4.55b================
50 - Suppression of some error dialogs.
51 - Small delay in between final error message and actually quitting.
52 =========1.4.54b================
53 - More graceful handling of engine crashes.
54 - New EngineCommand is now passed through wordexp on Linux.
55 =========1.4.53b================
56 - Multipv code by HGM. 
57 =========1.4.52b================
58 - Reexport SyncStop. It is apparently necessary for the Aquarium Book Adapter.
59 =========1.4.51b================
60 - Support for new nps command. Code provided by Harm Geert Muller. 
61 =========1.4.50b================
62 - Change in architecture. Persistence is disabled. The user is required to push the "Save" button explicitly to save the settings. What is retained is that in case PG is invoked with -noini (or as a special exception for WB 4.4.0 when the config files are polyglot_1st.ini or polyglot_2nd.ini) then PG uses a default config file whose name is derived from the engine name. 
63 - New option: OnlyWbOptions (default: true). Restrict the options that PG sends to those that are potentially useful for WinBoard.
64 =========1.4.47b================
65 - Try to detect if the engine is not an UCI engine.
66 =========1.4.46b================
67 - The default persistence directory on Windows is now _PG. The names of the engine specific ini files are mangled so as not to contain spaces. 
68 - PG now tries to guess if a string option is really a file or a path (like in the Arena GUI). 
69 =========1.4.45b================
70 - The engine specific config files (<myname>.ini) are now stored in a separate directory. $HOME/.polyglot on Linux and "./Polyglot Settings" on Windows. 
71 - The engine specific config files are now complete config files. So they can be used in a stand alone fashion.
72 - Implemented a minor hack to make xboard show error messages during startup. 
73 =========1.4.44b================
74 - "Implementation" of new buttons and controls.
75 - The "Persist" option is now persistent. That is if you turn of "Persist" then as a special case PG will remember this.
76 - There is now a "reset" button which restores the default options. The code is commented out since WB does not support it yet.
77 =========1.4.42b================
78 - SaveSettingsOnExit/SaveFile renamed as Persist/PersistFile.
79 - Many bug fixes in the persistence feature.
80 - The PG_<myname>.ini file now contains only options that have been changed. So the resulting ini files are much smaller. This makes this version of PG usable on WB 4.3.15 as now the engine specific ini file will be empty (the user has no way to change options).
81 =========1.4.41b================
82 - Some segfaults fixed in case of corrupt config files.
83 - Persistence of options. If the option SaveSettingsOnExit is true (the default) PolyGlot now saves its options in a file whose name is given by the option SaveFile which by default is equal to the engine name, prefixex by PG_ and suffixed by ".ini".
84 =========1.4.39b================
85 - Refactoring of config file parsing
86 - Fix crash bug in epd-test
87 - Do not export Chess960. This is handled completely internally. 
88 - Do not export UCI_Opponent and UCI_Chess960. These are handled internally.
89 - PG can now also be comfortably configured through command line options (i.e. without using a config file). 
90 - Allow quotes in configfile (as in Fonzy Bleumer's PG). 
91 =========1.4.37b================
92 - Two new options: BookDepth and BookTreshold. BookDepth limits the number of moves the book is used and BookTreshold sets the minimum weight a book move should have.
93 =========1.4.36b================
94 - Bugfix: option = 0/1 was translated incorrectly.
95 - Default node count is 1.
96 - EOF received from the engine should now be logged correctly (i.e. after the buffer is empty).
97 - Bugfix: Nasty buffer overflow in the macro CONSTRUCT_ARG_STRING.
98 - Bugfix: pipex_writeln (win32) was logging at the wrong spot. 
99 - Log board when an illegal move is received. 
100 =========1.4.35b================
101 - New WbWorkAround for silly bug in WB. Depth <=1 clears the engine output window. Why should an engine not be allowed to send info at depth one?
102 =========1.4.34b================
103 - Warning: this release is less well tested as usual
104 - Allow spaces around "=" in "option =" commands.
105 - WbWorkArounds is now true by default. It decapitalizes Draw when this appears in engine option. 
106 - Trying to set a non existent UCI option gives an error. 
107 - PG will now resign in case of an illegal engine move. 
108 - More code has been put in "pipex".
109 - info strings and unrecognized info lines are relayed to the GUI.
110 =========1.4.33b================
111 - New option: "WbWorkArounds" to work around bugs in WB. Currently it blocks options which contain "Draw" in their name from being sent to the GUI. Engines that have such options are Rybka and HIARCS. 
112 - Bugfix for ASSERT failure in bright. Now another ASSERT failure has appeared which seems to be bright's fault however. 
113 =========1.4.32b================
114 - Bugfix: the default setting for RepeatPV had become false again...
115 =========1.4.31b================
116 - Bugfix: improper handling of vararg function.
117 =========1.4.30b================
118 - Some more meaningful error messages added.
119 - Some buffer overflow checks added.
120 - Simplification of strange signal kludge in gui.c. 
121 - Removal of obsolete code in engine.c and gui.c. Platform specific code has been abstracted and pushed into pipex_win32.c and pipex_posix.c
122 - The format of the version number has changed once again. Debian was unhappy with the previous one.
123 =========1.4b29================
124 - Conversion from C++ to C (suggested by E.M.)
125 - More refactoring. The win32 and posix I/O now have a uniform interface (see pipex.h). 
126 =========1.4b28================
127 - Some comments added to explain the exact behaviour of some of the public functions in pipe.cpp. 
128 - LineInput now returns a bool which is FALSE in case of EOF. 
129 =========1.4b27================
130 - Option "ScoreWhite" : report score from white's point of view (suggested by E.M.).
131 - Option "KibitzInterval" : try to wait this many seconds between kibitzes (suggested by E.M.)
132 =========1.4b26================
133 - Contraction of version number.
134 - Log if SetProcessAffinityMask is not available (suggested by E.M.).
135 - pipe.cpp : Make PipeStruct a proper class with private/public members.
136 - Check for EOF in GUI input.
137 - pipe.cpp : delay reporting EOF until buffer is empty.
138 - Messages from the Engine to PG were not logged in the windows version.
139 =========1.4w10UCIb24===========
140 - Portability fixes for WIN9X (Eric Mullins).
141 - Portability fixes for MSVC++ (Eric Mullins).
142 - Default setting of RepeatPV is now true.
143 - Do not read data if input buffer is full (Windows).
144 =========1.4w10UCIb22===========
145 - Polyglot now completely poll free...
146 =========1.4w10UCIb21===========
147 - Crash bug in memory command fixed
148 - Small optimizations
149 =========1.4w10UCIb20===========
150 - More refactoring.
151 - No more polling for GUI input
152 =========1.4w10UCIb18===========
153 - Two new utilities: info-book and dump-book.
154 =========1.4w10UCIb17===========
155 - More refactoring. main.cpp is now #ifdef _WIN32 free.
156 - The main loop (previously in adapter.cpp) is now in its own file mainloop.cpp.
157 - adapter.cpp has been renamed into xboard2uci.cpp. It is #ifdef _WIN32 free.
158 - EOF from the engine no longer kills PG. It should now
159 be possible to close an engine and reopen another one (if that ever became useful) 
160 =========1.4w10UCIb16===========
161 - xboard options commands
162 - correction of handling of combo boxes in UCI protocol
163 - "gui-mode". It is now possible to run PG without config file
164 - The polyglot options are not exported, so they are now settable by the GUI
165 =========1.4w10UCIb15===========
166 - Due to refactoring time stamps in Windows would be written twice. 
167 This has been fixed. 
168 - More refactoring; the number of #ifdef _WIN32's has again been
169 drastically reduced.
170 =========1.4w10UCIb14===========
171 - option to alter priority now also works on windows
172 (Eric Mullins)
173 - refactoring so that posix and win32 part share more
174 code
175 - a number of potential busy loop scenarios have been eliminated 
176 in the Windows code (Windows uses polling)
177 - the return value of CreateProcess is now checked
178 =========1.4w10UCIb13===========
179 - perft mode exposed.
180 =========1.4w10UCIb12===========
181 - Replaced %lld everywhere by S64_FORMAT.
182 =========1.4w10UCIb11===========
183 - Crash bug fix (wrong parentheses in instruction that checked for help
184 option).
185 =========1.4w10UCIb10===========
186 - It is now possible to do "make rpm" to make an rpm binary package. 
187 - Trivial bug fixes.
188 - Documentation added for epd-test functionality (man page).
189 - Cosmetic cleanups of output of epd-test.
190 - "polyglot --help" output added.
191 - Added polyglot book format specification to distribution.
192 =========1.4w10UCIb9===========
193 - Trivial cosmetic fixes
194 - Some engines do not support the "Hash" options.
195 So we do not send memory=1 in that case. 
196 =========1.4w10UCIb8===========
197 - Support for egtpath command in xboard protocol
198 =========1.4w10UCIb7===========
199 - Debianization: it is now possible to do "make deb" to build a Debian/Ubuntu
200 package.
201 =========1.4w10UCIb6===========
202 - UCI GUI support added. This makes it possible to use PG as a book engine
203 on GUI's like ChessBase and Arena which normally only support their
204 own proprietary format. 
205
206 - Support for new xboard "cores N" and "memory N" commands. See here
207 for a complete description
208
209         http://home.hccnet.nl/h.g.muller/engine-intf.html
210
211 - Some work arounds for engines like Toga which only allow some settings
212 to be set before the first "isready" command. 
213
214 - Autotooled distribution.
215
216 - Proper manual page. The README file is generated automatically from this. 
217
218 - More sane naming of README files.
219
220 - If BookLearn is false (the default) PG will open the book read only.
221
222 - Windows and non-Windows log file formats are now the same.
223
224 - Proper ChangeLog (you are reading it!).
225 =========1.4w10================
226 fixed analysis output for toga
227 =========1.4w9=================
228 fixed bug in 1.4w8
229 added RepeatPV workaround
230         fixed disappearing output in engine-output window while in multipv mode
231         when an engine sends its move to polyglot,
232         polyglot normally repeats the last pv string(which also contains score,depth and time usage) it got from the engine.
233         Some engines however do not send a new pv string just before sending the move and the now old pv string
234         find might confuse debugtools that parse the winboard debug files.
235         Adding "RepeatPV = false" to the [POLYGLOT] section of the ini file stops this repetition.
236  
237 =========1.4w8=================
238 fixed multipv output
239 note that the pv with the worst score will be on top of the engine-output window.
240 added timestamp in logfile (Jaap Weidemann)
241
242 =========1.4w7=================
243 compiles under linux/unix again
244 =========1.4w6=================
245 access to winboard draw/drawoffer and resign
246
247         1:to activate draw offers the engine has 
248            to define the "UCI_DrawOffers" parameter with the 'option" command at startup. 
249         2:to offer a draw or accept a draw offer:just send "info string DrawOffer" to polyglot. 
250         3:if winboard sends "draw" polyglot sends "setoption DrawOffer draw" to the engine.
251         4.to resign: send "info string Resign" to polyglot.
252         please check the winboard documentation for the draw/drawoffer and resign commands.
253                 
254 =========1.4w5:================
255 Fixed errors in SyncStop handling.
256 book building: the error message now also contains the game number 
257 added Affinity option:
258 In the [PolyGlot] section(ini file):
259 - "Affinity" mask
260 mask is a bit vector in which each bit represents the processors that a process is allowed to run on.
261
262 some minor bugs fixed
263
264 checks if child did really quit.
265
266