Belofte  version 2.1.5
A promising chess program using the UCI or Winboard interface

All changes per release, version specific information

This is the file for belofte, a promising chess program released under GNU - GPL v2.0. For open issues, please refer to the TODO file.


Updated on 26/12/2021


Released on 25/12/2021

  • bBestMoveInfo only returned by root level fuctions of search, optimise usage;
  • bBoard delayed initialisation of piece postboxes, bMoveList late initialisation, Keep track of pieces-on-board instead of calculating, late calculation of board statistics;
  • Bug-fix: UCI_ShowCurrLine can now be enabled through setoption command;
  • Change: If no debug on command issued, no UCI string output issued. Banksia requires no string output;
  • Bug-fix: compiling targets on Fedora 35 no longer crashes at runtime, make static builds by default;
  • Bug-fix: Mate symbol added on moves when generating mating moves instead of + character, remove # symbol in movelist output if only mate in n;

    Minor enhancements:

  • Bug-fix: Hash on initial position does have wrong colour to move flag bit set;
  • Retain fd setting in uci mode upon again command;
  • Add .DS_Store files to ignored files in git;
  • Remove BELOFTE_TESTFUNCTION and BELOFTE_LOGLEVEL1 conditional compile;
  • Upgrade macOS builds from clang 5.0 to clang 11.0, compile without unicode on versions before 10.15;


Released on 11/11/2021

  • Documentation has been updated and new doxygen cross-reference has been generated, manual.html and about.html have been converted to .md files and are indexed in global doxygen html documentation; History and todo are in a separate file and integrated as well. Automatic todo generation. Wiki has been added with a few articles;
  • Bug-fix: clear castle ability flag if rook on a1/a8 is captured;
  • Bug-fix: correct relative weight of piece so winning side favours exchange;
  • Change: Less weight for castle in position evaluation;
  • Add bonus for passed pawn and passed pawn outside kings reach;
  • Add bonus for connected pawn chains, or pawns next to each other;
  • Add bonus for protected king, add malus for Kd1 or Kf1 positions;
  • EPD parsing: allow to start with any Dn opcode, not just D1. Add support for STS and Perft suites, even without appropriate tags. Add support for coordinate moves. Add support for dm and acs commands;
  • Allow for cross-compilation of windows target from linux host, update windows compiler to gcc 10.3.1 (result is a performance increase);
  • Update on remaining time calculation;
  • No move generation when copying board, delay movegeneration to just before iteration through movelist;

    Minor enhancements:

  • Algorithm and Evaltype no longer hardcoded;
  • Bug-fix: regression, calling with no parameters is possible now;
  • Bug-fix: avoid crash setting FEN string with missing move/50 moves setting;
  • Bug-fix: add '#' symbol only when score winning in movelist;
  • Change: default level is 3 seconds;
  • Implement random command;
  • Make beloftemode the default engineinterface instead of specific sub-mode, implement unused methods in baseclass as xboard v1 or v2;

    UI enhancements:

  • Review application logging for debugging purposes, activate with command debug log on;
  • Support for @ command on command line, in batch and when launching;
  • ls command allows listing of sub-folders;
  • If go is being run from a script, do wait for end before running next command;
  • Bug-fix: uci time info during thinking corrected;
  • Bug-fix: parsing id=" " tag in epd file no longer crashes;
  • Change: issue protover command without xboard will trigger xboard mode;
  • Bug-fix: passing depth parameter on uci go command no longer changes other level related parameters;
  • Bug-fix: perft command no longer dependent on earlier go, level, sd or st commands;
  • Bug-fix: avoid crash executing ucinewgame and go (non uci compliant) sequence directly after start (no position nor level given);
  • Bug-fix: announce mate correctly in uci info score tags;
  • Add debug invert command to invert board, add check for balanced eval;
  • Add support for UCI_ShowCurrLine option;
  • Add support for xboard feature option and option commands, allow uci option to be set without parameters;
  • Add support UCI_Opponent option and implement xboard name command and the feature myname option, swap opponent name on go command;
  • Add support for SIGINT, SIGTERM, disable support when #define BELOFTE_NOSIGNALS is set;
  • Fix uci id name output by adding empty line in front, fixes recognition of name by BanksiaGui;
  • Add reporting of supported variants in xboard;
  • Add support for direct move-entry in xboard (assume feature playother=0), add support for xboard playother command, disable support for debug setrunning command;
  • Parse xboard easy and hard commands;
  • Add support for verbose command, remove debug verbose command;
  • Change: Add AlphaBeta to bench tests, change node calculation;


