makefile
[arrocco.git] / doc / mission_statement.txt
blobeb563fb62d2e5de4322cd649c887c7edb5b229ca
1 Arrocco is a chess engine capable of parallel operation on multicore systems.  It is still in its first stages, and some rules are not yet implemented (most notably check, checkmate, stalemate, castling, and en passant).  Parallelization of alpha-beta pruning is far from solved; we intend Arrocco to offer a testbed for different implementations of parallel alpha-beta.  Currently, it implements a simple algorithm of the author's creation.  In preliminary tests, Arrocco's 2-processor mode shows a speedup of 70%-80% over its 1-processor mode.  (i.e. using 2 processors takes about 60%-70% of the time that using 1 processor takes.)  Better algorithms may improve this speedup.  We would like a linear speedup, but that may be impossible.  Let's see how close we can get.  :)
3 Arrocco is written in a combination of Python and C.  The core of the system, viz. move generation and alpha-beta search, is written in C.  Higher-level operations, such as principal-variation search and FEN parsing, are written in Python.  This split between Python and C increases the comprehensibility of the code (Python is much higher-level than C) while maintaining the speed befitting a chess engine (99+% of the program's runtime is spent in the fast C core).  We believe that the choice of Python will make our program easier to modify for willing programmers.  (As well as for its primary author -- Python shines at handling complex data structures easily and safely.  I'd certainly rather let Python handle my strings than _strcat_ and friends!)  Interfacing C code to Python is carried out through use of Python's ctypes library, one of the simplest FFIs known to man.
5 OPENING BOOK/ENDGAME TABLEBASE
7 In time, Arrocco aims to implement the xboard protocol, a common protocol for chess engines (implemented by e.g. GNUchess and Crafty), in playable and analysis modes.  When this is accomplished, xboard will be able to pit Arrocco against other chess engines (woebetide them!) or use Arrocco to analyze completed chess games.
9 DIFFERENCE FROM CRAFTY
11 Arrocco is released under the GPL.