2013-06-30 Michael Petch * eval.h, rollout.c, gnubgmodule.c: Store the JSD that a rollout alternative was stopped on into the rollout context dbprovider.c gnubg.c gnubgmodule.c gnubgmodule.h: Allow a user Python startup script (gnubg_user.py) to be loaded at startup AFTER gnubg.py. No error is thrown if the file doesn't exist. gnubg_user.py is not meant to be imported, but loaded as a textfile into the main name space just like gnubg.py . 2013-06-29 Michael Petch * backgammon.h, gnubg.c, gnubgmodule.c: Added preliminary support for Python module function 'hint'. Work in progress The function interface and the dictionary returned may change. Added module functions mwc2eq_stderr and eq2mwc_stderr. Inefficient memory use for eval and rollout contexts should be cleaned up. Rollout contexts should include all the cube and chequer play sub contexts. The hint dictionary needs to be documented. 2013-06-25 Michael Petch * backgammon.h, gnubg.c, play.c: hint_move has been modified to support external callbacks. Part of future Python integration. 2013-06-25 Michael Petch * eval.c, lib/neuralnet.c: If SIMD instructions are compiled in and they are not supported by the processor, output an error message and then terminate immediately. 2013-06-22 Michael Petch * INSTALL, configure.ac, eval.c, gnubg.c, gnubg.spec, po/POTFILES.in Rename file sse.h to simd.h. Rename USE_SSE_VECTORIZE to USE_SIMD_INSTRUCTIONS, rename SSE_Supported to SIMD_Supported, rename DISABLE_SSE_TEST to DISABLE_SIMD_TEST, rename SSE_CFLAGS to SIMD_CFLAGS Make sse/simd usage more consistent, ./configure option --enable-sse/--disable-sse is now --enable-simd/--disable-simd 2013-06-20 Michael Petch * +m4/ax_check_compile_flag.m4, +m4/ax_ext.m4 +m4/ax_gcc_x86_avx_xgetbv.m4 +m4/ax_gcc_x86_cpuid.m4, configure.ac: Added better autoconf support to determine whether the processor supports certain SIMD instruction sets like SSE,SSE2,AVX etc. --enable-simd behaves a bit different. --enable-simd with no parameters is the same as --enable-simd=yes . The behavior of --enable-simd=yes has been changed to find the latest supported SIMD instruction set used by the build machines CPU. Priority is given in this order (highest first): SSE2, SSE, AVX, None. Since AVX is still experimental it is not given priority over SSE2 during build time autodetection. 2013-06-19 Michael Petch * +output.c +output.h, gnubg.c, backgammon.h, lib/Makefile.am lib/neuralnet.c: Moved the output functions from gnubg.c to their own files. 2013-06-19 Michael Petch * gnubg.c, eval.c, lib/neuralnet.c, lib/neuralnet.h, configure.ac: Add support for plm's new AVX instruction additions. Separate the cputest from the --enable-simd configure option. Created a new option --disable-cputest. Supports cputest functionality on GCC builds with either 64-bit or 32-Bit OSes on Intel processors. Code will work with builds that use -fpic option. 2013-06-18 Michael Petch * gnubg.c: When using the -r flag to start GNUBG (start without reading the gnubgautorc file), the gnugbautorc file will be overwritten with defaults if running with the GUI. Reported by plm, see: https://savannah.gnu.org/bugs/?38497#postcomment 2013-06-17 Michael Petch * gtkgame.c: Fix language bug that prevented the GUI from properly refreshing the screen when a new Language was chosen * Makefile.am: Win32 builds have a localedir of ./locale relative to the executables directory. A bug had newer windows builds seeking locale files in the default locations which was incorrect, and consquently language translation didn't occur. 2013-06-15 Michael Petch * All .c and .h files: Standardized the code formatting with indent -kr -l120 -fc1 -sc -nut -psl . K&R style, 120 column limit process comment in column 1, multiline comments have an asterisk at the beginning of each line, convert all tabs to spaces, and split the return type of a function from the function name (each on their own line). K&R uses 4 spaces for an indentation level. Update the language files. * script/*.py : Reformat the python files to conform to PEP8 standard. See http://www.python.org/dev/peps/pep-0008/#indentation 2013-06-15 Michael Petch * gnubgmodule.c, scripts/gnubg.py: Modify the python interpreter processing so that it falls back to a simple command line interface on older versions of Windows (Versions before WinXP SP2). Fix segfault related to launching the Python command line interpreter 2013-06-15 Philippe Michel * configure.ac, lib/neuralnetsse.c, lib/sse.h, lib/inputs.c: Use AVX instructions when built with "configure --enable-simd=avx" 2013-06-13 Michael Petch * gtkprefs.c: Save board preferences when clicking "OK" on the board appearance configuration dialog. 2013-06-12 Michael Petch * dbprovider.c, dbprovider.h, gtkrelational.c, relational.c, scripts/database.py : Allow hostname to be specified in the database connection dialog box. Hostnames can be any valid combination of hostname:portnumber 2013-06-07 Michael Petch * gtkwindows.c, play.c: Fix a bug that segfaulted the "end game" command when built with GTK and the "-t" option is used to launch GNUBG. 2013-06-06 Michael Petch * gnubgmodule.c, gnubgmodule.h, gtkgame.c, scripts/gnubg.py: Move loading of the Python command line interpreter to Python functions in gnubg.py. The Python command line now supports IPython if present. IPython takes precedence over the standard Python interpreter. If the standard interpreter is used, attempt to load command history (readline module) and then try loading auto completion (rlcompleter module) support if present. Fix Python related ifdefs to allow compiling when built without Python support. 2013-06-05 Michael Petch * scripts/gnubg.py: Add the scripts directory to the Python path so that files in the directory can be imported. 2013-06-05 Michael Petch * gnubgmodule.c, gtkgame.c, play.c: Modify the interactive Python interpreter to support tab completion and command history. Begin reintroducing Python IDLE, since it functions on MS Windows and various linux distros. Ubuntu/Debian installation of IDLE can be done via: apt-get install idle . If IDLE is not present it will drop back to the old method. CLI builds don't use IDLE at present. IDLE is not on the GUI menu but can be activated by turning on the "command" pane and entering '>' (greater than sign without quotes) as a command. IF IDLE is not presnt and usable it will do nothing. This is a work in progress. 2013-06-04 Michael Petch * gtkrelational.c: Don't allow a user to create a player database that already exists. * dbprovider.h, dbprovider.c, scripts/database.py, gnubgmodule.c: Add Mysql support on Win32 platforms using pymysql (a purely python based database driver for mysql) 2013-06-04 Michael Petch * configure.ac, multithread.h: Allow a new autoconf/configure parameter --with-eval-max-threads=size to allow the maximum number of evaluation threads to be specified. Default is 48 if not specified. * dbprovider.h, dbprovider.c, relational.c scripts/database.py: Fix bugs that prevented proper connections and database usage when using the Mysql and Postgres player database providers. Mysql and Postgres are unsupported on the MS Windows platform - Disable them in the GUI 2013-05-31 Michael Petch * play.c: Under certain situations (load commands from a file containing a play command within the GUI) would stop on an assertion. PlayCommand not properly resetting the notification handler. Reported by Ian Shaw 2013-05-28 Michael Petch * gnubg.c: Fix bugs related to python handling of ParseMove and FormatMove . Fix bug that would cause crash when command "load commands" used unquoted filenames on Win32 platform. Reported by Ian Shaw