Fix dates: 06/09/2021 ( 07/09/2021 ( 24/10/2021 (

  • Change: Add AlphaBeta to bench tests, change node calculation; (
  • Bug-fix: clear castle ability flag if rook on a1/a8 is captured; (
  • Fix crash on banksia by not sending correctly info score on game-terminating positions; (

Released on 03/08/2021 (2.1.3)

  • Change: Make positional board eval the default evaluation algorithm;
  • Change: Make alpha-beta (no early cut-off) the default search algorithm;
  • Positional board eval gets initialised with specif eval based on game stage;
  • Bug-fix: 1 or 2 last moves not evaluated when castle is possible;
  • Bug-fix: Passing --quit as parameter on launch no longer throws exception;
  • Bug-fix: Do no longer segfault on move 128/ply 256 (regression);
  • Bug-fix: xboard undo command does no longer break game history (eg. game or save commands);
  • Fix: Positional eval for B, R, Q incorrect when on line 1 or 8;
  • Fix: Node count during search is output more frequently and corrected;
  • Fix: NPS reported only reports leafs (perft) and no nodes;
  • Fix: Correct reporting on depth and selective depth;
  • Fix: Unicode characters in log-output are not well presented, is default now;


  • Add: Allow to generate and test bmi2, popcnt, native and static builds, change position of parameters on script, default build is optimized for g++ and clang++, clang++ is default compiler;
  • Add total nodes to perft command output, calculate NPS based on total;
  • Add: bench command, allow [--]bench to be used as parameter, Allow to add optional depth on bench command, return total nodes next to leaf nodes, include BruteForce search and eval during benchmarking;
  • Use postbox piece representation instead of iterating over board during eval;
  • Use std::array instead of classic arrays, iterate through it with for(auto;
  • Dynamic update of hash value instead of recalculating it;
  • Use default copy/move ctors on b*Board where relevant;
  • Do not apply move twice to see if in check and giving check after move;
  • De-double applyMove in w/b variations;
  • When looking if game is ended, just see if one move can be played instead of generating all moves;
  • Use 50 moves counter as well when detecting 3-fold repetition;
  • Update king position in applyMove, no longer required to calculate postbox representation, re-use king position instead of looking for it;
  • Board representation goes from [8][8] to [64];
  • Pieces as int 1-12 instead of 'K', 'Q', 'r', etc, ..., No piece instantiation in movegeneration, re-use king global instance;

    Benchmark MoveGen/NPS results: (normalized vs Linux 32: 535%/408% ( 308839/-) ( 529533/20865) Linux 64: 490%/352% ( 341114/-) ( 675974/27599)

    Minor enhancements:

  • Regression: quit command exits main loop instead of exit call;
  • Fix: Swap values in static board evaluation. h->a becomes a->h;
  • Fix: Possible crash when looking for castle possibility when king at starting position but no rook on f, g or h columns;
  • Fix: Send start of search information as debug info, assists in timeout hunting. Extra margin added when at last move of time control to avoid flag;
  • Fix: Piecelist no longer incorrect for rook, used 'T' symnbol;
  • Centerplay values only positive;
  • Use specific types instead of generic int8_t (uint8_t, rank_t, column_t);
  • Store ep case in basicboard instead of ep column/-1, 0 meaning no ep;
  • Add movePiece function to clear piece and set piece on new location;
  • Use bSearchResult with moveid and score instead of returning just one;
  • Movegeneration merges into bMoveList class;
  • Change HAS_CHRONO into reversed logic CHRONO_MISSING;
  • Add: SPDX license information in project files;
  • If no xboard/protover 2/uci command is received, act like CECP version 2;
  • Don't do quiescence in brute-force search;
  • The readme file has been split in, and;
  • The search.cpp/.h files have been split in one file per algorithm;
  • All member variables now start with m_ prefix;


Fix dates: 04/05/2021 (, 11/05/2021 (, 24/05/2021 (, 05/06/2021 (

  • 1 or 2 moves not evaluated when castle is possible (backport); (
  • Piecelist no longer incorrect for rook, used 'T' symbol (backport); (
  • Positional eval for B, R, Q incorrect when on first or last rank (backport); (
  • Possible crash when looking for castle possibility when king at starting position but no rook on f, g or h columns (backport); (
  • Send start of search information as debug info, assists in timeout hunting (backport); (
  • Extra margin added when at last move of time control to avoid flag (backport); (
  • quit command exits main loop instead of exit call (regression & backport); (
  • Add bench command (backport); (
  • Fix on uci position command (backport); (
  • Fix on building windows x64 version, use GCC 8.1.0 instead of 4.9 (backport). (
  • Bug-fix: uci advertises StaticBoard as default now (backport). (

Released on 01/05/2021 (2.1.2)

  • Do not include check moves in AB* QS beyond the first check;
  • Do limit the number of moves in QS search, minor promotions to rook/bishop are not considered;
  • Beta cut-off in ABFS/ABFH at 80 centipawns;
  • QS search defaults to 2 * depth + 5 instead of 2 * depth with minimum of 8;
  • Remove qsalg command and related classes;
  • Add mating and pawnending gamestage, drive king to corner when mating;
  • Aborting search due to time elapsed is done by raising exception instead of housekeeping abort status, increase time for move slightly;
  • Add support for perft related D# epd opcode, add perftsuite.epd;
  • Resolve segmentation fault at program exit on Mac OS X;
  • Bug-fix: Do no longer segfault on move 256/ply 512.

    Minor enhancements:

  • Remove compile warnings on maximum clang warning level (except for C++98 non compatibility, padded classes, weak vtables);
  • Call destructors on some global structures (prevent memory leak on exit);
  • Condense AB, ABFS and ABFH in one algorithm;
  • Group tests for terminal node in AB search into TerminalNode class;
  • Condense Iterative from AB and BruteForce;
  • Speed optimizations on king position and move generation;
  • Mate symbol only added if game ended and not when check on e.g. 50 moves rule or 3-fold rule. Mate in # shown in movelist;
  • Issuing certain commands without initialisation no longer generates core-dump. e.g. bd or perft as first command after starting;


Fix dates: 12/03/2021 (, 26/04/2021 (, 24/05/2021 (

  • Add bench command; (
  • Bug-fix: Do no longer segfault on move 256/ply 512. (
  • Bug fix: Queen no longer initialised as Bishop; (
  • Separate levels of debug output, add debug information in .rc file; (
  • Arena default parameter for belofte is -xboard instead of --xboard. (

Released on 06/03/2021 (2.1.1)

  • Make different draw claim based on FIDE rules. Only KK, KNK, KBK and KBKB with all bishops on the same color. Not KNNK, KBKN, KNKN and KBKB with unlike bishops;
  • Add Alpha-Beta Fail Soft, Alpha-Beta Fail Hard and make ABFS default. alg Random|StaticEval|BruteForce|SearchIterativeBF|AB|ABFS|ABFH;
  • Sort moves before starting to search according to capture bonus and centerplay;
  • Add Positional Board evaluation and make it default. evaltype PiecesOnly|StaticBoard|PositionalBoard;
  • Add specific endgame evaluation;
  • Positional board: Add bonus for castle rights and has castled;
  • Positional board: Add malus for double/triple pawns, isolated pawns, separate groups. Add bonus for passed pawns;
  • Positional board: Add bonus for connected rooks, rooks on open line, rooks on semi-open line, rooks looking at king/queen col/rank, rooks looking at pawns horizontally (7th and 6th rank);
  • Positional board: Add bonus for bishop attacking Queen/King (in)-directly;
  • Positional board: Add bonus for queen attacking King (in)-directly;
  • If qs searchs ends with a check move, add all following moves as qs moves if no capture moves available. (no dead position possible);
  • Bug fix: 50 moves counter is now cleared in case of capture with piece;
  • Bug fix: 3 fold repetition more accurate, Hash collision less likely as now counting hash piece values instead of hash empty field values.

    Minor enhancements:

  • Split some compilation units: belofte, game, search, board. (.h/.cpp) Add usercmd, configurablegame, search_ab, move, movelist;
  • Put basic board info in bBasicBoard class, splitting bBoard;
  • Change PiecesOnly board evaluation to use values 1,3,3,5,10 and suppress conditional compile BELOFTE_ROUNDEDVALUES;
  • Better calculation of time left in bLevel. Recalculate time left in xboard mode;
  • Pretty-print search output (scores, max), score and time in search output and in _DEBUG mode;
  • Add UCI currmove in search output;
  • Set kinda depth on xboard search output;
  • Give some search feedback in UCI mode by default, obey to debug command in xboard and UXI mode;
  • Fix perft command and make it run in xboard and uci mode;
  • Add ls command to list current folder;
  • Add nodes count during search;
  • Add Syzygy tablebases on testing current version.


Fix dates: 24/05/2021 (, 14/06/2021 (, 18/06/2021 (

  • Correct node count on bench command for BruteForce; (
  • Add BruteForce search to bench command; (
  • Remove QS search when alg BruteForce or IterativeBF is selected; (
  • Add bench command; (

Released on 26/01/2021 (2.1.0)

  • Winboard UI support. (CECP, Xboard, Winboard 2-4, Protover 2) Implement xboard level, st, sd, result, post, nopost, time, ping, ... commands. Add support for xboard random, computer, easy, hard, white, black, ... commands. NOOP.
  • Add Search Alpha-Beta Fail Soft and make it default. alg Random|StaticEval|BruteForce|SearchIterativeBF| AB
  • Add winning cut-off in AB search.
  • Make QS search pluggable by means of qsalg command. (alg not AB) qsalg NoQS| QS
  • Detect 3-fold repetition - theoretic draw.
  • Sort moves before starting to evaluate them.
  • Add epd, epd pos and epdpos commands and epd_testsuite .h/.cpp unit.
  • Add date, event, white and black player in game metadata.
  • Add hash calculation for position. Add bel_hash.cpp/.h unit. Finish initialisation on UCI ready, CECP ping, CECP protover commands.
  • Bug fix: Flush output stream after sending move.
  • Bug fix: add # after mate move.
  • Bug fix: save command does now print SAN moves.
  • Bug fix: exec command now does not switch xboard/uci mode. This makes running of test-scripts from 0.9 versions possible.

    Minor enhancements:

  • Calculate board static value and moves on board ctor.
  • OS information on info command.
  • Move debug to separate unit. (bel_debug.cpp/.h);
  • Add game and fd commands (0.9.x compatibility);
  • Change implementation of log output, debug output and search output.
  • Add std:: namespace prefix where required.
  • Bug fix: Remove null character at end of bestmove in case of no promotion.
  • Bug fix: Correctly print pv in search output and remove trailing space.
  • Gain ability to suppress reaction to signals.


Released on 27/12/2020

  • Add implementation of SAN moves. (in debug and for epd)
  • No random added to move at root. Random added on evaluation at leaf. Keep special scores all along, no movelist recalibration at root.
  • Converge scores to zero so that same board position scores less if further away.
  • Detect theoretic draw by insufficient material.
  • Convert MiniMax to NegaMax.
  • Break out of iterative brute force search when getting mated.
  • Better time management at last moves before time control.
  • Increase time for initialisation and move return to 180ms.
  • In iterative search, do not start another iteration if not enough time.
  • Add setting BELOFTE_ROUNDEDVALUES to help in manual position evaluation during debugging. Should be disabled when building release.

    Minor enhancements:

  • When BELOFTE_UCIMODE is defined, start in UCI mode. Replaces BELOFTE_UCIONLY.
  • Define BELOFTE_TESTFUNCTION to activate test configuration.
  • Do not copy position class when adding in game positions.
  • Print e.p. and QS information on bd command only when relevant.
  • Change perft test.
  • Add time and pv in uci search output.
  • Bug fix: Do not return UCI PV if no moves listed in PV.
  • Add makefile.
  • More logging in iterative search. Add move score in StaticEval.
  • Move platform specific stuff in new myplatform.h unit.
  • Include processor in name (x86, x86_64, arm, ...) and info command.
  • Use generic platform launcher. (tested on Windows & Linux)
  • Allow to create optimized builds by compile script. ./ –opt current


Fix dates: 26/11/2020 (, 30/11/2020 (

  • Better time management at last moves before time control. (
  • Add android version. (x86, x86_64, arm32, arm64) If compiling with android SDK, force **#define BELOFTE_UCIONLY** setting. With this setting, UCI mode is enforced upon start. (
  • Issue fix: Replace unicode string with ascii string on windows compile. (
  • Issue fix: Print compile flags on info command. (
  • Bug fix: UCI PV now indicates promotion piece. (
  • Bug fix: UCI SetOption command now understands evaltype. (
  • In exact time per move mode, remove 100 ms from available time in order not to run over maximum allowed time. (

Released on 13/11/2020 (2.0.8)

  • Detect 50 moves draw rule.
  • Implement new default Brute Force Iterative Depth level. alg Random|StaticEval|BruteForce|**SearchIterativeBF**
  • Searching is done in separate thread.
  • Implement uci stop command. Allow search to be aborted with ?/stop command.
  • Implement most uci go parameters.
  • Implementation of time based search.
  • Add principal variation, kept in board structure.
  • Bug fix: Correct compilation script on Mac OS X 10.15 and above.

    Minor enhancements:

  • Streamline algorithm cpp structure.
  • Compile to executable with version number.
  • On multi-bitwidth-architecture platforms, provide suffix in name (32/64). On other platforms, compile without bits suffix in name.
  • Remove uci indication from config files for tournaments except for current version.
  • Add version simulation configuration in engines.json.
  • Add san.cpp/.h compilation unit.
  • Display micro-seconds in UCI at end of search. Also on Mac OS X.


Released on 27/10/2020

  • Add BruteForce search algorithm. Respect go depth command. Add sd command.
  • Bug fix: in StaticEval, move anyway even if getting mated.
  • Support the setoption uci command. Allow algorithm to be set from UI. alg Random|StaticEval|**BruteForce**
  • Allow evaluation function to be set from UI. evaltype PiecesOnly|**StaticBoard**
  • Output logging compliant with xboard and uci specification.
  • Support debug log on/off command to generate log file.
  • Create debug file in case of debug on command.
  • Add debug ponder off|01|2|3|4|on command.
  • Allow specific executable to be configured by means of personal .rc file. Minor enhancements:
  • Source code cleanup. Use App() and AppEI() functions to find instance.
  • Bug fix on spaces in engine names in engines.json file.
  • Bug fix: do not send debug output until debug on has been issued.
  • Add eval and info command.
  • Improve command initialisation and add help –all parameter.


Released on 15/10/2020

  • Implement Quiescence eval with cut-off. Search all moves until stable position or bad exchange. Terminate static eval with QS eval.
  • Add capture and check flag to move.
  • Run cutechess-cli tournament on windows (git-bash).


Released on 02/10/2020

  • Implement StaticEval algorithm. Will play based on board evaluation without actual searching. Includes mate and stalemate detection.
  • Let user select algorithm by following command. alg Random|**StaticEval** StaticEval being the default engine.
  • Fix compilation on Mac OS X 10.8.5 and on windows 32/64 bit. Add stub for missing <chrono> in C++11. Remove experimental/random dependency.


Released on 25/09/2020

  • Implement Random search. Calculate pure random move in every position.
  • Implement xboard and uci engine. Tested against cutechess.

Below list is included for information only. As a new structure is used for version 2.0 and up, most issues are irrelevant.


  • Endgame with KNN against K is not theoretic draw. Nor KNKB.. etc
  • Add check move into list of QS moves.
  • Add check on top of movelist.
  • Enhance stucture of search by adding current searchline. Print out QS search.
  • QS search aborted on forced draw. (testcase 28 and 32)
  • Only handle a certain number of QS moves instead of all QS moves.
  • Adding 0-1 in result and game output. Game output also prints result.
  • Bug-fix on FEN tag in PGN output if game does start with specific position.
  • Add verbose <n> command. Output score while thinking is not flapping 1/-1.
  • Do timecontrol less frequently by pausing timethread longer on long time controls. (cpu usage improvement on windows)
  • Set details for endgame mate search. Minor enhancements:
  • Suppress t_boolean, replace by C++ bool type.
  • Replace t_flag by bool.
  • Use b1_posid instead of int to traverse 144 board array.
  • Normalize opening lenght. Calculate before search start to optimize.
  • Expose centervalues for other modules.
  • Split alg1_isInCheck in colour dependent functions.
  • Move b1_apply_move to alg1_apply_move.
  • Disable hash calculation on side to move.
  • Suppress eval_mobilitymv.
  • Add verbose command, specialisation of post command.
  • Right-align evaluation output in post. Some enhancements on finite eval.
  • Eval is now giving output in nopost mode.
  • Integrating moveresult and gameresult in one structure. Simplify passing its parameters.
  • No extra line printed on PGN output. No extra space after move... indicator.
  • When loading EPD file, set game PGN elements.
  • Issuing xboard command after uci command and uci after xboard gives error. Standarisation of error in case of invalid command.
  • If file passed on @ command cannot be loaded, error is given.
  • Use constants for castle array index.
  • Remove bitfield index for m_sidetomove.
  • Move rook before bishop/knight no longer bad score after opening.


Released on 08/03/2020

  • Add pgn command. Set start FEN position in PGN file. Fill in round in PGN tag roster. Set event to autosave or name of engine.
  • Remove result when undoing move.
  • eval command returns information on game-end position.
  • Remove compile warnings introduced in 0.9.16 (regression)
  • Correct regression on some testcases introduced on 0.9.16.
  • Allow epd id tag surrounded by quotes.
  • CPU usage when idle, fixed depth search and perft test lowered.
  • When passing parameter on command line, do not wait for 500 ms on first command. With initialisation script, uci/xboard should be passed in the initialisation script now.
  • Belofte can now be launched with command and parameter on command line e.g. ./belofte epd matein1.epd


  • Remove UCI conditional compile. Version now supports both xboard and uci.
  • Correct UCI handling of time periods.
  • Correction on UCI go command. Inverted computer and opponent settings.
  • Change parameter reading on startup, remove requirement of standard parameter.
  • Change reading of command line paramters to parse before reading config file.
  • Read command passed on consule withing 0.5" and execute it before finishing initialization. Allows for xboard/uci commands to be parsed correctly.
  • Autosave is disabled by default. Requires debug autosave command to enable.
  • Logging is disabled by default. Requires debug logging command to enable.
  • Support for bullet type time control. Do not play illegal move with 0 seconds on clock.


  • Reimplement UCI protocol.
  • Initial sort moves based on board center. Probability that central move is a good one for all center moves is higher that border moves such as a2a3. This leads to better cut-off in alpha-beta.
  • Faster position calculation by not doing attack calculation in case of large material gain. Used in QS for now.
  • Consider that we are in endgame and change pawn static evaluation by loading another static evaluation.
  • Implement debug go and debug go1 that are running in current thread instead of multi-threaded approach.
  • Add some delayed constructor functions, this is required by uci protocol that does not allow long constructor functions.
  • Rework of time calculation. Centralise all time functions in search.cpp.
  • Remove ordo elo calculation on as this is gauntlet type of tournament.
  • Remove warnings in algorithm 2 (no impact but compile warnings).
  • Correct random use in case of strict implementation on bit 16.
  • Correct hash key to respect ULL constant definition.
  • Hash key is now relative to side to play.
  • Compile 32 bit target on 64 bit linux machine.
  • Move utility functions to YUtils.cpp.
  • 50 moves draw implemented.
  • Relative piece evaluation is abandonned for last 6 pieces.


Released on 12/02/2020

  • Quiescent search fixed;
  • Xboard protocol only;
  • Available on Win32 and Linux64.


Released on 06/02/2020

  • Xboard protocol only. Available on Win32 and Linux64.


Fix dates: 14/01/2020 (0.9.8)

Released on 10/12/2019

  • Standard build does not compile UCI specific commands;
  • Code::Blocks project in git repository;
  • Available on Win32 and Linux64. Other builds not tested.


Released on 12/07/2018

  • Standard build does not compile UCI specific commands;
  • Multi-threading fixed on linux build.
  • Available on Win64 and Linux64.


Released on 24/07/2017

  • Instead of fixed depth based on available time, respect time levels;
  • Recognises 3 fold repetition;
  • Correction of some illegal moves;
  • Multi-threaded approach. Different threads: UI, timeobserver, search, pondering.
  • Updates on evaluation function;
  • Huge increase in strength.


Released on 06/06/2017

  • Publication of code on sourceforge;
  • Continuation of 0.2.8 branch, port to Linux 64 bit;
  • Change in license conditions, available on Git;
  • Netbeans project in git;
  • The 0.9.0 branch is the temporay version of 0.9.0 containing the big part of work. It has been merged in the master branch and tagged on final release.


  • Implementation of multi-threading and multi-algorithm;
  • Development on Win32 platform;


  • Conversion to Universal binary, a lot of optimizing, but still not finished;
  • It plays from time to time on the internet and while under development;
  • First conversion to cpp.


Fix dates: 06/06/2017

  • Change of License terms to GNU GPL v2;

Released on 06/02/2006

  • Mac OS X ppc, Mac OS X Intel, Windows, Solaris, Linux, HP-Unix platforms supported;
  • Added opening book colour transposition and better balancing of good moves in opening book;
  • Better handling of shorter games;
  • Correction of castling information;
  • Adding partial comments for autodoc;
  • Documentation available;
  • License conditions added;
  • Rename of binary book and taking into account Intel Mac for opening books.


Released on 19/03/2005

  • Mac OS X version;
  • Saving multiple times same game resolved;
  • Slight change in evaluation function;
  • Windows and Linux version available.


  • Opening book implemented;


  • Ports to solaris;


  • First version;