------------------------------------------------------------------------- -- ChangeLog ------------------------------------------------------------------------- 3.8 released February 17, 2009 - added Wietze Brandsma to THANKS - revised config.vc - revised NEWS - restored missing mkmcpat.dsp, regress.cmd 3.8rc1 released February 6, 2009 - revisions to montecarlo.texi - revised .dsp files - Lee Fisher added to AUTHORS - WINDOWS doc and install.texi revised per Lee Fisher's changes - mkmcpat puts 16 items on a line instead of 8 - (unsigned char) and (unsigned short) explicit typings - missing files added to EXTRA_DIST - copyrights updated to 2009 3.7.13 released December 23, 2008 - restore cmake files that were missing from the 3.7.12 tarball - bring copyright date to 2008 - doc revision - be forgiving with replacement moves conflicting with unconditional analysis - accept --enable-socket-support even if configure test fails - add globals.c to mkmcpat for OS/X build 3.7.12 released April 7, 2008 - cmake configuration files for generating MSVC project files - minor doc revision - new options --mc-patterns, --mc-list-patterns, and --mc-load-patterns - tunable local patterns for Monte Carlo simulations - try harder to find the right move to make seki in find_moves_to_make_seki() - better heuristics to avoid calling semeai reading in find_moves_to_make_seki() in hopeless cases - never amalgamate dragons over three-liberty strings and sometimes not over two-liberty strings - send_two_return_one() moved from utils.c to board.c and reimplemented - new file engine/montecarlo.c - new options --monte-carlo and --mc-games-per-level to use Monte Carlo UCT search on 9x9 and smaller boards - call check_boardsize() from play_gmp.c to avoid crashing on bad board sizes - new function check_boardsize() - bugfix in handling of foreground color with ncurses - orientation invariant board hashes added - tuning - add STS-RV semeai regression test suite - new and revised tests 3.7.11 released November 1, 2007 - gtp-commands.texi is not built automatically - updates texinfo.tex - minor doc revision - revised configure.in, aclocal.m4 and *Makefile.in for recent autotools - removed acconfig.h - don't play send-two-return-one in tactical reading attack moves - bugfix in reevaluate_ko_threats() to avoid a crash - more efficient aftermath moves - version 3 of GPL and update copyright for 2007 - new static function remove_eye_filling_moves() in owl.c - semeai reading revisions - look more ambitiously for back-capturing moves in attack1() - generate cut move reasons for cutting moves found during find_connections() - fix compilation with MAX_BOARD set to low boardsizes (>= 7 tested) - performance tuning in do_owl_analyze_semeai() - detect unconditionally meaningless moves - get_lively_stones() revised to be valid also for stackp>0 - bugfix in compute_owl_escape_values() - moves can be marked as known_safe_moves by patterns - bugfix in compute_surroundings() - owl tuning - new and revised tests 3.7.10 released May 21, 2006 - gnugo.dsw and uncompress_fuseki.dsp revised - configure.in revised to improve socket support detection on windows - gameinfo_play_sgftree_rot() revised to fail gracefully - new static really_do_trymove() and is_superko_violation() in board.c - board hashes stored in the move history - is_legal() no longer depends on allow_suicide - new is_allowed_move() to determine legality for current suicide and ko rules - new global variables suicide_rule and ko_rule - illegal moves replaced with passes near the end of do_genmove() - reevaluate_ko_threats() revised - under superko rules look for ko threats also if best move illegal - new options --forbid-suicide (default) and --allow-all-suicide - new options --simple-ko (default), --no-ko, --positional-superko, and --situational-superko - is_allowed_move() used instead of is_legal() in play_gtp.c, play_ascii.c and play_solo.c - identify_thrashing_dragons() called earlier in make_dragons() - do not play self-atari while splitting eyespaces in aftermath_genmove() - in do_owl_attack(), don't consider send-two-return-one defender moves - send-two-return-one moves not tried in find_more_attack_and_defense_moves() - send-two-return-one moves not tried in find_worm_attacks_and_defenses() - string connection bonus for ko captures reduced in move_connects_strings() - maximum bonus from secondary move values limited to 0.4 points - more legality checking in fill_liberty() - detect_tactical_blunder() revised to avoid finding illegal defense moves - semeai.tst reordered - new option --limit-commands to regress.pike - new testfile 13x13c.tst - do not try to add an sgf circle for pass moves in replay_node() - new enum same_dragon_value in owl.c - new owl_defendpats.db classification "a" for connecting all friendly stones to the goal - owl tuning - influence tuning - tuning - new and revised tests 3.7.9 released March 10, 2006 - new GTP command advance_random_seed - make update_random_seed() deterministic - fix assertion failure in semeai() - semeai attack and defense codes added to struct dragon_data2 - in estimate_territorial_value(), let stones have influence strength also when their safety depends on ko - unify internal handling of limit_search and restricted_genmove - new function play_lib_n() in utils.c and autohelper functions oplay_lib/xplay_lib - new static function modify_eyefilling_move() in owl.c - do not reset permeability around dead stones - do not consider moves playing into snapback in do_find_more_owl_attack_and_defense_moves() - new function playing_into_snapback() in utils.c - only call do_find_more_owl_attack_and_defense_moves() when stackp==0 - use .strategic_size in estimate_strategical_value() - new field .strategic_size in dragon_data2, includes bonus for weak neighbors - use gg_normalize_float2int() in valuate_combinable_pattern_chain() to address platform dependencies - carefully select new owl goal origin - allow excess strategical value for some single-worm dragons - include played move in atari-atari blunder analysis - score.c removed from sources - owl tuning - tuning - new and revised tests 3.7.8 released January 30, 2006 - new global variable handicap - chinese scoring adds the number of handicap stones in addition to the komi to white's score - include handicap in sgf headers - dead code removed from influence_evaluate_position() and the rest moved to game_status() - metamachine enabled in ascii mode (as in GNU Go 3.6) - configure option oracle renamed metamachine (as in GNU Go 3.6) - new testfile gifu05.tst - don't try large scale attack if original owl reading was expensive - teach influence_score() about chinese rules - copyright notices updated for 2006 - bugfix in unconditional status analysis - let --capture-all-dead and --play-out-aftermath be effective also when playing out a game for scoring (e.g. --score finish) - semeai analysis turned off when there are a huge number of dragons - MAX_STRINGS value corrected - new assertions that the next_string pointer hasn't overflowed - hash flag bits and -H option removed - default size of reading cache set to a fixed number of entries instead of a fixed amount of memory, improving platform independence - update information about valid boardsizes in gnugo.pod - bugfix for drawing 1x1 board in play_ascii.c - regress.pike can run multiple engines in parallel (-j option) - correction of color in order_moves() call in reading.c - doc revision, updated instruction for setting up HTML regression views - find_connection_moves() revised - GTP command dragon_data fixed to give well-formed output also on empty board - update regress.pl and regress.plx to count connection nodes instead of life nodes and expect reg_genmove instead of gg_genmove - remove gnugo_play_sgftree(), gnugo_genmove(), gameinfo_load_sgfheader(), and gameinfo_play_move() from engine/interface.c - 1D conversion of gnugo_play_move() - new function get_sgfmove() - let semeai code pass if no riskless move was found - do not hardwire owl node limit for large scale attacks - remove many unneeded configure tests - READLINE compile (warning) fixes - complete rework of clock.c, using level adaption logic from play_gtp.c - use more tactical moves in do_owl_analyze_semeai() - unused function transform2() removed - report_worm() made static in worm.c - hashdata_to_string() revised for consistency between 32 and 64 bit platforms - bugfixes in do_aftermath_genmove() - adjust readconnect node limit when starting search at higher stackp - new function get_depth_modification() - removed functions set_temporary_depth_values()/restore_depth_values() - always set dragon status to ALIVE if owl_status is UNCHECKED - correct C-code footer in uncompress_fuseki.c for all values of NUM_HASHVALUES - play_replay() and replay_node() partially rewritten - tuning - new and revised tests 3.7.7 released October 9, 2005 - FSF address corrected in COPYING - large scale improvements - use signed char instead of char most of the time in the engine - string_to_location(), debug_influence_move(), and report_worm() converted to 1D - get_level() removed from genmove.c - documentation update - remove long deprecated command hurry from play_ascii - use signed char in connected_components() in owl.c - rotation support for --decide_* options removed - remove trivial wrapper functions from engine/interface.c - patterns/transpat.c, patterns/patlib.c, and patterns/patlib.h removed - unused game records in regression/golois removed - makevcdist.pl updated and re-run - all Makefile.in regenerated - debugboard traces from Makefile and configure removed - endgame1.tst removed from distribution but not from CVS - cutstone.tst, semeai2.tst, and *_rot.tst removed - debugboard removed - support for pattern based reading (EXPERIMENTAL_READING) removed - support for tree based pattern matching removed - view.pike: support multiple tests as argument - test revisions - consistently initialize global variables in globals.c (not main.c) - large scale code reorganized - fullboard support (-f option) remove from mkpat - atari_atari tuning - endgame tuning 3.7.6 released September 21, 2005 - a few missing game records restored - revised patterns.dsp and new uncompress_fuseki.dsp 3.7.5 released September 20, 2005 - revision to patterns.dsp (but more revision needed before VC will compile) - send usage messages caused by bad input to stderr - new, larger fuseki database added as compressed files - new files patterns/compress_fuseki.c and patterns/uncompress_fuseki.c - use a fullboard hash for fuseki database patterns - new array comulative_goal in local_owl_data - don't count former owl goal dragon stones towards escape measure - removed PROFILE_MATCHER - handle CRLF newlines correctly in view.pike - new static function squeeze_moves() in reading.c - fix komaster problem - do not trust connection moves to be safe in estimate_territorial_value() - add random move value contributions also for pure ko threats - new and revised tests 3.7.4 released June 12, 2005 - copyright notices updated for 2005 and new FSF address - bugfix in find_backfilling_move in filllib.c - make fast_defense() aware of under-the-stones tesuji - make superstring_break_chain_moves() attack 3-liberty chains - unused code to compute genus removed from make_dragons() - owl tuning - atari-atari tuning - optics tuning - tuning - new and revised tests 3.7.3 released March 22, 2005 - special_rescue_moves() allows self atari moves which may set up a snapback - increase depth after filling liberties in endgame_find_backfilling_dame() - try harder to find safe backfilling moves in endgame_find_backfilling_dame() - revised heuristics to find a font file in view.pike - avoid crashing on bad engine paths when starting a new engine in view.pike - move_connects_strings() revised - outcommented patterns removed - ignore off board vertices in openregion() in fuseki.c - Revise diagonal value in topological_eye() to account for damezumari - owl tuning - new and revised tests 3.7.2 released January 20, 2005 - gnugo.el: Grid display implemented - gnugo.el: SGF handling improved - gnugo.el: Undo and Redo related enhancements - gnugo.el: Primitive edit mode - gnugo.el: Regression view mode - Doc revision (Emacs mode in using.texi) - use print_numeric_influence() for printing escape influence - take neighbouring half/false eyes into account when estimating lunch value - do not trust strategic attack and defense moves to be safe when scoring - thrash_around_helper() returns false if fuseki is disabled - value_territory() revised to disable certain reductions of the territory value when scoring - regress.pike revised so that previous output can be used as input with -f to rerun tests with unexpected results - connection_value() revised - use influence-based score estimate instead of Bouzy's algorithm - new global variable white_score, black_score - should_resign() now depends on optimistic_score instead of average_score - added support for GTP over TCP/IP sockets on Windows - new static function all_own_neighbors_inessential() in aftermath.c - do_aftermath_genmove() revised - breakage2tst.py now produces command line for regress.pike - further revision of thrashing dragon heuristic - try harder to find backfilling moves in fill_liberty() - find_backfilling_move() in filllib.c revised - test_attack_either() revised - fixed anchor building of owl_attackpats.db repaired - thrashing dragon heuristics revised - readline support in ASCII mode - liberties and neighbors list broken out of string_data array in board.c for speedup - new functions remove_double_blocks(), check_double_block() to improve territorial evaluation at places where an intrusion is possible - stop using worm data at stackp==0 in does_attack() and does_defend() - concerns_noncritical_dragon() revised - MIN_BOARD reduced to 1 - free memory allocated in a failed read of an sgf file - extract_fuseki revisions: statistics on outcomes, popularity cutoffs based on unique players added to command line parameters, tweaks and bugfixes in game selection - atari_atari moves considered blocking in estimate_territorial_value() - MAX_LIBERTIES reduced to 8 - popgo() bugfix to repair sgf traces - do_owl_analyze_semeai() revised - emacs variant of ascii interface removed - give less bonus to connection moves when scoring - influence tuning - owl tuning - tuning - new testsuite tiny.tst - new and revised tests 3.7.1 released November 23, 2004 - new function send_two_return_one() in utils.c - don't consider send-two-return-one moves in do_find_more_owl_attack_and_defense_moves() - does_attack() made ko aware - new GTP commands does_attack and does_defend - sgfnode.c (readsgffile): Do not fclose stdin. - gtp.texi (GTP command reference): Add @cindex. - gtp-commands.sed: Use @verbatim. Tighten output. - gtp-commands.sed: Move `Function' field into @item line, sans field name. - doc/ Makefile.am (gtp-commands.texi): Eliminate redundant use of cat(1). - revision of gtp-commands.sed - bugfix in main.c: remember to sgfFreeNode(gameinfo.game_record.root) - allow PASS_MOVE in trymove() and tryko() - do_trymove() and popgo() revised - 'printfsgf -' supported from GTP - copyright notices added to xpm files - gnugo.el brought up to Thi's gnugo.el-2.2.8 - new gtp_move_history() for use with gnugo.el - minor doc revision - capture_non_invincible_strings() and unconditional_life() moved from utils.c to unconditional.c - resignation option reverted from GTP commands genmove_black and genmove_white - new heuristic to reduce branching factor in connection reading. - resign rather than pass when all own stones seem dead - lively_dragon_exists() based on status rather than crude_status - potential_moves[] array converted to 1D - distance measures converted from floating to fixed point arithmetic in connection reading code. - owl threats disabled as a command line option - EXIT_SUCCESS and EXIT_FAILURE used in transpat.c and sgfgen.c - revised interface to all genmove() type functions - new global variable depth_offset - only cache safe_move() results when reading depth is unmodified - revision of interface/emacs.el - new interface/xpms/*xpm, make-gnugo-xpms.el and gnugo-xpms.el - break_chain2_moves() revised - special_attack4_moves() revised - defend_secondary_chain_moves() revised and split into two functions - check_self_atari() in readconnect.c revised - devalue tactical defenses of owl critical dragons when there are better owl defenses elsewhere - find_moves_to_make_seki() extended to examine the case of dead stones inside the eye of single-eyed dragons - added support for GTP communication over TCP/IP socket; GNU Go can both connect and listen - bugfix in break_in_goal_from_str(): check pos+delta on board - bugfix in sgfStartVariant - constrain thrashing dragons more often - hashing cleanups - missing files added to EXTRADIST in Makefile.* in doc/ and regression/ - new file logo-36.pdf - DFA micro optimizations - Test results updated: cvs tag rel-3-7-1-pre-1 - use int arrays instead of char arrays to mark eyes in owl_determine_life() and dependent functions - added .eps-version of new logo - help string revised - warnings fixed - doc revisions - TODO revised - basic strategies to break mirror go implemented - matcher_check verbosity refined - new function are_neighbors() - 9x9 opening moves tuned - view.pike enhancement: switch to new test case - debugging enhancement: owl goal marked in sgf trees - new move reasons POTENTIAL_SEMEAI_ATTACK/DEFENSE to defer analysis of possible semeai winning moves until move valuation - infrastructure to cut owl goal dragons - new owl pattern class C: threaten to cut owl goal dragon - view.pike enhancement: owl_does_defend/attack - crash in owl_hotspots() fixed - view.pike enhancement: directly start sgf viewer - remove special case of CLASS_C in matchpat.c - influence tuning - owl tuning - endgame tuning - tuning - implement persistent semeai caching - don't crash on some .sgf-files from kgs - NEWS updated - refer to 3.6 instead of 3.4 in docs - new and revised tests 3.5.10 released August 7, 2004 - move initalization of ..._vital_points to initialize_dragon_data() - persistent caches reorganized to share common code 3.5.9 released July 18, 2004 - bugfix in read_eye() - bugfix in fast_defense() - improved printing of hashvalues - bugfix in atari_atari_blunder_size() - new static function dump_board_sgf() in printutils.c - abortgo() no longer unwinds the stack but prints an sgf file - new and revised tests - doc revision 3.5.8 released June 8, 2004 - make `mkpat' detect duplicate pattern names - duplicate pattern names renamed - reduce DFA_MAX_MATCHED 20 times - calculate actual maximum dfa with new dfa_calculate_max_matched_patterns() - remove unused configure option --experimental-semeai - add missing output to --options - new static function special_rescue4() called from defend2() in reading.c - fast_defense() now heuristically looks for neighbors to capture - don't restore random state in hash_init() and keyhash_init() - major `view.pike' revision, added new "single window" mode - break_chain2_moves() revised to generate more backfilling moves - atari_atari_blunder_size() now returns multiple defenses, better verified - remove %r support from gprintf, use result_to_string() instead - double_atari_chain2() revised to generate more moves - new argument recompute_dragons to owl_analyze_semeai_after_move() - owl_mark_dragon() and init_owl() revised - detect_tactical_blunder() revised - value of tactical blunders doubled to twice the effective size of the string - not a blunder if a string alive in seki is saved when outer liberties filled - normalize apos, bpos in do_owl_analyze_semeai - find_cuts() called from make_dragons() instead of make_domains() - new compute_new_dragons() and new static join_new_dragons() in dragon.c - new global array cutting_points[] - cut field removed from struct eye_data - INHIBIT_CONNECTION bit no longer used in the type field of struct eye_data - find_cuts() no longer allowed to modify eyespaces - bugfix in do_owl_analyze_semeai() - tuning - new and revised tests 3.5.7 released May 27, 2004 - minor revisions in score.c - regress.pike measures uncertainty of moves - global variable hashdata renamed to board_hash - hashdata_compare() function removed - fields in struct stats_data updated for new cache - initialization of Zobrist random numbers in hash.c and cache.c unified - new function hash_init_zobrist_array() in hash.c - hashdata_remainder() never uses more than the 32 lowest bits of hash value - hashdata_NULL, hashdata_clear(), and hashdata_init() macros removed - any number of MIN_HASHBITS can now be used - ROUTINE_COSTS revised - find_connection_moves() revised - always print copyright string on stdout - do not include "Version" in the --version output - old cache implementation removed - ignore inessential critical dragons in in dilate_erode() - TRACE_CACHED_RESULT* macros implemented for new caching scheme - old cache implementation commented out - new file engine/unconditional.c added - break-in reading tuned - safety checks improved for owl defense moves - bugfix in find_neighbor_dragons() - attribute "noreturn" for abortgo() - don't add child to root node in sgffile_printboard() - remove color parameter from examine_position(), compute_eyes_pessimistic() - new arrays white_vital_points and black_vital_points - read_eye() stores vital point in new arrays when add_moves == 1 - new functions find_lunches(), revise_inessentiality(), eye_computations() broken out of make_dragons() - VITAL_EYE_MOVE almost retired - fix bugs in recursive_break() - owl tuning - new and revised tests 3.5.6 released April 23, 2004 - new configure and runtime option large-scale - new change_owl_nodes() - gprintf supports %r - cleanup of patterns/*.sgf - revision of dragon_invincible() - suppress copyright notice in ASCII playing mode or with --version - copyright string shortened - new GTP commands move_probabilities and move_uncertainty - bugfix in unconditional_life() - owl_update_goal() overrides same_dragon == 0 in obvious cases - new and revised tests 3.5.5 released April 15, 2004 - moved TRACE_READ_RESULTS definition to hash.h - initialize lunch data for single owl move - bugfix in compute_eyes_pessimistic(): initialize chainlinks[] - improved sgf trace in trymove: location of tried move noted - complete conversion to new cache - add priority to reading results in new cache - kill unused hash_ng_init() - minor statistics improvements - enlarge owl goal when it has had lunch - komaster and kom_pos made static variables in board.c - edge_block_moves() proposes more moves - don't try to undo when stackp is not zero (GTP mode) - support for multiple engines in view.pike - more info about semeais in dragon_data2 - double-check owl attack moves against dragons involved in semeai(s) - be less optimistic about large, but bulky eyespaces - support for 'make gnugo.pdf' and make 'gnugo.html' in doc/ - slowest move statistics from regress.pike - update usages of time_report() - `twogtp.pike' can now use third engine (arbiter) to score games - breakin and readconnect fixes - first implementation of owl threat combinator--intended for improving move ordering - pattern attributes (shape, followup etc.) are now stored in lists, not in `pattern' structure - there is now a possibility to define virtually unlimited number of new pattern attributes - common code of shapes_callback() and joseki_callback() is broken into new static function handle_joseki_patterns() - new function do_find_more_owl_attack_and_defense_moves() broken out of find_more_owl_attack_and_defense_moves() - induce_secondary_move_reasons() tries to upgrade induced reasons to owl attacks/defenses with do_find_more_owl_attack_and_defense_moves() - strategical attack move reason is induced for saving certain worms adjoining weak opponent dragons - major improvement of analyze_eyegraph functionality in optics.c - adjust min_level and max_level if --level is set outside their range - do not malloc() 0 bytes in pattern_list_build_heap() - aftermath_final_status() declaration moved from gnugo.h to liberty.h - bugfix in find_connection_moves() - bugfix in hashdata_init macro - caching enabled for unbranched owl nodes - comments added explaining heap in readconnect.c - provide links to html regression views from regress.sh - semeai analysis in make_dragons() postponed until after revision of inessentiality - identification of thrashing dragons in make_dragons() postponed until after semeai analysis - avoid overflow in reading_cache_init() - converted owl to use new cache implementation - owl tuning - new game records and test cases 3.5.4 released January 23, 2004 - copyright 2004 added to copyright notices - new static function capture_non_invincible_strings() broken out of unconditional_life() - unconditional_life() revised - new semeai_propose_eyespace_filling_move() tries to play inside eyeshapes - number_of_dragons initialized in initialize_dragon_data() - new option --gtp-dump-commands to dump all incoming GTP commands to file - new function and autohelper owl_lunch() - lunches_are_current field no longer reset in owl_safe_move() - don't claim levels higher than 10 are unsupported - new GTP command unconditional_status - estimate_lunch_eye_value() revised - avoid calling owl_substantial() when not needed in aa_compute_status() - value_move_reasons() revised - special_rescue6_moves() revised - find_connection_moves() revised - computation of NUM_HASHVALUES corrected in hash.h - hashdata_to_string reimplemented - defend4() and special_rescue_moves() revised - avoid ko captures when filling outer liberties in semeai reading - adjust breakin_depth in modify_depth_values() - atari_atari tuning - endgame tuning - eye tuning - fuseki tuning - influence tuning - owl tuning - tuning - new test suite unconditional.tst - new game records and test cases 3.5.3 released January 7, 2004 - new GTP command kgs-genmove_cleanup - compute_crude_status() revised to consider dragons with big territorial moyo value as alive - semeai moves considered safe in mark_changed_dragon - compare number of eyes when both colors pass in do_owl_analyze_semeai() instead of always consider it a seki - do not use the attack point from owl if owl considers a dragon dead but semeai revises it to critical - bugfix in break_through_helper() in reading.c - new static function close_enough_for_proper_semeai() in semeai.c - liberty_of_dragon() transformed into neighbor_of_dragon() in semeai.c - in semeai(), be more careful when considering two dragons involved in a semeai - new static function max_lunch_eye_value() in value_moves.c - when restraining thrashing dragons, do not bother connecting inessential strings which cannot provide an eye (in estimate_strategical_value()) - new autohelper function adjacent_to_stone_in_atari - new static bamboo_rescue_moves() in `reading.c'. - computation of safety and status values in make_dragons() revised to more robustly handle invincible dragons - dragon_invincible() revised - detect_tactical_blunder() revised - owl stack management reimplemented - consider semeai worms adjacent to the outside as important in owl_analyze_semeai_after_move() - additional semeai debug output - let stdout be unbuffered instead of line buffered in play_gtp() - if one dragon is considerably smaller than the other in a semeai, prefer to get ko over seki in do_owl_analyze_semeai() - in a semeai, consider also the eyespaces including opponent semeai worms in order to detect a definite lack of eyespace and to find certain vital moves - off-by-one error in loops over semeai_worms[] corrected - don't allow "safe" common liberties to depend on ko in do_owl_analyze_semeai() - new static function find_moves_to_make_seki() in semeai.c - do semeai analysis for all pairs of critical/dead dragons except when one is inessential, other exceptional cases removed from semeai() - defend4() generates superstring moves - semeai_move_reasons() revised - induce_secondary_move_reasons() revised; do not allow owl attack moves to induce strategic defense of neighbors if involved in a semeai - connection_value() revised to never give points for connection to inessential strings - get_influence() revised - list_move_reasons() revised and made global - new functions print_all_move_values() and prepare_move_influence_debugging() - delta_territory cache can be disabled in estimate_territorial_value() - new GTP commands all_move_values, eye_data, half_eye_data, move_reasons - GTP command influence replaced by initial_influence, move_influence, and followup_influence - GTP command clear_cache now also clears the non-persistent cache - bugfix in corner_add_pattern() (mkpat.c): labels must be rotated too - spread_connection_distances() now delays expensive constraint evaluation, storing pending evaluation on a heap - new function signed_mark_string() - computation of active area revised in store_persistent_connection_cache(), store_persistent_breakin_cache(), and store_persistent_owl_cache() - move_is_marked_unsafe() in move_reasons.h revised - modify_stupid_eye_vital_point() revised - influence tuning - fuseki tuning - eye tuning - endgame tuning - owl tuning - tuning - new test suite seki.tst - new game records and test cases 3.5.2 released November 5, 2003 - Cosmic GNU Go disabled by default. - report_dragon() revised - gtp_worm_data() revised - pattern tagging - regress.sh revised - regress.pike revised - attack2() revised - defend4() revised - slow sorting in get_next_move_from_list() is replaced with heap sorting - new static functions pattern_list_build_heap() and pattern_list_get_next_pattern() in `engine/owl.c' - new command line option --no-cosmic-gnugo - remove global variables score, lower_bound, upper_bound - remove (level >= 8) condition for estimate_score() call - pass our_score instead of score to the move valuation functions - tuning - influence tuning - owl tuning - joseki tuning - new game records and test cases 3.5.1 released September 4, 2003 - semeai() revised to better handle certain cases of multiple simultaneous semeais - find additional semeai moves in semeai_reasons() - added more robust handling of .dtr files - removed option to build pre-rotated DFAs - unconditional_status in struct worm_data changed to enum dragon_status - final_status in the aftermath code changed to use enum dragon_status - enum dragon_status extended with BLACK_TERRITORY, WHITE_TERRITORY, and DAME - new GTP command last_move - threaten_to_capture_helper() and pattern `Sente12' retired - no buffering on stdout in ascii mode - roadmap to engine files in overview.texi updated - move DEBUG_func to showbord.c - pattern tuning: remove "t" classification from various patterns - WHITE_BORDER, BLACK_BORDER, GRAY_BORDER retired - colors and komaster state, safety values and dragon status, cache routine ids are now "enum" - board library: remove all stuff that is not directly related to board (and move it to the engine) - board library: new file board.h as public interface, new file boardlib.c to collect global variable of the board library; - board library documentation updated to reflect changes - new function: hashdata_to_string() - small_semeai() and small_semeai_analyzer() removed - support for !experimental_semeai removed - old semeai() removed and new_semeai() renamed to semeai() - analyze_semeai(), add_appropriate_semeai_moves(), and liberty_of_dragon() removed - old amalgamation (!experimental_connections) code and patterns removed - dragon_eye() removed - basic_cut_helper() and ugly_cutstone_helper() removed - komaster schemes 1-4 removed - komaster_is_empty() retired - komaster_to_string() revised - KOMASTER_TRACE functionality removed - new GTP command combination_defend - revised hash table scheme - new COSMIC_GNUGO function choose_best_strategy() sets tuning parameters - new global tuning parameters: minimum_value_weight, maximum_value_weight, invasion_malus_weight, strategical_weight, territorial_weight, attack_dragon_weight; - remove unneeded configure stuff, add -Wundef to SOME_WARNINGS - replace setlinebuf by setvbuf - add safety_hash field to delta territory cache, reenable this cache - cgi interface in interface/html directory removed - owl tuning - new game records and test cases 3.4 released July 31, 2003 - breakage2tst.py and gnugo-db.el added to EXTRA_DIST - wariuchi fuseki: invade between shimaris - new sgmp mode - regress.pike added to EXTRA_DIST - revision of copyright notices - warnings fixed on some platforms - doc revision 3.3.23 released July 15, 2003 - bugfix in show_dragons() - redistribution consistency checking disabled for stable release - gg_genmove replaced by reg_genmove almost everywhere in the regressions - twogtp.py and twogtp.pike added to gtp_examples/README - twogtp and twogtp-a made GTP version 2 compliant - break-in code turned off below level 10; other level cutoffs revised - support for ranges in sgf files - time summaries reported with --showtime in gmp mode - TODO revised. - clock_init_autolevel() retired - new global variables min_level and max_level - new options --min-level and --max-level - time handling implemented in play_gtp.c - speedup: move some functionality of update_liberties() to do_remove_string() - bugfix in do_play_move() - doc: delete most lists of functions - doc: remove move_generation.texi overview sections - doc: reorder - doc: Consistently use hierarchical structure instead of next/previous/up - tuning - owl tuning - eye tuning - doc: complete rewrite of first sections of overview.texi - doc: subsection on 1D board array moved to board.texi - doc: references to cavities in dragon amalgamation removed - new game records and test cases 3.3.22 released June 28, 2003 - break-in code turned off below level 9 - VPATH modifications in regression/Makefile* - new function thrash_around_helper() - thrashing patterns in patterns.db - configure --enable-cosmic-gnugo produces a center-oriented engine - added cache for results of approxlib() and accuratelib() - new static functions do_approxlib() and do_accuratelib() in board.c - finish_sgftrace() will not free the trace tree if not written successfully - remove tabs from twogtp.py - twogtp.py checks that board is not empty before indexing it - active area for persistent breakin cache shrinked - new HIGH_LIBERTY_BIT2 in persistent caches, used by breakin cache - new function break_chain4_moves() - owl moves for non-critical dragons discarded - do_owl_analyze_semeai() revised - detect_owl_blunder() also looks for semeai defenses - estimate_strategical_value() revised - new function defend_secondary_chain_moves() in reading.c - new parameter be_aggressive to break_chain2_moves(), break_chain2_defense_moves() and break_chain3_moves() - new depth value: break_chain_depth - defend2() no longer plays on self atari liberties - superstring_breakchain_moves() renamed superstring_break_chain_moves() - fix "no moves found" logic in various readconnect.c functions - new debug flag DEBUG_BREAKIN - "smaller goal" in breakin.c revised - be more careful when erasing territory after successful break-in - break-in move generation bug fix - endgame_find_backfilling_dame() revised - new global array forced_backfilling_moves[] - find_backfilling_move in filllib.c revised - disable revise_semeai() when doing_scoring - no bonus for attack or defense of dead potential cutstones when doing_scoring - reevaluate_ko_threats() revised to avoid playing losing ko threats - RTRACE and VTRACE retired - corrected format of AP property in sgf_write_header() - tuning - owl_tuning - new game records and test cases 3.3.21 released June 3, 2003 - revision of owl_strong_dragon() - extra care is now taken not to waste points on tiny ko threats - ko threats with large followups always preferred to large reverse followups - twogtp.py fixed to handle jigo in endgame contests - made --enable-experimental-break-in the default - compute_smaller_goal() makes the goal even smaller in the block_off case - persistent caching for break_in()/block_off() - inessential dragons handled differently in estimate_territorial_value() - use smaller goal area when trying to break into territories - semeai_trymove_and_recurse() propagetes back changes to &owla, &owlb - copy over old eye_data in do_owl_defend() if escape > MAX_ESCAPE - new configure option --experimental-break-in - load_and_score_sgf_file() revised - detect_tactical_blunder() revised - ko result codes no longer discarded in owl_analyze_semeai() - new_semeai() revised - decide_semeai() in sgfdecide.c revised - GTP command owl_analyze_semeai renamed to analyze_semeai - new function owl_analyze_semeai_after_move() and corresponding GTP command analyze_semeai_after_move - gtp_owl_analyze_semeai() revised - new static function semeai_trymove_and_recurse() in owl.c - all owl_analyze_semeai regression test cases changed to analyze_semeai and revised for new result format - bugfixes in breakin.c and block_off() - new helper functions goal_to_hashvalue(), xor_hashvalues() - new function get_read_result_hash_modified to enable calling functions to use a modified hash value when storing/looking up results in cache - results for recursive_break() and recursive_block() now get cached - cast to avoid warnings - documentation revisions 3.3.20 released June 3, 2003 - hoshi.sgf split into hoshi_keima.sgf and hoshi_other.sgf - new functions recursive_break(), recursive_block() in readconnect.c: decide whether a string can be connected to an arbitrary goal area - new functions break_in(), block_off(), frontends to the functions above - corresponding GTP commands break_in, block_off - new file breakin.c evaluates whether territories can be broken in - new command line --experimental-break-in to evaluate territory break-ins - retire move_safety check in value_moves.c for territorial move valuation - read_eye() revised - `num_defends' field of half_eye_data strtucture renamed `num_defenses' - maximum 15 points of territorial_value will get shape bonus - change of semantics for --seed option - new GTP command printsgf - debugboard repaired - TODO revised - new function partition_eyespaces() - new function owl_find_relevant_eyespaces() - cpu time support for regress.pike - broke new spread_connection_distances() out of compute_connection_distances() - new spread_connection_distances() tuned - t moves devalued to value 16 - new function edge_distance() in board.c - CPU time reported by twogtp.py - new static function endgame_find_backfilling_dame() in endgame.c - new static function endgame_find_liberties() broken out of endgame_analyze_worm_liberties() - new owl_mineye() and owl_maxeye() and corresponding autohelper functions - move_connects_strings revised not to try connecting invincible strings - ALL_MOVE move reasons no longer considered to guarantee a safe move - never give cutstone bonus for an inessential string - new test suite joseki.tst - do_push_owl() doesn't copy unnecessary fields of local_owl_data anymore - retire special meaning of owl pattern values 99 and 100 - bugfix in revise_semeai() - find_half_and_false_eyes() bugfixed - improve_lunch_attack() revised - D219 pattern retired - new pattern action good_attack_threat overrides heuristics in value_moves.c - new global known_good_attack_threats[][] - new functions register_good_attack_threat(), is_known_good_attack_threat() - make delta territory cache aware of base influence recomputation - owl_find_lunches() revised - owl_determine_life() bugfixed - owl.c made completely 1D and other revisions - new GTP command analyze_eyegraph - new functions analyze_eyegraph(), evaluate_eyespace(), tactical_life(), tactical_life_attack(), and tactical_life_defend() in optics.c - new functions set_/get_/update_/reuse_random_seed() - save and restore random_seed where it is set to zero in deterministic GTP commands - adjust conection and semeai depth parameters according to levels - don't forget to switch exchange sgf_messages in order_moves() - influence tuning - tuning - joseki tuning - owl tuning - major eye tuning - atari_atari tuning - new tests and test revisions 3.3.19 released April 28, 2003 - change USE_BDIST to 1 in owl.c - who_wins() invokes silent_examine_position() - bugfix in do_owl_analyze_semeai() - global variable urgent retired - num_stones pointer in do_corner_matchpat() replaced with macro - joseki tuning - new game records and test cases 3.3.18 released April 22, 2003 - don't even try 'wrong' liberties in simple_ladder_attack() - major revision of do_owl_analyze_semeai() - do_owl_analyze_semeai tracks ko results and result certainty - semeai tactical phase deprecated - semeai_trymove() eliminated - semeai worms redefined - new r format character supported by vgprintf - uncertain semeais treated as critical - new function sgf_trace_semeai() in cache.c used by SGFTRACE_SEMEAI() macro - new dragon2 fields semeai_attack_certain and semeai_defense_certain - owl_estimate_life() revised for use in semeai reading - don't attack unconditionally dead stones, even if thrashing - never play on vertices which are unconditional territory for either player - bugfix in attack_either() - back-capturing added in attack1() and code restructured - new regression script regress.pike - hashtable_clear() doesn't clear already clean parts of the table - `stackp' pseudofield in Read_result renamed `remaining_depth' - endgame1.sgf removed from the distribution - play_move_no_history() revised to speed up undo - modify_eye_spaces(), remove_lunch(), and not_lunch_helper() removed - new function estimate_lunch_eye_value() broken out of sniff_lunch() - obvious_false_eye() moved from owl.c to optics.c - lunch invalidating patterns removed from conn.db together with corresponding code in connections.c - semeai moves stored in dragon2 array - new functions collect_move_reasons(), semeai_move_reasons() - new prevent_attach_threat_helper() adds reverse followup value - DEBUG_TERRITORY made less confusing - handle suicides in do_commit_suicide(), not in do_play_move() - fix prisoner accounting in do_commit_suicide() - DEBUG_INFLUENCE made less noisy - bugfix in gnugo_estimate_score() - reevaluate_ko_threats() revised - new helper backfill_replace - revisions of twogtp.py - bugfix in play_move() - improved output files from scoring mode - traces added to find_double_threats() - semeai tracing improved - fix arraybound violation in corner_matchpat() - tuning - influence tuning - joseki tuning - owl tuning - atari_atari tuning - eye tuning - new and revised test cases 3.3.17 released March 2, 2003 - most superstring related move generation broken into new superstring_moves() - try (a bit) harder in attack_either() - semeai worms do not have to be adjacent but may instead share a liberty - only claim win for attacking a semeai worm if the attack is unconditional - moves to defend a semeai worm are marked as possibly connected to the dragon - liberty_of_goal() shall consider goal vertices where stones were captured - allow conditional ko capture in attack4() - new function is_corner_vertex() in board.c - mark_dragon() changed from static to global - global variable time_to_die removed - revision of new_semeai() - endgame move generator beginnings implemented in endgame.c - endgame() in ascii.c renamed ascii_endgame() - dragon_weak() moved to dragon.c - bugfix in owl_substantial() - merge superstring related tactical move generators into superstring_moves() - resigning of hopeless games implemented (over GTP and in replay mode) - ascii interface revised to support resignation - twogtp.py revised to support game resignations and endgame contests - ascii_endgame() renamed ascii_count() - new ascii_endgame() in play_ascii.c - new command-line option --resign-allowed - twogtp script updated to understand resignation - owl_* fields moved from struct dragon_data to struct dragon_data2 - more trace output in do_atari_atari() - update_aa_goal() revised - new dfa builder implemented in dfa.c - dfa size reduction algorithm implemented - dfa transformation hints (.dtr) files added to repository - speed optimizations in cache.c - hashtable_unlink_closed_results() renamed hashnode_unlink_closed_results() - check for snapback/oiotoshi reactivated in check_self_atari() - joseki patterns are matched using corner matcher - symmetrical joseki patterns no longer match twice - antisuji joseki patterns are handled by callback now - goal_elements and callback_data added to all relevant databases to drop unnecessary pattern elements - add missing break in main.c - do_owl_analyze_semeai doesn't crash on certain inconsistent eye results - bugfix in adjacent_to_nondead_stone() - unneeded fflush(stdout) flushed from patterns/connections.c - new tests - atari_atari tuning - joseki tuning - owl tuning - tuning - speed up scan_for_patterns() - remove DFA_SORT 3.3.16 released January 29, 2003 - redundant patterns removed from hoshi.c - killer move heuristic in reading.c - bugfix in evaluate_diagonal_intersection - do_owl_analyze_semeai doesn't crash on certain inconsistent eye results - new static functions mark_dragon() and identify_thrashing_dragons() in dragon.c - dead friendly neighbors of a thrashing dragon also considered thrashing - new global array thrashing_stone[] to mark all thrashing dragons - drop move reasons in add_move_reason() when the lists become full - bugfix in value_move_reasons() - MAX_REASONS increased to 120 - persistent connection cache implemented but disabled by default - bugfix in estimate_score - bugfix for unsigned char's concerning pessimistic_min - bugfix: estimate_score was called many places with parameters switched - don't crash reading a bogus sgf file - more reading functions use candidate move mechanism - new fast_defense() looks for fast ways to get liberties - switch strings sometimes in defend_both - atari_atari tuning - influence tuning - tuning - new tests and regressions - doc revision 3.3.15 released January 12, 2003 - evaluate_diagonal_intersection() tries additional moves to defend a diagonal - does_secure() made global and moved to reading.c - owl_add_move has a new parameter max_moves - --allpats works with semeai - defend_both() revised to require that both strings can be saved without ko - adjacent_to_nondead_stone() in value_moves.c generalized - try harder in estimate_territorial_value() to detect when an ATTACK_THREAT should not yield a followup value - do not use tactical defense threats as ko threats unless the move itself is strategically safe - do not count strategical value for tactically critical dragons - small bonus to dame moves which have a cut or connect move reason - threaten_to_capture_helper() revised - new autohelper adjacent_to_defendable_stone_in_atari - new corner_point in owl.c - revision of improve_lunch_attack - surround code revised - surround code moved up in in make_dragons() and used to correct escape route - new utility function square_dist() in board.c - new alternate gnugo.el in interface/gtp_examples - semeai nodes increased to 500 - owla life accepted on escape in do_owl_analyze_semeai only if stackp>2 - use status instead of owl_status in find_more_owl_attack_and_defense_moves - speed optimizations in board.c, particularly fastlib() - now possible to reduce MAX_BOARD and still get working GNU Go - mkpat now has amechanism for dropping patterns - corner database creation implemented - corner database pattern matcher implemented but not activated - bugfix in play_ascii.c: allow changing handicap/komi etc. in new games - fixed broken indentation in play_ascii.c - bugfix in gtp_known_command - new visible_along_edge() and autohelpers - influence tuning - tuning - eye tuning - new game records and regression tests - doc revision 3.3.14 released January 1, 2003 - life.c removed from the distribution - semeai module made standard - never decrement *eyemin to negative - unnecessary patval elements removed from some pattern databases - mkpat understands goal_elements and callback_data directives - new autohelper : owl_eye_size() - tuning - owl tuning - Copyright notices updated for 2003 - code maintenance 3.3.13 released December 22, 2002 - new aa_ pattern A16 - tactical move ordering tuned - complete rewrite of interface to influence.c - new macros INITIAL_INFLUENCE(color), OPPOSITE_INFLUENCE(color) - new functions compute_worm_influence(), get_lively_stones(), compute_dragon_influence(), get_alive_stones(), set_dragon_strengths(), mark_inessential_stones(), set_strength_data(), mark_changed_string() to set up calls to compute_influence() - new gtp command clear_cache - new functions clear_persistent_owl_cache, clear_persistent_reading_cache - joseki preparations: mkpat cleaning - joseki preparations: some currently unused mkpat options changed - joseki preparations: autohelpers no longer take `patt' argument - set_value_helper() retired and replaced with inline code, generated by mkpat - structures for the coming joseki pattern matcher defined in patterns.h - use "territorial_influence" for pre-owl initial_influence - safety values WEAKLY_ALIVE and WEAK removed - use dragon2[].weakness or new field .weakness_pre_owl instead in most places - use crude_dragon_weakness() to decide whether owl analysis is needed - intersections with prisoners only contribute 1.0 to moyo_value - arrays worms[], dragons[] removed in worms.c and value_moves.c - new discard rule to enforce definiton of attack either/defend both reasons - cleanups and improvements in board.c - new function set_up_snapback_moves() in reading.c - defend1() and restricted_defend1() revised - TRACE macros and friends unified - matchpat.c converted to 1D - strategic bonus for connecting critical dragons out reintroduced - strategic effect on critical dragon ignored unless move has owl move reason - influence debug output enhanced - defense functions in reading.c reorganized - eye_vertex and eye_graph structures reorganized - mkeyes.c rewritten to conform the changes in eyes.h - adjacent() and buggy hadj() macros in optics.c retired - recognize_eye(), first_map() and next_map() simplified and sped up - new static reset_map() in optics.c - new autohelpers omoyo_opposite and xmoyo_opposite - CLASS_I added to CLASS_MOVE_REASONS in patterns.h - compactify_att() removes duplicates from attribute list in DFA - dfa_rt_t.next now stores offset to next state - new fucntion dfa_shuffle() to minimize jump sizes between DFA states - shorten generated pattern files to avoid too many lines warning - new GTP command restricted_genmove - new function genmove_restricted() in genmove.c - new parameter allowed_moves[] to do_genmove(), review_move_reasons(), and find_best_move() - always call init_board() when reaching a new_position() - eyes.db revised - bugfixes in cut_connect_callback() in connections.c - tuning - owl tuning - influence tuning - connection tuning - new tests 3.3.12 released November 20, 2002 - optimization in do_play_move: don't check ko unnecessarily - revision of critical worms to inessential in make_dragons() revised - owl vital attack patterns now also used for owl defense - major revision of connection_value(), using new function crude_dragon_weakness() - reading.c: new move for defend1(): try to set up snap back - reading.c: special_rescue4() generalized to hane_rescue_moves() - a connection move where amalgamtion is inhibited by cut_possible() may induce further connection moves - new oracle.c and oracle.db - oracle is a second gnugo process communicating with the gtp by unix pipes - experimental alternative move generation --metamachine using oracle - demonstration pattern database using oracle - bugfix: gnugo_get_komi() returns float as it should - ..goal_list macros converted to functions in owl.c - bugfix in owl_determine_life() - new functions min_eye_threat() and max_eye_threat() in optics.c - somewhere() revised - new autohelper functions [ox]_alive_somewhere - autohelper functions [ox]_somewhere revised - major revision of find_connection_distances() - other revisions and tuning in readconnect.c - bugfix in find_defense: compare against fourlib_depth when appropriate - compiler warnings fixed - new struct dfa_rt_t allows different run-time DFA structure from build-time - optional #define USE_BDIST in owl.c for better rotational independance - new and revised tests - new eat_lunch_escape_bonus() called by sniff_lunch() - 'make all' does not cause build of extract_fuseki and debugboard - owl_determine_life is careful if saving a lunch attacks an eye - bugfix: typo in store_persistent_reading_cache() - major cleanup in influence.[ch] - pre-rotated pattern generation in mkpat. (-p option) implemented. - %2m added as valid syntax for gprintf - relabel rotation matrices in transform.c - bugfix in atari_atari_blunder_size: don't crash on inconsistent defense - autoharvesting of documentation from play_gtp.c - tuning - komoku and hoshi tuning - eye tuning - owl tuning 3.3.11 released October 29, 2002 - experimental connection code made default - configure --help cleanup - minor changes to twogtp* - revision of CB20 in conn.db - calls to accurate_approxlib() replaced by accuratelib() - owl_find_lunches() revised - owl tuning - eye tuning - new game records and regression tests 3.3.10 released October 20, 2002 - fastlib revised - new accuratelib intended to replace accurate_approxlib - incremental_self_atari merged into revised is_self_atari - accurate_approxlib moved to board.c - old sgftree is now freed on successful sgf loading - sgftrees are freed when sgf tracing is finished - sgffile_printsgf() revised - gtp_fixed_handicap revised - comments improved in play_gtp.c. - play_ascii() revised - combinations() revised - atari_atari() generates lots of defense moves and validates them - do_atari_atari() generates lots of potential defense moves - decide_combination() revised - YOUR_ATARI_ATARI_MOVE considered safe in examine_move_safety() - atari_atari tuning - new GTP commands attack_either and defend_both - optimization in compute_connection_distances() - owl code reorganization - new clear_owl_move_data() set_single_owl_move(), - break out reading_limit_reached(), owl_estimate_life() from do_owl_attack/defend - mode local_owl_node_counter global variable for owl.c - made long "if (pass == ...)" statements "switch (pass)" in owl.c - eliminated unnecessary variable "found_read_result" in owl.c - new strategic_effective_size() - computation of strategic effect is modified - new static read_eye() tries to improve recognize_eye() results - recognize_eye() sets vp->num_attacks/defenses to 0 when eye is found - new file surround.c - new is_surrounded(), does_surround() and surround_map() - new gtp functions is_surrounded, does_surround and surround_map - new autohelper macros is_surrounded, does_surround and surround_map - new command line option --decide-surrounded - new global variable gtp_version - new option --gtp_version - new function simple_showboard() in showbord.c - new function get_last_player() in board.c - gtp code revised for GTP version 2 and uses this by default - new function delete_persistent_reading_entry() - inconsistent results in attack_and_defend() resolved - compilation errors for EXPERIMENTAL_READING fixed - new experimental owl code is aware of tails getting captured - new move reasons OWL_ATTACK_MOVE_GAIN and OWL_DEFEND_MOVE_LOSS with corresponding supporting code in value_moves.c and move_reasons.c - new move reason INVASION_MOVE - pattern class I (invasions) can now be used in patterns.db et al and not only in influence patterns - remove EXPAND_TERRITORY_MOVE from strategic_penalty() - new static function do_find_break_chain2_efficient_moves() split off from break_chain2_efficient_moves() and revised - superstring_breakchain() revised - speed optimization of compute_primary_domains() - countlib() calls eliminated in count_common_libs(), find_common_libs(), and have_common_lib() - escape_value arrays changed from int to char - bugfix in code awarding strategical value for attacks/defenses of lunches - bugfix in ATTACK_THREAT handling in estimate_territorial_value() - bugfix in owl_substantial(); depth values modified correctly - depth consistency assertion added in do_genmove() - bugfix in mkpat.c - new static functions analyze_false_eye_territory(), connected_to_eye(), and connected_to_eye_recurse() in dragon.c. - new global array false_eye_territory[] - critical dragons only consisting of inessential worms are revised to be inessential - new function is_false_eye() in optics.c - new autohelper functions o_captures_something(), x_captures_something(), false_eye_territory(), and false_eye() - owl_tuning - eye tuning - influence tuning - tuning - new game records and regression tests 3.3.9 released September 29, 2002 - new configure option experimental-owl-ext - code simplification in safe_move (use REVERSE_RESULT) - new randomness_scaling field in struct move_data and new scale_randomness() - moves matching Fj and Ft patterns get extra randomness - fuseki pattern tuning for kakaris in high handicap games - persistent cache code moved from reading.c and owl.c to new file persistent.c - speed optimization in order_moves() in reading.c - speed optimizations in fastlib(), count_common_libs(), find_common_libs() - duplicate lines removed from safety_to_string() - draw_active_area() functions in reading.c and owl.c unified - new ascii command: freehandicap . - new function: ascii_free_handicap - report_worm(): print all attack, defense, threat points/codes - worm_data::defend_codes is now called defense_codes - enhanced result_to_string() with new return codes. - removed strategically_sound_defense() - mingw build searches for mingwex - pattern symmetry corrections in owl_defendpats.db and patterns2.db - bugfix in topological_eye() - don't spread any influence below INFLUENCE_CUTOFF - mark_safe_stones() distinguishes between SAFE_STONE and OWL_SAVED_STONE - detect_owl_blunder() calls owl_confirm_safety() if move may harm own eyes - bugfix and speedups in accumulate_influence() - bugfix in value_territory() - comment play_connect_n() - document play_connect_n() in the texinfo docs - bugfix in play_connect_n (trace output) - fix comment in find_double_threats() - break_chain2_moves() revised - do_play_move() revised to improve performance - corrects quoting of special characters in regress.plx - sgffile_loadandprint() renamed to sgffile_printsgf() and revised - use EOF rather than -1 the code to read sgf files in sgfnode.c - major revision of code to write an sgf tree to file in sgfnode.c - set_depth_values() reorganized - new function find_half_and_false_eyes() in optics.c - blunder_size() code reorganized - new static detect_owl_blunder() and detect_tactical_blunder() in utils.c - for walking across dragons new first_worm_in_dragon(), next_worm_in_dragon() - new next_wormlist[] - mark_changed_dragon() revised using dragon loop - bugfix in fill_liberty() - filllib_confirm_safety() revised - make_dragon(): resolve inconsistent owl result by calling owl_does_defend() - add assert on inconsistent do_genmove result() in genmove() - life code completely disabled - global variables life and life_eyesize removed - options --life and --life-eyesize removed - new eye value scheme; all code handling eye values revised - new functions set_eyevalue(), min_eyes(), max_eyes(), add_eyevalues(), eye_move_urgency(), eyevalue_to_string() - eyes.db revised for new eye value scheme and substantially extended - configure test for alarm removed - sigterm_handler() and volatile variable time_to_die removed - functions special_rescue(), special_rescue2() converted to .._moves() - break_chain2() removed; use new break_chain2_defense_moves() instead - defend2() and defend3() simplified - new reading codes GAIN/LOSS for later use in owl - more consistent use of WIN and REVERSE_RESULT() macros - new function sgffile_load_and_print() - new call convention for sgftree* functions - sgftreeCreateHeaderNode() revised - sgffile_debuginfo() renamed to sgffile_add_debuginfo() - new call convention for sgffile_output() - --color option effective in scoring mode - sgftree struct and functions consistently used in play_gmp(), play_solo(), load_and_analyze_sgf_file(), and load_and_score_sgf_file() - new arrays close_worms[][], close_white_worms[][], close_black_worms[][], number_close_worms[], number_close_white_worms[], number_close_black_worms[] - compute_surrounding_moyo_sizes() revised - compute_surrounding_moyo_sizes() variant for experimental-connections option - new function influence_get_moyo_data() - tuning - owl tuning - new game records and regression tests 3.3.8 released September 5, 2002 - remove unneeded inclusion of stdlib.h in helpers.c - bugfix in matcher_check - URL's updated in documentation - tests updated 3.3.7 released September 4, 2002 - better ko tracking searching for additional worm attacks and defenses in find_more_attack_and_defense_moves() and make_worms() - new option --output-flags - output using sgf trees with -o option - cleaning and minor bugfixes in play ascii - sgf handling is disconnected from engine again - moved sgfAddDebugInfo -> sgffile_debuginfo, outputsgf -> sgffile_output - write "forced" as comment when this ascii mode command is used - sgftree_readfile does not change root node to NULL - new blunder_size(), atari_atari_blunder_size() compute the blunder size - remove vital_string logic in atari_atari code - remove allowed_blunder_size heuristic in review_move_reasons() - instead use blunder size more exactly in new function find_best_move() - bugfix in hashtable_partially_clear() - bugfix in gameinfo_play_sgftree_rot() - bugfix (reading uninitialized memory) in sniff_lunch() - bugfix (EXPERIMENTAL_CONNECTIONS) in cut_connect_callback() - bugfix (gameinfo_load_sgfheader) in play_ascii() - man page revised - new options --mirror and --mirror-limit - new global variables play_mirror_go and mirror_stones_limit - new static find_mirror_move(), test_symmetry_after_move() in genmove.c - Apply "B" cutting pattern from shapes.db only if connection code confirms - new function test_attack_either_move; gets invoked by patterns instead of directly adding the attack-either move reason - new function mark_changed_dragon() in move_reasons.c - only mark owl defended stones as safe if also sufficiently tactically safe - matcher_check can analyze existing sgf files - twogtp-a kills processes - break_chain2_moves() revised - placehand() renamed to place_fixed_handicap() - new function place_free_handicap() in handicap.c with associated - static find_free_handicap_pattern(), free_handicap_callback() in handicap.c - new GTP command place_free_handicap - new pattern database handicap.db - new autohelper macros handicap_stones, total_handicap_stones for handicap.db - mkpat.c revised to avoid compiler warnings for constraints using no labels - new file engine/handicap.c - placehand() moved from genmove.c to handicap.c - bug fix in adjusted_worm_attack_value() - FIXME added regarding several EITHER_MOVE reasons - show_dragons() revised - tuning - influence tuning - connection tuning - owl tuning - revised tests, many new tests, new game files - added Evan Berggren Daniel to AUTHORS 3.3.6 released August 13, 2002 - extended_chainlinks() revised - MAX_REASONS increased from 80 to 100 - modify_stupid_eye_vital_point() revised - new functions improve_lunch_attack() and improve_lunch_defense() - backfilling in do_owl_attack() when trying the defender's best move - sniff_lunch() revised - new experimental_connections contingent code in shapes_callback() - induce_secondary_move_reasons() revised - tuning - endgame tuning - owl tuning - request id no longer passed to callbacks in play_gtp.c - gtp_printid() renamed to gtp_start_response() - new preprocessing of command lines in gtp_main_loop() - GTP command dragon_status revised - bug fix in estimate_strategical_value: EITHER_MOVE negative values - j pattern value increased from 22.0 to 24.0 - new gtp experimental_score for metamachine - new DEBUG_MISCELLANEOUS used only in find_eye_dragons - connection tuning - B patterns found by find_cuts inhibit C patterns by find_connections - new connection tests - strategic_penalty() adds negative strategical move value a bit more often - revise_thrashing_dragons() revised - tuning - owl tuning - new tests and game records 3.3.5 released July 5, 2002 - bugfix in break_through_helper() - bugfix in combinations() - reduced_init_owl() allocates bigger owl stack with --experimental-semeai - bugfixes in pop_owl(): don't crash if owl stack has moved - reduce reading depth by one in influence pattern matching - new struct reading_moves in reading.c - owl stack can now handle two local_owl_data structs - semeai code now uses owl stack - don't push owl data in owl_analyze_semeai below branch depth - Don't change critical dragons to dead due to semeai results - DEBUG_SEMEAI trace enhancements - semeai refinements - owl_phase now local variable in do_owl_analyze_semeai - bugfix in do_owl_defend(): computation of escape parameter - bugfix in play_ascii.c: don't crash on unusual boardsizes - dead stones with no neighbors are captured territory - improved debug traces in score.c - decide-dragon clears cache between owl attack and defend - influence pattern tuning - new tests and regressions 3.3.4 released June 19, 2002 - segment_regions also computes territorial value of regions if available - dragon2.moyo_size_pre_owl andmoyo_size_post_owl replace dragon2.moyo - new dragon2.moyo_territorial_value, weakness - strategic dragon evaluation rewritten, setting dragon2[].weakness - moved interpolate to gg_interpolate in gg_utils.c - new struct eyevalue - moves to connect two dragons which are both adjacent to a thrashing dragon are appreciated by the move valuation - experimental connections off by default in VC build - tuning - influence tuning - connection tuning - eye tuning - joseki tuning - owl tuning - new tests and game records 3.3.3 released June 4, 2002 - new function owl_strong_dragon() and new autohelper with the same name - vital_chain() returns the max number of eyes - no amalgamation around eye spaces with experimental_connections enabled - eye spaces no longer modified by INHIBIT_CONNECTION with experimental_connections enabled - bugfix in find_connection_moves() - pattern classes Y and W introduced in conn.db to identify patterns which only applies with or without experimental_connections - patterns with class e in conn.db changed to class I to better reflect current usage - connection tuning - improves DFA compile time by doing fewest possible large syncs - experimental_influence command line and configure option removed - new flags dragons_known and is_territorial_influence in influence_data - struct local_owl_data for speedup only holds eye space of relevant color - owl_eyespace() and allies use only one eyespace - dfa doesn't report symmetric patterns multiple times - escape patterns in owl_defendpats.db given E classification - owl_determine_life() not called during escape attempt - only print debug output for eyes during owl reading if owl debug is on - better traces for unused owl patterns - --decide-connection also reports ko results - bugfix in load_and_score_sgf_file() - new test cases - edge_block and double_atari_chain2 renamed to *_moves - do_attack uses simple_ladder_attack when stackp > depth+10 - give up simple_ladder_attack below 20 ply when we are komaster - unused caching code removed from attack? and defend? - macros used to make reading code readable - dragon field in struct eye_data removed - new function find_eye_dragons() in optics.c - dragon_invincible() and genus computation in make_dragons() revised - play_connect_n() uses string_connect() and disconnect() unconditionally, no longer contingent on experimental_connections - default value for experimental_connections reset to 0 - new command line option --decide-dragon-data - consistency checking of replacement patterns reenabled for unstable line - tuning - new tests and sgf files 3.3.2 released May 6, 2002 - Macro PATTERN_CHECK_ON_DEMAND retired - allpats options for owl shape moves repaired - new function extended_chainlinks() in board.c - connection and cut move reasons are relative to worms, not dragons - unused find_worm_pair() and related variables removed from move_reasons.c - MAX_REASONS increased from 40 to 80 - induce_secondary_move_reasons() reimplemented - tuning - new test case - fix warnings generated by regress.plx - doc revisions - add_block_territory_move() removed - BLOCK_TERRITORY_MOVE reason removed - compute_shape_factor() and move_connects_strings() moved to value_moves.c - move_reasons_confirm_safety() moved and renamed value_moves_confirm_safety() - b patterns changed to e in endgame.db, fuseki.db, patterns.db, patterns2.db - classification letters ordered consistently in pattern databases - find_backfilling_move() in filllib.c revised - new debug flag DEBUG_TOP_MOVES - environment variables GG_OPTIONS and GNUGO when (make)ing tests - top moves list maintained when moves are rejected - bugfixes in metamachine - regression revisions 3.2 released April 25, 2002 - revision of copyright statements and THANKS - handtalk games moved to their own directory - correct move number reported in influence for illegal move error 3.1.34 released April 20, 2002 - "choose best anchor"-platform dependency patch in mkpat.c - bogus (int) conversion removed in get_next_move_from_list - 3.0 replaced by 3.2 in WINDOWS 3.1.33 released April 19, 2002 - regression/READING, STRATEGY and NICKLAS removed - makevcdist.pl, doc/gnugo-32.[jpg|eps]added to EXTRADIST - eval3.sh and semeai2.tst added to automake control - TODO list in texinfo updated - class field in struct pattern and class_mask in made unsigned int - input_FILE and output_FILE in mkpat.c explicitly initialized - tree based reading not compiled by default - consistency checking of replacement patterns disabled for the stable release - more Handtalk games in CVS - Jessie Annala THANKed - new function gg_normalize_float2int to address optics.c-platform dependency - hash_init behaviour made independent of boardsize - output cleanup: --statistics, and EITHER_MOVE-trace - floats normalized in finish_pattern() in mkpat.c - put GNU Go's passes in permanent move history - assertion in compute_connection_distances corrected 3.1.32 released April 13, 2002 - new update_random_seed() - gtp_set_boardsize updates the random seed - reset engine updates the random seed - aftermath revisions - combination of --score aftermath and -o options more useful - dead function opponent_not_passing() removed from genmove.c - init_influence() and new_value_territory() revised - sgftree_printboard() made global - bugfix in owl_hotspots() - valuation of attack threats revised to allow more ko threats - bugfix in estimate_strategical_value() - solid string connection bonus revised to also favor cuts of opponent - play_gtp() starts with boardsize of board loaded with -l instead of 19 - no warning by default for FF[1] sgf game records - bugfix in push_owl - corrected assertion in examine_cavity() - shadowed variables fixed in dragon.c - major aftermath code revisions - doing_scoring contingent revisions in influence_callback(), shapes(), shapes_callback(), connection_value(), estimate_strategical_value(), high_handicap_helper(), and reinforce_helper() - analyze_neighbor() in filllib.c revised - size of persistent owl cache increased from 100 to 150 entires - bugfix in owl_confirm_safety() - territorial value computed for tactical attacks of dead or defenseless stones - caching of recent compute_escape_influence() results - reading cache stores depth-stackp instead of stackp - infl_followup_value renamed influence_followup_value and initialized - initialize_dragon_data broken out of make_dragons - dragon_data initialized even on empty board - owl reasons ignores empty board positions - twogtp does not report duplicate scores unless they differ - new gtp get_random_seed, set_random_seed - tuning 3.1.31 released April 4, 2002 - boardsize field added to persistent caches in reading.c and owl.c - break_chain_efficient_moves() revised - new function reduced_init_owl() in owl.c - mark_dragon_hotspot_values() revised - revised handling of inessential stones in init_influence() - bugfix in strategic_penalty() - owl speedup: owl data immediately stored in owl_stack - bugfix in do_owl_defense() - attack() now always returns PASS as move if there is no attack - some ASSERTs removed in board.c. - revision in get_next_move_from_list - bugfix in find_connection_moves() - begin_sgftreedump() can take a NULL pointer parameter - new gtp command ladder_attack - unneeded include directories removed from sgf/Makefile.* - seed field removed from Gameinfo struct - new global variable random_seed - joseki tuning - Handtalk games in regression/games - doc revision 3.1.30 released March 30, 2002 - target sgf_properties.h not built by default - bugfixes in defend2(), special_rescue(), and special_rescue2() - MAX_INTRUSIONS doubled in size - intrusions beyond MAX_INTRUSION silently discarded - new connect_and_cut_helper2 autohelper macro - platform dependency resolved in store_persistent_reading_cache - EXP_J_VALUE increased to 35 in shapes.c - graph_ renamed to tree_ in mkpat.c & related files - a few FIXMEs addressed - tuning - influence tuning - new logo-32.jpg and logo-32.eps - newlogo.eps made smaller using level 2 postscript - doc revision 3.1.29 released March 26, 2002 - asymmetry in influence computation reduced - case added in strategic_penalty - simulation of ko threat + answer in sgf output reinstated in tryko() - new function gg_normalize_float() in gg_utils.c - platform dependency fixed in readconnect.c by using gg_normalize_float() - scoring tweaks and optimizations - bugfix in gg_cputime() - new function influence_initial_territory to export territory valuation - negative strategic value added to invasion type moves - keima shape bonus removed in CB204b - tuning - influence tuning - code consistency cleanup - new tests in nngs1.tst - THANKS updated 3.1.28 released March 24, 2002 - hashing dependent on compiler switches, default 64 bit and no full position - default cache size set to 8 - --stack option and showstack global variable removed - cache.o removed from libboard.a - unneeded include of dfa.h removed from patterns.h - compiler warnings fixed: dragon2_func prototyped, etc. - bugfix in confirm_safety() plus 1D conversion - komaster scheme 5 implemented and made default - update_aa_goal() in combination.c revised - heuristics to estimate cost of pattern constraint introduced - constraint cost used in owl callback for speedup - twogtp and twogtp-a close the sgf file if an engine crashes - twogtp-a had coordinates reversed - global variable last_moves[] removed - move history added to board state - static function undo_move() in board.c renamed to undo_trymove() - new global functions store_board(), restore_board(), undo_move(), get_last_opponent_move(), and get_last_move() in board.c - macros do_add_stone() and do_remove_stone() removed from board.c - Position struct removed - Gameinfo struct revised - new board_state struct - API functions gnugo_* work on an internal board state instead of on an externally provided board state - board_size workaround in influence.c obsoleted and removed - revised order of operations in main.c; in particular playing up the position specified by -l and -L options centralized - revised modes for --score option - all undo implementations in GTP, GMP, and ASCII interfaces replaced by the new undo_move() function in the board code - Added several .h files to appropriate .dsp files - corrected gcc warnings & other cleanup in mkpat.c - komaster_to_string now takes 2 arguments - new KOMASTER_TRACE; set to log all komaster_trymove calls - dfa ise announced only as a debug message - copyright notices updated - DRAGON2 macro array bounds checking is not the default - tuning - test revision - doc revision - additional correct answers added to reading.tst 3.1.27 released March 1, 2002 - important bugfix in store_persistent_owl_cache() - bugfix in semeai_find_backfilling_move() - new command line option --debug-flags - new DEBUG_OWL_PERSISTENT_CACHE - owl.c:draw_active_area draws the owl point - new printutils.c:routine_to_string() - KOMASTER_SCHEME 4 introduced - Tree-based pattern matching introduced. - pattern-base reading code supports defense by pattern. - new command-line switches "(attack|defend)-by-pattern" - OPT enums re-based to 127, to avoid conflict w/ ASCII values. - reformatted transform.c to look like matrices. - DRAGON_WEAK implemented in a function and checks array bounds. - improved fastlib(). - DRAGON2 macro checks array bounds. - bugfix in readconnect.c:moves_to_connect_in_three_moves() - for non-variadic, non-VC compilers, add trace_dummy assignment - new function init_owl() in owl.c - re-order conditions in revise_semeai to insure valid DRAGON2 data - organize include file order to facilitate pre-compiled headers. - use location_to_string in replay_node() - improve assertion in sgftreeAddComment() - removes a bogus "," from Pattern D305 - read_attack.db tuning - new read_defend.db - VC builds uses precompiled headers - VC Release builds generate debug symbols - new '-s' option to regress.pl to control creation of sgf files. - instruct robots not to follow regress.plx links. - unexpected results page orders results correctly - defaults for config.vc(in) made same as 3.1.27 release. - new semeai test - doc revision 3.1.26 released February 24, 2002 - experimental influence, experimental and alternate connections are default - caching code revised to once more work with TRACE_READ_RESULT enabled - added EXPERIMENTAL_READING to config.vc(in) - updated makevcdist.pl - bugfix in owl.c:dump_pattern_list() - alternative reorganized owl callback structure for substantial speed-up: - owl_shapes revised, new functions get_next_move_from_list() et al. - new function dump_pattern_list(...) for debugging - pattern cleanup - spelling fixes - verbosity revisions with alternate connections in readconnect.c - bugfix in close_bubbles() - bugfix in compute_owl_escape_values() - revised "stepped on a bug" message - bugfix in update_status in semeai.c - bugfix in estimate_time_by_move - replay added to debug helpstring - revised nonvariadic versions of TRACE and allies - increased MAXSTACK to MAX_BOARD*MAX_BOARD again - experimental influence taken down for initial influence when dragons unknown - doc revision 3.1.25 released February 14, 2002 - updated AUTHORS - command line option --options reports configure options - verbose reduced in readconnect. - do_genmove tries harder to restrain thrashing dragons. - DFA_SORT set to 0. - new gtp tryko. - new function fastlib() helper for approxlib family. - a pattern can now force the anchor point. - matchpat can be run forcing anchor to be in the goal. - simplification of UPDATE_SAVED_KO_RESULT - reduce overhead in non-variadic macro TRACE definitions - reduce MAXSTACK - EXPERIMENTAL_READING code much more interesting. - moved most of EXPERIMENTAL_READING code out of do_attack. - [ox]lib request only up to MAX_LIBERTIES liberties. - bugfix in reevaluate_ko_threats - floating point exceptions stopped in readconnect.c - experimental influence: yet another new_value_territory revision - experimental influence: fixed followup values really taken down (shapes.c) - experimental influence: pattern tuning - experimental influence: follow-up specific constraints for B patterns - experimental influence: new_value_territory revised (center correction) - experimental influence: most fixed follow-up values taken down - experimental influence: tuning, joseki values increased, some bugs fixed - experimental_influence ignored for escape influence - influential doc revision - edge_double_sente_helper is now autohelper - owl threat loop broken out - new global thrashing_dragon 3.1.24 released February 3, 2002 - cleanup of clock.c, filllib.c, fuseki.c, genmove.c, globals.c, gnugo.h, hash.h, printutils.c, reading.c, showbord.c, utils.c, worm.c - New function gfprintf in printutils.c - do_owl_analyze_semeai won't read below MAX_SEMEAI_DEPTH - AFFINE_TRANSFORM() macro - new (stub) function opponent_not_passing - new function sgffile_write_circle_mark - gg_cputime used for time statistics consistently. - alternate connection reading algorithm appended to readconnect.c - new option --alternate-connections toggles the connection reading algorithms - Zobrist hashing implemented in owl_analyze_semeai - do_owl_analyze_semeai no longer considers unsafe outside liberties - small_semeai reimplemented - make_worms takes the save_verbose parameter to allow a few traces - traces improved in decide_tactical_semeai - EXPERIMENTAL_READING code (pattern based) added. - added "tried" parameter to special_rescue - defend2-[CD] won't re-try moves (avoid cache check). - faster implementation of accurate_approxlib. - mkpat takes multiple -i parameters, outputs in binary - Visual C now uses _vsnprintf - revision of patterns/mkpat.dsp - sgf output tweeking. - bugfix in experimental influence: floating point exception cure - bugfix in regress.plx: handling of gtp worm_stones - tuning - owl tuning - connection tuning - test revision 3.1.23 released January 28, 2002 - configure option: alternate-connections - experimental influence: followup value computed in influence.c - experimental influence: new_value_territory revised - experimental influence: new handling for intrusion patterns - experimental influence: support for standard/experimental specific patterns - reevaluate_ko_threats now makes checks - new get_biggest_owl_target() - DEFEND_BOTH_MOVE reason taken down - new gtp functions get_komi and get_handicap - bugfix in gtp worm_stones: did not print newline if board empty - support for two strings and two results in cache.[ch] - simplified code to do cache lookup in reading.c and owl.c - bugfix in estimate_territorial_value() - bugfix in find_worm_threats() - readconnect finds connections through ponnuki - readconnect sgf improvements - bugfix in estimate_strategical_value(): ALL_MOVE worms were overvalued - VC build now DFA compliant - semeai module sets matcher status to ALIVE instead of ALIVE_IN_SEKI - regression html view enhancements - fix arraybound violation in compute_aa_values - constraint diagram checking moved to new check_constraint_diagram() - Invoke check_constraint_diagram *before* incrementing patno - atari_atari_find_defense_moves() revised - ATTACK_EITHER_MOVE taken down - new ALL_MOVE reason - new static find_all_data(), all_move_redundant() in move_reasons.c - new function add_all_move() - add_defend_both autohelper macro revised - tuning - influence tuning - owl tuning - hoshi tuning - new and revised tests 3.1.22 released January 20, 2002 - find_backfilling_move() in filllib.c revised - dfa made standard - owl threat computation made optional (and not default) - comments added, cleanup around discard_redundant_move_reasons - new (unused) experimental influence configure and run time options - unsafe tactical moves now taken care by discard_redundant_move_reasons - FIXME added for reevaluate_ko_threats - atari_atari_attack_patterns() uses a goal array to limit search area - new functions compute_aa_values(), get_aa_value(), and update_aa_goal() - ko contingent defenses excluded in get_saved_worms(), get_saved_dragons() - valuation of atari_atari move reasons revised - recognize_eye() revised - spelling corrections - fflush() added a few places - owl tries tactical defense for small groups - owl logs number of variations per sub-tree in SGF file - [ox]play_(attack_either|defend_both) handles ko correctly. - added [ox]play_connect and dis_connect helpers - allow followup value if defense threat is contingent on ko. - only allow territory move values if move is deemed safe. - reduce cutstone values in case of ko. - debug printing in influence.c slightly restructured - new function influence_moyo_color_opposite() - one trace output reenabled in confirm_safety() - bugfix in sgftreeAddStone - bugfix in komaster_trymove - mascot in dragon.c - tuning - eye tuning - atari_atari tuning - connection tuning - fuseki tuning - owl tuning - test revisions 3.1.21 released January 12, 2002 - revision of compute_surrounding_moyo_sizes() - bugfix in pattern EE302 - value_moves.c split from move_reasons.c 3.1.20 released January 11, 2002 - ko return codes from owl_does_attack() and owl_does_defend() handled in analyze_semeai() - special_rescue2() generalized and reimplemented - bugfix in edge_clamp() - mkpat does consistency checking between the diagram and constraint diagram - new function connect_and_cut_helper() in helpers.c - least significant bit of move reason now denotes a threat - bugfix in add_attack_either_move - new move reason: EITHER_MOVE - disabled add_attack_either_move - removed redundant EITHER_MOVEs - minor cleanup in move_reasons.c - some cleanup in move_reasons.c - renamed some move reasons for name consistency - new function special_rescue6() in reading.c - defend3() revised - don't run compute_eyes on eye spaces not attached to a dragon - avoid giving followup values to non-sente threats in threaten_to_capture_helper() and in estimate_territorial_value() - new test_gray_border() in board.c with assertions in genmove.c - xplay_attack_either returns WIN not 1 - improved debugging and trace output - checking of sgf GM and FF properties revised - Makefile.in's converted using Automake 1.5 - html view enhancements - tuning - influence tuning - owl tuning - fuseki tuning - performance tuning - test revisions 3.1.19 released January 2, 2002 - bugfix in aftermath_genmove() - bugfixes in the atari_atari code - obsolete atari_atari code removed - tuning - owl tuning - sgf2tst repair - regress.plx improvements 3.1.18 released December 23, 2001 - 1D conversion of incremental.texi - new function dragon_looks_inessential() in dragon.c - adjusted_worm_attack_value() revised - indented debug output of secondary move values - new local struct aa_move in combinations.c - new pattern class 'c' for conditional moves in aa_attackspats.db - atari_atari() tries to attack smallest targets first - combinations() finds multiple defenses when opponent has a combination attack - new gtp commands owl_connection_defends and owl_substantial - mkpat checks that main diagram and constraint diagram have the same size - mkpat stricter in parsing of classification field - new function gg_sort() in gg_utils.c - all calls to qsort() replaced by calls to gg_sort() - linear_eye_space() removed - make RTRACE and VTRACE variatic functions same as macros - debug output and valuation of attack on defenseless stones corrected - TODO revised - fixed value of J patterns no longer scaled with board_size - bugfix in owl_attackpats.db pattern D1137 - assertion added in owl_escape_value() - bugfix in moves_to_connect_in_three_moves() in readconnect.c - support for all tactical worm points in debugboard - tuning - owl tuning - influence tuning - atari_atari tuning - test revisions 3.1.17 released December 16, 2001 - new configure and runtime options semeai-variations - new function semeai_trymove() - bugfix in catalog_goal - semeai revisions - warning avoided in dfa_avoid_string() - code cleanup - devalued attacking dead group bonus - corrected value to final_value in review_move_reasons() - value_territory() in influence.c revised - common debug code moved from compute_eyes(), compute_eyes_pessimistic() to print_eyes() - inactive support to test against linear_eyes() in compute_eyes_pessimistic() - MAXPATNO increased to 400 in mkeyes.c - naive_ladder() replaced by simple_ladder() - bugfixes in attack_threats() - new gtp commands reset_connection_node_counter, get_connection_node_counter - removed small valued lunch attacks and defenses in owl_determine_life() - new gtp commands owl_threaten_attack, owl_threaten_defense - better error reporting in mkpat.c - improved error reporting in owl.c - html regression view tweeks - new function second_order_liberty_of_string() in board.c - readconnect.c revised - take into account followup values if reverse_followup >= 1 - try a little harder in attack_either - break_through_helper improved - tuning - owl tuning - eye tuning, adding many patterns with occupied margins - test revisions 3.1.16 released December 9, 2001 - readconnect revised - new board.c function breakchain3() - dsp and config.vc updates - new function influence_get_moyo_segmentation() - new function add_influence_source() - computations of moyo size surrounding a dragon changed - confirm_safety() takes two new parameters to tell which stones were saved - atari_atari_confirm_safety() revised - compute_aa_status() revised - new is_vital_string() in combinations.c tracks stones not to be sacrificed - generation of attack moves in do_atari_atari uses patterns - new pattern database pattern/aa_attackpats.db - atari_atari_find_defense_moves() improved - new functions get_saved_worms() and get_saved_dragons() in move_reasons.c - new function move_reasons_confirm_safety() - examine_move_safety() revised - new function decide_combination() in sgfdecide.c - new option --decide-combination - new experimental-combination configure option, and command line options - new gtp command aa_confirm_safety - bugfix in trymove() - 1D revisions and cleaning up - new file: engine/movelist.c - generalized handling of move lists and moved from worm.c - attack_threats() enhanced - AA_THREAT_DEPTH set to 3 - find_worm_threats() uses attack_threats more - pessimistic_compute_eyes() tries harder to find a vital point - new atari_atari_find_attack_moves() and atari_atari_find_defense_moves() - do_atari_atari() restructured - experimental-semeai configure option - experimental_semeai command line option - new function new_semeai() - owl_analyze_semeai improvements - split USAGE_DEBUG in half due to VC limitation - removed final VC warning in dfa.c - revised trace in value_move_reasons() - regress.plx improvements - speedup in gtp_same_dragon - test revisions - 13x13 tests 3.1.15 released November 30, 2001 - new field value in struct half_eye_data - topological_eye(), evaluate_diagonal_intersection() take ko into account - improved debug output in compute_eyes() and compute_eyes_pessimistic() - add_half_eye() renamed add_false_eye - make_proper_eye_space() and remove_eyepoint() removed - owl_topological_eye() reimplemented to look up stored data - new function special_rescue5() in reading.c - defend2() and defend3() revised - new GTP commands list_stones and tactical_analyze_semeai() - new command line option --decide-tactical-semeai - support for marginal eye points with opponent stones in eyes.db - persistent caching added to owl_does_attack() - owl_does_defend() and owl_does_attack() now understand ko - owl_determine_life() revised - owl_analyze_semeai() revised - small_semeai() calls owl_analyze_semeai - new function silent_examine_position() - find_more_owl_attack_and_defense_moves() revised - ko valuation revised - cutting worms are never inessential - 1D revision of print_eye() in optics.c - compute_eyes_pessimistic() revised - bugfixes in evaluate_diagonal_intersection() - new gtp commands owl_analyze_semeai, owl_does_attack, and owl_does_defend - revision of owl_analyze_semeai() - new static catalog_goal in owl.c - sgfdecide functions made 1D - empty_corner_value adjusted to board size in fuseki() - removed tactical reading move pass from owl.c - contribution of (reverse) followup values revised in value_move_reasons - comments made 1D in owl.c - regress.pl now accepts "problem sets" - regress.plx includes "unexpected result" list - new gtp_example/sgf2tst.pl - changed warning to error in mkpat.c - minor change to regress.pl - atari_atari now considers general threat the first moves - new depth parameter aa_threat_depth - new function: atari_atari_succeeded - cleanup in atari_atari functions - compute_escape_influence now 1D - new function in reading.c: attack_threats - handling of tactical moves in worm.c no longer static - replaced abort() in mkeyes with fatal error messages - patterns.dsp and gnugo.dsw revised - tuning - influence tuning - connection_tuning - owl tuning - test revisions - new trevora tests - new semeai tests - doc revision 3.1.14 released November 17, 2001 - recognize_eye() revised - new function test_eyeshape() in optics.c - new gtp command test_eyeshape - vital and num_vital fields removed from struct eye_graph - mkeyes.c revised - non-territory patterns introduced in the influence code - revised formula for addition of followup_value - better trace output for followup_value and reverse_followup_value - typo fixed (whose_moyo for whose_area) in value_territory() - new debug flag DEBUG_TERRITORY - delta computation of territory, moyo, and area in influence.c restructured - influence_value part of move valuation removed - new function is_edge_vertex() in board.c - guess_eye_space() revised - compute_eyes_pessimistic revised - do_owl_defend() revised - move stupid vital marginals from first to second line in owl_determine_life() - patterns.dsp doesn't reference invalid file - regress.pl deals with threads better on Win32 - regress.plx supports view by category - updated regress.pl - add file & line numbers to more warnings in mkpat.c - comments in reading.c made 1D - DFA_ENABLE ifdefs removed - remove *.dfa stuff from makefiles keeping only DFA_FLAGS for mkpat. - configure --enable-dfa touches .db files. - bugfix in find_double_threats() - global_matchpat() renamed matchpat() - regression view includes node counts, SGF link, and -t output. - GTP echo_err added to allow echoing to STDERR. - atari_atari moved to combination.c - restricted_defend1 and restricted attack2 now public functions - in find_double_threats, make threat reasons into attack_either reasons - old disabled function remove_move_reason() now enabled - some simple cleaning - genmove now 1D - out of bounds array violation in showbord.c fixed. - regress.pl records sgf trace for owl_attack & owl_defend. - regress.plx provides access to sgf trace files if present. - tuning - connection tuning - eye tuning - owl tuning - influence tuning - revision of rot tests - ld_owl_life.tst removed - new and revised regression tests - Some tests in endgame.tst corrected. 3.1.13 released November 6, 2001 - new function are_neighbor_dragons() - verbose value reduced while running owl_reasons - influence code revised - function find_stones_saved_by_move() in move_reasons.c removed - find_more_owl_attack_and_defense_moves() revised - owl attacks induce strategical defenses of friendly neighbors - connection values revised - territorial value of attacks, defenses, owl attacks, and owl defenses computed through influence function, not effective_size - bugfix in computing effects of min and max territory values - played stone not automatically in goal array in owl_does_defend(), owl_confirm_safety(), and owl_connection_defends() - gtp commands debug_influence, debug_move_influence, move_influence removed - cleanup in mkpat.c - malformed line warning turned into error in mkpat - 1D documentation revisions. - twogtp-a now give a (halfhearted) default to missing goprog. - twogtp-a works for VC builds now. - mkpat.c generates more useful errors. - mkpat.c forces output to have compile error if input also had errors. - comments in readconnect.c - snapback only looks at one liberty in readconnect.c - do_atari_atari confirms the *defense_point is safe before returning - atari_atari_confirm_safety initializes defense_point - trivial bugfix in move_reasons.c - important bugfix in semeai.c, could cause a crash - tuning - owl tuning - influence tuning - gtp_set_boardsize resets the engine and stack - new and revised regression tests - new command-line option --orientation - -l and decide-* options can be combined with --orientation - tuning and regression revisions - regress.plx revisions: total line, time display, command line hint 3.1.12 released October 28, 2001 - break_chain2_efficient_moves() and break_chain2_moves() revised - add_array() in readconnect.c simplified - bugfix in moves_to_connect_in_two_moves() - sgf traces turned off in quiescence_capture() - new fields owl_attack_code and owl_defense_code in struct dragon_data - revised definition of WEAK and WEAKLY_ALIVE dragons in make_dragons() - revised computation of size of surrounding moyo for a dragon - 1D revisions - add_attack_move() and relatives also take the result code as parameter - new move reasons ATTACK_MOVE_GOOD_KO, ATTACK_MOVE_BAD_KO, and so on - move valuation distinguishes between attacks, defenses, owl attacks and owl defenses with or without ko - connections tested as owl defenses when connecting out a critical dragon - revised valuation of threats and strategical attacks - compute_eyes_pessimistic() revised - owl_determine_life() revised - new static compute_aa_status() broken out of three atari_atari functions - tuning - connection tuning - owl tuning - joseki tuning - new and revised regression tests - new reorientation test suites - remove rot* subdirs from EXTRA_DIST - bugfix in score.c (typo from 1D conversion) - revisions to extract_fuseki: make partial board patterns - revised fuseki9.db - Corrected VC build error converting unsigned 64-bit long to double - regress.pl split into regress.pl & regress.plx - added -all, to have regress.pl parse Makefile.in for tstfile list. - html view has better marking of non gg_genmove positions. - New move generator: combinations() in new file combinations.c - double attack threats detected - better valuation of attacks on worms - general cleanups 3.1.11 released October 21, 2001 - tuning - owl tuning - eye tuning - new function owl_proper_eye() and autohelper with the same name - valuation of uncertain owl defense moves revised - evaluate_diagonal_intersection() revised - new pattern class b in owl_defendpats.db - handling of same_dragon field in struct owl_data revised - do_atari_atari() revised - bugfixes in make_worms() - 1D revisions all over the engine - new debug flag DEBUG_READING_CACHE - same_dragon() renamed is_same_dragon() - new gtp commands start_sgftrace and finish_sgftrace - new and revised regression tests - new gtp command top_moves - bugfix in draw_back - Add ON_BOARD1 assertions in liberty_of_string and neighbour_of_string - Use Win32 API to get CPU time usage for all Win32 builds, not just VC - Added a few scattered regression comments - Updated regress.pl to latest ever evolving version. - Adds several test cases and SGF files to trevor.tst & games/trevor/ - reorientation code moved from gtp.c to play_gtp.c - owl_rot.tst uses reorientation code - fixed sscanf problem in (worm|dragon)_(stones|data) - allow dragon_stones to take color parameter, as well as coord. - revisions to capture.tst and vie.tst - further 1D revision in dragon.c - top_move functionality added to regress.pl - filllib.c and semeai.c made 1-dimensional - new gg_cputime in gg_utils.c - improved configuration for ncurses/{term,curses}.h - new and improved tests 3.1.10 released October 14, 2001 - portability fix for MINGW. Don't include crtdbg.h - rename connect to string_connect. - all move reason handling is 1D - owl goal and other date are 1D - new and revised test cases - bugfix in random.c - revision of readconnect.c - bugfix for Cygwin: gtp_dragon_data misreports invalid coordinate - revision of trevor.tst - bugfix in inv_rotate: use bs-1 instead of bs - new gtp function orientation - new gtp function query_orientation - in gtp_mprintf use gtp_print_vertex for the %m format specifier. - revision of regress.pl, Stone.pm - revision of engine/engine.dsp: remember readconnect.c - make gtp_loadsgf reorient gamerecords - make gtp_printvertices orient output points back - new function count_common_libs() in board.c - struct worm_data tracks all attack, defense, attack and defense threat points - remove_attack_move() and remove_defense_move() removed - attack_move_known(), defense_move_known(), attack_threat_move_known(), and defense_threat_move_known() moved from move_reasons.c to worm.c - change_attack() and change_defense() moved from utils.c to worm.c - new functions change_attack_threat() and change_defense_threat() in worm.c - new function worm_reasons() in worm.c - trace messages in worm.c changed to DEBUG_WORMS messages - remove_opponent_attack_and_defense_moves() and do_remove_false_attack_and_defense_moves() removed from move_reasons.c - NON_ATTACK_MOVE and NON_DEFEND_MOVE move reasons removed - try a little harder to find attack threats - attack.db and defense.db revised - indirect_helper() removed from helpers.c - tuning - minor owl tuning - new function have_common_lib() in board.c - new option --decide-connection - new function decideconnection() in sgfdecide.c - bugfixes in board.c, sgfdecide.c, and main.c - new IS_COLOR macro - comments moved from regression/STRATEGY to strategy.tst - time_report has a mintime parameter - many new tests in strategy4.tst - new regression/golois/*.sgf - new connect.tst global.tst vie.tst wolf.tst - new gtp function cputime 3.1.9 released October 7, 2001 - revised examine_move_safety heuristics - owl_determine_life() revised - new gtp functions connect and disconnect - naive_ladder() made global - warnings eliminated from readconnect.c - most functions in readconnect.c made static - add point reorientation functions - add some comments to dfa.c - bugfix and cleanup in naive_ladder() - new interface/GoImage/Stone.pm - struct eye_data arrays changed from 2D to 1D - 9x9 case revised in fuseki() - bugfix in goal detection in matchpat, don't accept empty goal vertices - bugfix in gtp_genmove() - new test cases in owl.tst - further 1D revisions in worm.c - find_lunch() moved from utils.c to worm.c - is_same_worm() converted to 1D - bugfix in list_move_reasons() - revised test case in niki.tst - tuning - owl tuning - connection tuning - new implementation of compute_primary_domains() - new eye pattern - bugfix in fuseki.c - cleanup and further 1D conversion in optics.c - sgf_decideeye doesn't require owl computation - 1D revisions in worm.c - is_worm_origin(), propagate_worms(), does_attack(), does_defend() are 1D - NNGS customization removed from ascii interface - gtp_worm_stones can be run with stackp>0 and can take a color argument - mkpat can take -i and -o options - MIN_BOARD is 5 3.1.8 released October 1, 2001 - defend2() revised - attack2() revised - break_chain2_moves() revised - connection_value() revised - most parts of move_reasons.c converted to 1D - domain calculation in optics.c now 1D - hash.c is more 1D - new function is_ko_point() in board.c - computation of cavities removed from worm.c - computation of caves removed from dragon.c - computation of inessential worms moved from make_dragons() to make_worms() - computation of ko points removed from make_worms() - printing of cutting stones removed from genmove.c - examine_cavity() simplified and made static - cavity_recurse() simplified - ko field removed from worm_data struct - border field removed from dragon_data struct - several fields moved from struct dragon_data to struct dragon_data2 - false_margin field eliminated from struct eye_data - cleanup of sgf code - extended functionality of gtp commands dragon_stones and worm_stones - gtp_dragon_data returns a list of strings - new gtp functions dragon_stones and worm_stones - revision of extract_fuseki - revision of fuseki.c - bugfix in break_chain3 - bugfix in special_attack4 - warning fixed in mkpat - formatting errors fixed in decidestring and other places: use %1m - bugfix: trace in move_reasons.c - gtp_dragon_data() revised - new gtp functions dragon_stones and worm_stones - twogtp-a writes html - tuning - owl tuning - eye tuning - one new test case in reading.tst - new regression/games/trevor/* and unsorted tests mv'ed to trevor - new tests xxlin.tst - strategy4 target in regression/Makefile.am corrected - rotated tests revised - dsp files revised 3.1.7 released September 24, 2001 - heye[] is now stored as a 1-dimensional array - halfeye() is now called is_halfeye() - new macro for traversing all points: for_all_board() - atari_atari and helper functions now 1D - all goal functions in reading.c now 1D - calls to the goal functions in reading.c converted to 1D calling standards. - bufix in do_find_superstring() - bugfix in aftermath_genmove() - bugfix in hashdata_recalc() - bugfix in store_persistent_owl_cache() - assertions added to are_neighbor_strings() - analyze_neighbor() in filllib.c revised - alternative definition of ASSERT1 macro corrected - revised valuation of vital eye moves - colored legends with -T output - make internals of worm[][] 1-dimensional - make eye data 1-dimensional - new macros: PASS_MOVE and NO_MOVE - change_attack and change_defense are now 1-dimensional - worm handling in move_reasons.c is now 1-dimensional - dragon.c is now 1-dimensional - prefix struct option in getopt.c with gg_ - prefix all occurences of optarg with gg_ - improved color support in cygwin and VC++ - brighter colors under VC++ - increase BOARDSIZE by one - set MAX_BOARD to 19 for development versions - new functions readsgffilefuseki, gametreefuseki in sgfnode() - tuning - owl tuning - new strategy4.tst and unsorted.tst - new game record and new and revised filllib regression tests 3.1.6 released September 15, 2001 - limited pushing of p[][] allows one level of recursion in global_matchpat - bugfix in sgf_utils.c function get_moveX() and get_moveY() - new functions find_common_libs() and are_neighbor_strings() in board.c 3.1.5 released September 15, 2001 - board changed from 2D to 1D array representation - major revisions of board.c and reading.c - smaller revisions more or less anywhere 3.1.4 released September 14, 2001 - do_atari_atari tries harder to find defenses - confirm_atari_atari checks to see if tried move really causes the combination - changing a group's status from CRITICAL to DEAD does not satisfy atari_atari - bugfix in find_more_owl_attack_and_defense_moves() - new function start_timer() and time_report() in utils.c - showtime code cleaned up in dragon.c, genmove.c, and move_reasons.c - move numbers printed correctly in ascii interface - minor changes and cleanup in ascii interface - prefix getopt_long and the options struct with gg_ - new functions sgfFreeNode and sgfFreeProperty - tuning - influence tuning 3.1.3 released September 6, 2001 - bugfix in the atari_atari code - obsolete sgf_dump facilities removed - remove_string removed from gnugo.h - add_replacement_move() in move_reasons.c revised - in value_move_reasons() ko threats are affected by shape values - tuning - don't call new_position for every stone when playing out an SGF tree. - new gtp engine metamachine in interface/gtp_examples - new gtp command query_boardsize 3.1.2 released September 4, 2001 - realloc space for owl stack if needed - new static functions push_owl and pop_owl - bugfix in move_reasons.c to avoid overcounting certain attacks - move replacement mechanism implemented in move_reasons.c - new autohelper action replace() - new game record and regression test - new tests and regressions 3.1.1 released August 31, 2001 - halfeyes valued slightly more guessing eye value for shapes not in eyes.db - all owl data stored in do_owl_attack() and do_owl_defend() - revised definition of inessential strings in owl_find_lunches() - confirm_safety() revised - owl tuning - global_matchpat() to perform pattern matching on the whole board. - removed scan loops from different files. - matchpat() made static - size test made one time for all the board. - reverse spiral implemented to compute the move's row in the spiral path. - bugfixes and improved trace output in atari_atari functions - bugfix in dragon.c: broken format crashed printworms option - bugfix in play_gtp.c: format needed extra newline - configure --enable-profile implemented - new game records and regressions - new gtp_example vanilla.c - missing subheadings added in doc/*texi - BREAKAGE reset 3.0.0 released August 24, 2001 - komi can be set from CGoban using the command line - play_gmp takes a Gameinfo * parameter - corrected bounds in small_semeai - simplified bounds check in double_atari - explicit cast to avert warning in play_gtp.c - doc revision 2.7.256 released August 23, 2001 - unused dragon.old_safety retired - bugfix in owl_determine_life: signed char mx - no long filenames in games/arb - variations eliminated in dublin1.sgf - one dublin1 test in connection.tst - doc revision 2.7.255 released August 22, 2001 - two declarations moved in liberty.h - dilate_erode, sgftree_printboard and resize_dfa are static - doc revision 2.7.254 released August 21, 2001 - MAXSTACK expanded - struct move_data renamed owl_move_data in owl.c - superstring_breakchain made static - bugfix in showboard: capture colors switched - stray | removed from manyfaces.tst - revised newlogo - Trevor Morris and Stephan Somogyi THANKed - initials cleaned and comments edited in patterns.db - doc revision 2.7.253 released August 20, 2001 - gtp_loadsgf modified to work on Mac OS X - DEFAULT_LEVEL 10 in config.vc and config.vcin - newlogo.jpg restored in doc/ - gtp2_6 added to interface/gtp_examples/ - doc revision 2.7.252 released August 19, 2001 - moved interface/gtp/ to interface/gtp_examples/ - pragma disable 4244 4305 added to config.vc and config.vcin again - placehand does not place a stone if handicap == 1 - gameinfo_play_sgftree default handicap is 0.5 if handicap != 0 - regress.awk strips carriage returns for DOS compatibility - doc revision 2.7.251 released August 18, 2001 - moved the komi field from Gameinfo to Position - change usages of komi in various places - estimate_score no longer declared in gnugo.h - use gnugo_estimate_score in play_gmp, play_solo, play_ascii, debugboard - bugfix in gameinfo_load_sgfheader: initialize handicap - abortgo.sgf reference taken out of abortgo - gameinfo_play_sgftree does not place a stone if handicap 1 - twogtp default handicap 0, not 1 - twogtp declares file FF[4] not FF[3] - doc revision - win/ directory removed - WINDOWS revised again 2.7.250 released August 17, 2001 - bugfix in main.c: stray hyphen broke compile - bugfix in interface.c: reject weird handicaps - bugfix in double_atari: reject off board locations - bugfix in aftermath: reject off board locations - new WINDOWS - new logo - do_play_move made static - doc revision - pragma disable 4244 4305 added to config.vc and config.vcin - new command load in ascii mode. - reference of --autolevel in help massege. - fixed a bug in sgf file saving (to avoid strange handicap) 2.7.249 released August 16, 2001 - print_moyo color parameter eliminated - All FIXME's classified post 3.0 - bugfix in owl_big_eyespace: check ON_BOARD(oi,oj) - bugfix in fill_liberty: check ON_BOARD - bugfix: initialize path in dfa matcher - moved dfa scan function and others from dfa.c to matchpat.c - moved dfa_fixup_for_size into dfa_compile_for_match. - cleanup of dfa code - removed heavy functions dfa_scan() and dfa_restart() - new function scan_for_pattern() - New warning in mkpat for DFA_MAX_MATCHED update. - a warning fixed in dfa.c - Any pattern db can use wired dfa's. - removed load_dfa() and save_dfa() functions. - removed -d option from mkpat. - removed unused values from dfa_t struct - sync_product uses a hash table instead of an huge array - new stucture test_array_t and new static functions in dfa.c - DFA_MAX_BOARD set to 21 - revision of all .dsp files - analyze.h removed from engine/Makefile.am - unused function dump_data removed from score.c - bugfix in aftermath_genmove() - code cleanup - unchosen fuseki moves from fuseki database awarded a smaller value - filllib and aftermath moves also recorded with move_considered() - potential_moves array converted from int to float - PROFILE_PATTERNS disabled by default - computation of inessential strings in owl_find_lunches revised - is_worm_origin() moved from utils.c to worm.c - test mode option replaced by a replay option - code in play_test.c heavily rewritten - owl tuning - new gtp function top_moves - new game record and regression tests - doc revision - new tests tanguy.tst, dublin1.sgf and dublin2.sgf 2.7.248 released August 7, 2001 - undo implemented in play_gtp - estimate_score renamed old_estimate_score - new_estimate_score renamed estimate_score - gtp commands new_score and prisoners renamed estimate_score and captures - default level set to 10 - config.guess and config.sub removed from the distribution - moyo.c and analyze.c removed from the distribution - obsolete --moyo options retired - count_territory, evaluate_territory and remove_string removed - new function gnugo_estimate_score - doc revision - cleanup - minor tuning - Jens Yllman added to authors - patterns.dsp replaced - VC++ warnings addressed 2.7.247 released August 2, 2001 - aftermath_genmove() revised - bugfix in do_genmove(), no reinforcing moves while scoring - bugfix in estimate_territorial_value(), no reinforcing moves while scoring - bugfix in score.c, 19 replaced by board_size - bugfix in confirm_safety(), verbose not restored in two cases - values used by worm[][].conditional_status made more consistent - connection_value returns a higher value if we are ahead - status INESSENTIAL distrusted by connection_value if we are ahead - xcut autohelper macro rejects B pattern ! as well as * - connection tuning - score, upper_bound and lower_bound are made global variables - estimate_strategical_value takes score parameter - revision of score report in play_solo - new --showscore option - tuning - owl tuning - spelling mistake in regression/Makefile.am fixed - new regression test and game record - code cleanup in analyze.c - assert() changed to gg_assert() in extract_fuseki.c - mkpat and joseki add copyright notice to built files - verbose prints the score - bugfix in report_dragon: if dragon.id = -1 ignore dragon2 - VC++ compatibility changes - DFAFLAGS is -D instead of -d - autolevel target is level 10, not 11 - play_gmp uses new_score at game end - doc revision - revision of twogtp - new game records and connection tests 2.7.246 released July 15, 2001 - if ahead, owl_prevent_threat move reasons given real value - tuning - owl tuning - Chinese counting implemented - ascii mode revised - files gtp.c and gtp.h under X11 licensing - autolevel option activated - bugfix in matchpat.c - new #define GNUGO_PATH in config.h.in - fixed some problems with inclusion of dfa in pattern c files. - mkpat is now called with option -D instead of -d => no more binary dfa files. - in matchpat.c dfa_match_init do not try to load dfa's files anymore. - load_dfa() adapted to enable wired dfas - wired dfas - new macro gg_assert - change_dragon_status() replaced by change_matcher_status() - minor cleanup - atari_atari_try_combination turns down verbose - hyphenation of some command line options - project files *.dsp and *.dsw revised - color support revised - doc revision 2.7.245 released July 5, 2001 - aftermath code revised - new options --allow-suicide, --play-out-aftermath, --capture-all-dead - unused constant MAX_TRY removed from genmove.c - option --noinhibit removed - new function and autohelper max_eye_value() - new global doing_scoring affecting valuations while scoring - bugfix in valuation of attack_either and defend_both moves - neither black nor white used in colored displays - new gtp commands final_status, final_status_list, and protocol_version - gtp_playblack and gtp_playwhite revised - warning eliminated in debugboard/gui.c - fuseki9.db regenerated from a bigger set of games - new regression tests and game records - regressions/niki.tst included (omitted by mistake from 2.7.244) - new autohelper macro effective_size - copyright notice added to twogtp - depth values increased in owl_substantial - followup contribution cap lowered to tot_value - tuning - owl tuning - hyphens replace underscores in command line options - doc revision 2.7.244 released July 1, 2001 - followup values are calculated more carefully - attacks on uncertainly DEAD dragons are now called uncertain defense - confirm_safety less verbose - demotion of many fuseki patterns - tuning - owl tuning - reduction of j and t classes - new function atari_atari_try_combination and autohelper macros - TRACE_ATARI_ATARI replaced with DEBUG_ATARI_ATARI - Use double instead of timeval structs for clock time values - Removed a lot of heavy timeval functions from clock.c - new function clock_time_graph() for time/move/level stats - added more traces to clock functions - pushbutton does not complain when no initialisation is done - removed a lot of non used memory check in mkpat: - mkpat never rejects a pattern but complains if it makes the dfa big - the -d and -D option of mkpat do not require arguments - -m option is now alway used in Makefiles to save memory on owl pats - -r option eradicated from mkpat. - ignore trailing white space in input to mkeyes.c - remove @SET_MAKE@ from Makefile.am. - remove config.guess en config.sub from distribution - revision of coloring part of configure.in - play_ascii correctly marks the last stone played while GNU Go thinks - doc revision - new test nikki.tst 2.7.243 released June 22, 2001 - dragon.owl_status_certain split to owl_attack_certain, owl_defend_certain - new_estimate_score is run every move if level >= 8 - if safely ahead, uncertain defensive moves are added - revision of certain connection values - WEAK safety value reduced - doc/gtp.texi revised - aftermath code revised - warnings eliminated in clock.c - on board assertions in same_dragon() - liberty filling code revised - value of empty corners reduced in fuseki.c - tweek in influence_callback() - more careful valuation of ko threats in value_move_reasons() - confirm_safety() call in review_move_reasons() avoids bad ko threats - more careful detection of disturbing moves in the persistent owl cache - new function owl_confirm_safety() - new function atari_atari_confirm_safety() - confirm_safety() and double_atari() revised - gtp_final_score() revised - new gtp commands fixed_handicap, level, name, and version - code cleanup - tuning - owl tuning - eye tuning - new helper backfill_helper() and autohelper function with same name - new function interface/twogtp 2.7.242 released June 19, 2001 - bonus for uncertain defense/attacks reduced - bugfix: defense threat move reasons not generated for illegal moves - tuning - owl tuning - more careful to get dragon.owl_status_certain right - dragon.owl_status_certain can affect dragon.safety - corrections to -m option - bugfix: OWL_DEFENSE_THREAT was reported incorrectly - adjective ``reliable'' disassociated from semeai() - bugfix in decidedragon: report uncertainty correctly - revision of gtp_report_uncertainty - ignore trailing whitespace in patterns - add prototype in dfa.h for print_c_dfa - some sgf files standardized 2.7.241 released June 12, 2001 - owl_attack and owl_defend return a certainty value - new field dragon.owl_status certain - new UNCERTAIN_OWL_ATTACK and UNCERTAIN_OWL_DEFEND move reasons - revisions and corrections to some gtp functions - tuning - owl tuning - reduced value of j patterns by one point - merged new_matchpat.c into matchpat.c - when no dfa file is found, use standard do_matchpat() - fixed a reference to nonexistent merged_board[][]. - updated dfa matcher to merged_val optimization. - removed check_pattern() function. - dfa board preparation moved to dfa_match_init() - new constant DFA_MAX_MATCHED - assertion to check possible DFA_MAX_MATCHED overflows. - added --clock,--byo_time and --byo_period in --help listing. - new function print_c_dfa() in dfa.c - new option -D in mkpat.c puts the dfa into the binary - doc revision - new tests and regressions - corrections to old tests and regressions 2.7.240 released June 12, 2001 - new autohelper function macro owl_threatens - CAN_THREATEN_ATTACK and CAN_THREATEN_DEFENSE renumbered - status_to_string revised - gtp declarations sorted alphabetically - new gtp command "help" lists gtp commands - gtp command dragon_data revised - show_dragon revised - new function safety_to_string - tuning - owl tuning - game regression/games/pending ssstator.sgf added - last two moves cached in global last_moves_i, last_moves_j array - bugfix: sometimes owl_threat_status was wrongly UNCHECKED - when reading a file even passes are given to gnugo_play_move - OWL_PREVENT_THREAT reason valued more if opponent adds to a dead dragon - new vital owl attack pattern VA17 - change ko_i and ko_j to board_ko_i and board_ko_j in new_matchpat.c - bugfixes in captured_territory() from score.c - new game records and regression tests - aftermath code revised - pure_threat_value increased from 0.0 to 0.4 in genmove() - new flag worthwhile_threat in the move[][] array used in move_reasons.c - new function add_worthwhile_threat_move() in move_reasons.c - new pattern classification W for worthwhile threats - bugfix in owl_does_defend() - active area computation in store_persistent_owl_cache() revised - bugfix in atari_atari code - print_regions() in score.c reimplemented - new game records and regression tests - doc revision 2.7.239 released June 8, 2001 - use gg_gettimeofday routines in stead of gettimeofday - make autoconf 2.50 script detect mingw32 - include config.h in gnugo.h - new file score.c - new function new_estimate_score() - new gtp function gtp_new_score - fixed --score last and --score [movenum] - aftermath code revisions - new function same_string() in board.c - global variable threats_enabled renamed disable_threat_computation - new global variable disable_endgame_patterns - new function owl_hotspots() and reading_hotspots() - revision of induce_secondary_move_reasons() - connect_strings bonus revised - new functions edge_clamp() and edge_block() in reading.c - performance improvement in atari_atari() and do_atari_atari() - improved traces from the atari_atari functions - minor tweaking of move ordering parameters - performance improvement in superstring_add_string() in utils.c - tuning - owl tuning - new regression suites blunder.tst and newscore.tst - new and revised regression tests - new and revised game records - missing parameters supplied to is_illegal_ko_capture in value_moves - bugfix in fuseki - incorrectly dimensioned arrays fixed in gtp_all_legal - is_pass() moved to board.c - A number of FIXMEs addressed - minor cleanup 2.7.238 released May 28, 2001 - aftermath_genmove() revised - new global threats_enabled to disable computing worm and dragon threats - definition of WIN, KO_A, KO_B, LOSE, and CUT only in gnugo.h - minor optimizations in filllib.c and owl.c - better debug support for persistent owl cache - move order tuning in reading.c - neighbors of invincible worms excluded from active area in persistent cache - owl tuning - new game records and regression tests - new option --autolevel (not activated by default). - revision of clock.c and clock.h - broken return codes corrected - new gtp command worm_cutstone - doc revision 2.7.237 released May 27, 2001 - revised reading and owl return codes - incremental_board.c removed from engine/Makefile.am - parameters to chainlinks() and chainlinks2() revised - incremental_order_moves() counts stones in atari more accurately - superstring functions reimplemented - new function find_superstring_stones_and_liberties - optimization in owl_does_defend() - detection of insubstantial strings in owl_determine_life made more efficient - persistent reading cache size doubled from 50 to 100 entries - revisions in defend2() and defend3() - order_moves() revised - bugfix in break_through_helper - order_moves doesn't sort singleton lists - pure threat value in do_genmove set to zero - more stats with -b option - globals your_last_move_*, my_last_move_*, no_old_data_exists removed - superceded dragon data caching scheme taken down - new tests and regressions - new gtp command worm_cutstone - new testsuite cutstone.tst - new game record wormflaw.sgf - minor tuning - doc revisions - some FIXMEs addressed - debugboard now shows all worm and most dragon data - upgrade configure.in to work with autoconf version >= 2.50 - new files config.guess and config.sub 2.7.236 released May 17, 2001 - shadowing and persistent caching of reading functions implemented - new function get_move_from_stack() - new functions draw_reading_shadow() and purge_persistent_reading_cache() - new function attack_and_defend() - new tests and regressions - fill_liberty() looks for ko back captures - minor tuning - bugfix in double_atari - bugfix in komaster_trymove: i - j confusion - new functions: gnugo_play_sgfnode and gnugo_play_sgftree - new functions: gameinfo_load_sgfheader and gameinfo_play_sgftree - renamed load_sgf_header, play_sgf_tree, sgfPlayNode and sgfPlayTree - sgfutils.c removed - removed incremental_board.c and sgfutils.c from engine/Makefile.am - renamed neighbor_of to neighbor_of_string - renamed liberty_of to liberty_of_string - minor cleanup of gnugo.h - doc revision - print more debugging info in worm.c - rewrite loop in worm.c with deltai and deltaj arrays - revision of play_test 2.7.235 released May 5, 2001 - aftermath code revised - owl reuse is off by default - function komaster_trymove() replaces move_allowed() - optimization in is_self_atari() - new function owl_big_eyespace() and corresponding autohelper function - new field unconditional_status in struct worm_data - new static function edge_closing backfill in reading.c - move ordering scores available outside order_moves() - attack4() rewritten - propose_edge_moves() revised - relative_break_chain() obsoleted and removed - move ordering scores written in sgf output file with variations - sgf output file records komaster - changed parameters to unconditional_life() - unconditional_life() now finds unconditional dead stones and territory - reinforce_helper() revised - tuning, owl tuning - tune_move_ordering() can write c code for inclusion - new and revised regression tests and game records - new global variable shadow[][] 2.7.234 released May 4, 2001 - komaster implementation corrected in owl.c - sgf traces now show komaster in -o output - bugfix: --no_owl_reuse was broke - bugfix in sgfutils.c which could crash on some files with IL property - IL property moved to the end of files reading16.sgf and reading20.sgf - variable length value for SGFproperty - numeric keypad can be used for cursor movement in debugboard - debugboard needs slightly smaller screen - debugboard shows data for both black and white eyes - new movement buttons for debugboard: ctrl-a and ctrl-e 2.7.233 released April 29, 2001 - revision of the komaster scheme - persistent owl caching - owl_attack is more cautious if an attack can produce a ko - parameters in acconfig.h sorted in order recommended by comments in file - config.vcin is once again brought in sync with the current config.h - bugfix in eyes.db - SGF IL property can set (board_ko_i, board_ko_j) - owl test 27 corrected - new tests manyfaces.tst - new directory regression/games/seki_exotics - doc revision 2.7.232 released April 25, 2001 - break_chain2_efficient_moves() revised - bugfixes in order_moves() - new tuning parameter safe_atari_score in order_moves() - bugfix in configure.in - spelling correction in gnugo.texi - same_dragon(), report_dragon() and ascii_report_dragon() moved to dragon.c - speed improvements in filllib.c - corrected size of defend_not_adjacent_lib_score[] array in reading.c - bugfix and minor reorganization in review_move_reasons() - remove incremental_board.[ch] from engine/Makefile.am - hashtable_unlink_closed_results() can now remove read results selectively - remove incremental_board.[ch] from engine/Makefile.am - hashtable_unlink_closed_results() can now remove read results selectively - attack tuning - new GTP command: echo - attack tuning - tuning - endgame performance tuning - minor cleanup - commented some tests in NICKLAS test suite - bugfix in nicklas2.tst - SGF PL property handling in play_ascii.c corrected - revised order of inclusion of header files in interface/main.c - Chinese and Japanese rules were switched - new files "clock.h" and "clock.c" - new global struct "clk" handeling the timers. - new global variable "clock_enabled" (set to 1 by --clock XXX). - new functions clock_isOver(), clock_isByoYomi(), clock_getTimeLeft() - new options --clock, --byo_time and --byo_period - compute the clock delta error - cleanup clock initialisation in main.c - new games and regressions in arb.tst - new games mfgg*.sgf and nightmare.sgf in regression/games/pending - macros abs, max and min renamed gg_abs, gg_max and gg_min 2.7.231 released April 20, 2001 - we do not reuse data unless 2 last moves are on the board - last moves are set by play_solo - extra level inserted between levels 6 and 7 - nominal depth variables by mandated depth variables - revised handling of depth variables set at command line - new function set_depth_values() - get_location renamed string_to_location and moved - review_move_reasons tries harder not to return illegal moves - same_dragon() moved to board.c - redundant lunch timing removed from dragon.c - average move time computed by --showtime - atari_atari uses restricted_defend1 to find second move - tuning - aftermath code revised - new function aftermath_compute_score() - new debug flag DEBUG_AFTERMATH - new functions store_position(), restore_position() in engine/interface.c - who_wins() moved from moyo.c to utils.c and revised - superstring_breakchain() now considers ko - score computations consistently use positive values for white wins - gtp_loadsgf sets no_old_data_exists=1 - new gtp command final_score() - scoring option --score aftermath now works properly - new regression file score.tst - add configure test for variadic #define - fix bug in configure test for __FUNCTION__ - remove __ prefix from function prototypes in gg-getopt.h - new option --chinese_rules - new configure option --enable-chinese-rules - new functions ascii_report_dragon and report_dragon for use in gdb - new game records and test cases - minor doc revision 2.7.230 released April 13, 2001 - default default level is 8 - default level can be set at configure or run time - default cache can be set to arbitrary value at configure time - revised ko handling - kothreat_needed no longer needed - aftermath uses genmove_conservative - tuning - owl tuning - influence tuning - systematic use of faster ON_BOARD macro - new function is_illegal_ko_capture() - does_capture_something() made public - new function genmove_conservative - improved --showtime information - minor revision of confirm_safety - print_top_moves() split out from review_move_reasons() - configure tests for keypad - malloc.h inclusions taken down - help string revised - new tests and regressions 2.7.229 released April 9, 2001 - caching of owl data implemented and reuse on later moves - showtime option shows information about owl reading time - new global variables my_last_move_i, my_last_move_j, no_old_data_exists - last_move_i, last_move_j renamed your_last_move_i, your_last_move_j - incremental_order_moves() revised - order_moves() revised - attack2() revised - bugfix in linear_eyes() - do_owl_attack() and do_owl_defend() revised and simplified - more robust topological eye analysis in owl_determine_life() - vital moves for multiple eyespaces recognized in owl_determine_life() - sniff_lunch() revised - owl_eyespace() ignores eyespaces which do not yield a single eye - joseki.c revised - tuning, owl tuning, eye tuning - new takamoku joseki - new game record and test cases - test results updated 2.7.228 released March 30, 2001 - parameters kom_i and kom_j complement komaster field in many functions - routine_i_j_stackp renamed compressed_data - komaster added to cached compressed_data field - parameters ko_i and ko_j renamed board_ko_i and board_ko_j - GRAY is a synonym for GRAY_BORDER - incremental_board.* removed - incremental board functionality merged into board.c - revised komaster scheme in reading.c and owl.c - trick to avoid sorting corners in matchpat.c - mkpat -m now works in both dfa and non-dfa mode - compile_for_match() no longer calculates merged values - revised debug messages in influence.c and sgfnode.c - tuning - owl tuning - influence tuning - new game records and regression tests - test results updated 2.7.227 released March 23, 2001 - new file engine/aftermath.c - temporary option "--score aftermath" - "connect strings" bonus in move_reasons.c revised - bugfix in value_move_reasons - all vital owl attack pattern matches counted - bugfix in owl_determine_life(), a no longer valid shortcut disabled - dead code removed from owl_reasons() - break_chain2() revised - various FIXMEs addressed - try kos in play_break_through_n(), play_attack_defend_n(), and play_attack_defend2_n() - bugfix in atari_atari - worm threats on second order liberties. - new transform.c - endgame tuning - tuning - eye tuning - owl tuning - new regression test cases and game records - more copyright messages updated - minor doc revision 2.7.226 released March 21, 2001 - bugfix in atari_atari - minor speedups in matchpat.c - looks for tactical ko theats - long USAGE string split in interface/main.c - removed main.c.zheng and interface.dsp from distribution - tuning - owl tuning - updated copyright messages 2.7.225 released March 15, 2001 - new move reasons: ATTACK_THREAT_MOVE and DEFEND_THREAT_MOVE - new functions compute_effective_worm_sizes() and find_worm_attacks_and_defenses() split off from make_worms() - new function find_worm_threats(), called from make_worms() - redundant NULLs removed from attack.db, barriers.db, conn.db, defense.db, endgame.db, fuseki19.db, fuseki9.db, and patterns2.db - extract_fuseki.c revised not to generate unnecessary NULL string - owl tuning - new and revised regression tests and game records 2.7.224 released March 8, 2001 - komaster status stored in reading cache - several functions in cache.c made static - new function incremental_order_moves() to support order_moves() - cleanup in topological_eye() and evaluate_diagonal_intersection() - improved traces in owl.c - semeai detecting code in owl_reasons() taken down - tuning - eye tuning - owl tuning - endgame tuning - new game record - new and revised regression test cases - endgame fix in move_reason.c - cleanup in helpers.c - tests for both sides in endgame.tst - estimate_score only if DEBUG_SCORING - revision of rotated tests and arb.tst - vc project files revised - Yin Zheng and Don Wagner added to acknowledgements 2.7.223 released February 28, 2001 - bugfix in play_move() - make_domains() distinguishes strictly between owl calls and others - bugfix in examine_position() - inessential worms excluded in one time in estimate_strategical value - false_margin() revised - inessential strings added in the owl code - MAXPATNO incresead in mkeyes.c - tuning - eye tuning - owl tuning - name collisions resolved in pattern databases - regression/READING revised - new and revised regression test cases - bugfix in regressions/Makefile* - revised nicklas* regressions 2.7.222 released February 26, 2001 - dead code removed from dfa.c, dfa.h, mkpat.c - o_somewhere and x_somewhere only check matcher_status if stackp==0 - bugfix in atari_atari - bugfix in analyze_semeai - dragon.owl_status, status and matcher status initialized - tactically critical nakade stones reclassified as inessential - influence code revised - no strategical attack value for strongly alive dragons - hardwired values for J, j, and t patterns scaled with the board size - maximum values for j and t patterns disabled for boards < 17x17 - tuning - influence tuning - owl tuning - endgame tuning - bugfix in mkpat.c, patterns of class c were unintentionally disabled - new game records - new and revised regression test cases - nonstandard SGF records and missing handicap stones fixed - Mathias Wagner thanked 2.7.221 released February 19, 2001 - restricted_attack2 and restricted_defend1 remember to set komaster - matcher_status only initialized to CRITICAL if owl code says so - bugfix in matchpat(), static variable properly reset - new debug messages in semeai.c - tuning - rotated tests updated - test results updated - new test reading 141 2.7.220 released February 17, 2001 - TODO revised - experimental influence based score estimation - scoring option in ascii interface uses the influence score estimate - test for tactically critical O worms restored from 2.7.218 - atari_atari tries harder to find refutations - influence B patterns do not accept dead stones - revised connection values - bonus for moves which both owl defend/attack and connect/cut something - new autohelper for owl patterns; owl_eyespace() - defend_both() tries harder to find attackable splitting strings - class_mask[CRITICAL][color]=CLASS_O in new_matchpat - open dfa files in binary mode on MS-DOS and Windows - fix dfa error messages. - sgf code now understands PL[1] and PL[2] - new pattern class c, weak connections - tuning - owl tuning - influence tuning - eye tuning - new game records - new and revised regression tests - test results updated 2.7.219 released February 13, 2001 - redundant test for tactically critical O worms taken down in shapes_callback - fix bug in glib configuring - link dfa.c instead of include it. - extra parens in influence - add extra brackets to code1 macro in accumulate_influence - tuning - bugfix in mkpat.c: autohelper function halfeye() now works - gnits automake option removed - new test ego.sgf 2.7.218 released February 7, 2001 - O patterns reject CRITICAL friendly dragons - in make_worms() if worm.defend==PASS move not tried - in attack_callback() ignore strings with 5 liberties - default memory increased to 32Mb - configure supports 48MB and 64MB models - minor tuning - doc revision - vsnprintf error gives warning, not fatal error - duplicate owl test 186 renumbered 2.7.217 released February 1, 2001 - worm.c: only add defense move if worm.defend != PASS - find_defense returns PASS if string is alive as stands - defend1 pattern gets constraint - caching scheme revised so that the cache can be cleared on the fly - new debug flag DEBUG_READING_PERFORMANCE - only make requested dfa files (currently owl*dfa) - tuning - owl tuning - new game record dniwog.sgf 2.7.216 released January 29, 2001 - missing files generate_owl_dfa.sh and matchtest.sh in minipat2 restored - local_owl_node_counter initialized in owl_substantial 2.7.215 released January 28, 2001 - bugfix in analyze_semeai() - bugfix in find_attack_patterns() - new gtp command combination_attack - defend_against_atari_helper() revised - new regression test suite atari_atari.tst - STRATEGY revised - new regression tests and game records - reenable board printing on core dumps - bugfix in attack_callback: attack patterns are matched again - integrate rolled and unrolled versions of accumulate_influence - move invariant code out of loop in accumulate_influence - put patterns/minipat2 under automake control - include unistd.h in patterns/dfa.c for sleep function prototype - add pkgdata_DATA macro to patterns/Makefile.am - add macro DFAFLAGS - bugfix in dfa generation: borders constraints now always checked. - modification in patterns.h to avoid a warning: struct dfa *pdfa - add experimental check_pattern_light() function only checking - DEBUG_OWL_PERFORMANCE reports CPU times - vgprintf uses %.2f for %f - tuning - influence tuning - owl tuning - attack tuning - minor cleaning 2.7.214 released January 21, 2001 - combo attack and defend_both/attack_either can't both add to move value - bugfix in atari_atari() - eye tuning - owl tuning - READING revised - new and revised regression tests - test results updated (except nicklas*.tst) - doc revision 2.7.213 released January 20, 2001 - bigger moyo measure allowed for big dragons before owl code is disabled - compute_eyes_pessimistic() no longer consults the life code - cleanup of mkeyes.c - now possible to specify edge and corner vertices in eyes.db - mkeyes.c and recognize_eye() - owl_substantial() revised - bugfix in special_rescue3() - loop unrolled in order_moves - revision of is_hoshi_point - bugfix in analyze_semeai(): don't try PASS moves - shape value in j or t pattern now modifies hard-wired value - atari_atari makes atari even if a chain is already in atari - environment variable $GNUGO_PATH used to load dfa files - fixup a Sun portability bug with enable-dfa - fixup for owl_vital_apats.db with enable-dfa - tuning - connection tuning - eye tuning - owl tuning - READING revised - new regression tests and game records 2.7.212 released January 18, 2001 - assertion added in is_ko() - revision of compute_eyes_pessimistic() - vital_apats consulted also by do_owl_defend - vital_apats only consulted if level >= 9 - followup values reduced in two helpers - eye tuning - owl tuning - two new helpers finish_ko_helper() and squeeze_ko_helper() - portability patch for dfa in patterns.h - portability patch for cygwin in mkpat.c - test revisions 2.7.211 released January 16, 2001 - new file owl_vital_apats.db - vital_apats are consulted by do_owl_attack regardless of genus - new static variable match_found in owl.c - estimate_territorial_value() limits overvaluation of half point kos - changed order of min and max constraints in value_move_reasons() - analyze_semeai() revised - generic_walk made static in utils.c - tuning - owl tuning - eye tuning - READING and STRATEGY revised - new and revised regression test cases - new game records - rotated tests corrected 2.7.210 released January 14, 2001 - bugfix in reading.c: superstring liberty arrays needed more space - bugfix in owl_reasons which could cause a crash - bugfix in owl_threaten_attack(): return value was always 0 - owl threatened groups are WEAKLY_ALIVE - value of connecting WEAK and WEAKLY_ALIVE groups increased - owl_threats not evaluated if level <= 7 - tactical reading move order tuned - tuning - owl tuning - tuning of hoshi.sgf and sansan.sgf - new regression suites endgame.tst, viking.tst and strategy28.sgf - new tests in owl.tst and strategy2.tst - new regression game records - revision of rotated test suites 2.7.209 released January 10, 2001 - new parameter superstring_depth (default 7) - minor tuning of hoshi.sgf - tuning - owl tuning - connection tuning - renumbering of owl patterns - AB property added to handicap games in regression/games - one new owl test - doc revision 2.7.208 released January 7, 2001 - new reading function special_rescue3 - break_chain2 and break_chain3 calls removed from defend2 and defend3 - call edge reading function from attack2 and attack3 - superstring_breakchain depth in defend2 changed to backfill2_depth - defend2 and defend3 try playing a liberty of the superstring - special_rescue3 called from defend3 - break_chain2_moves tests for self atari - move ordering adds bonus for saved moves - doc revision - basic worm building extracted from make_worms. - new function: build_worms - estimate_territorial_value requires owl reasons with VITAL_EYE_MOVE - better reading at the edge - some fixes in debugboard - use same reading depths in debugboard as in gnugo - minor tuning 2.7.207 released January 4, 2001 - new function break_chain2_efficient_moves - revision of special_rescue() - revision of attack2(), attack3(), superstring_breakchain() - look harder for neighbors of attack moves in examine_move_safety() - compute_eyes_pessimistic tracks margins adjacent to margins - owl_find_lunches considers ko captures - owl_escape_value checks empty before returning -10 - decision to handle tactically moved to semeai_analyzer - semeai analyzer adds move reasons instead of moving defense - tuning - owl tuning - influence tuning - revision of rotated tests 2.7.206 released January 3, 2001 - revision of print_influence and print_numeric_influence - value_move_reasons considers moves with min_territory>0 - reversed level inequality fixed in review_move_reasons - is_legal replaced by safe_move call in semeai_analyzer - revision of proper_superstring_chainlinks() and superstring_recurse() - new patterns in barriers.db - general cleanup - tuning of seki patterns - comments about regression tests - doc revision - manpage revision - new file gnugo.pod 2.7.205 released January 1, 2001 - semeai analyzer looks for owl solution first - semeai analyzer not invoked for inessential dragons - owl patterns classified - bugfix in superstring_breakchain - minor tuning - new regessions arion.tst - revision of rotated tests - minor doc revision 2.7.204 released December 26, 2000 - superstring technology used in attack2, defend2 - new static functions restricted_attack2, in_list in reading.c - libi, libj arrays sized 2 (formerly 3) in attack2 - minimum standard joseki value raised to 27 - hurry replaced by level - print_influence takes dragons_known parameter - obsolete code removed from optics.c - minor tuning - doc revision - doc/indigo2.sgf removed from distribution 2.7.203 released December 21, 2000 - owl status is checked also for dragons with high escape potential - new safety value WEAKLY_ALIVE for dragons which are owl alive by escape - fill_liberty() code revised - new function filllib_confirm_safety() - new debug flag DEBUG_FILLLIB and new debug traces in filllib.c - move valuation slightly revised - influence code revisions - maximum move values for standard joseki removed in shapes_callback() - tuning - owl tuning - influence tuning - new regression test suite filllib.tst - new tests and game records - doc revision - new superstring functions in utils.c - find_superstring_recurse() renamed superstring_recurse() and generalized - new superstring_breakchain() and restricted_defend1() - Separated the SGF library totally from the engine - integrated sgf_utils.h into sgftree.h - The Gameinfo struct expanded - movenum moved to the internals (from gnugo.h to liberty.h) - Some FIXMEs addressed - General minor cleanup 2.7.202 released December 17, 2000 - anisotropic attenuation removed from the influence function - attenuation and strength split into black and white in influence.c - new semantics for E class patterns in influence_callback() - new macro ASSERT_ON_BOARD defined in liberty.h - assertions added in optics.c, move_reasons.c, owl.c, and reading.c - minor revisions of valuation of defense and connect moves - bugfix in linear_eye_space() - bugfix in attack1() - warnings eliminated in main.c - workaround in influence.c for bug in main.c - bugfix in patterns/patterns.h - bugfix in mkpat for dfa - tuning - owl tuning - default owl_node_limit increased to 600 - revisions of golife.tst, ld_owl.tst, and ld_owl_rot.tst - doc revisions 2.7.201 released December 8, 2000 - interface/interface.c removed from the distribution - legal(), suicide() and self_atari() renamed is_legal() etc. - New API function: gnugo_is_suicide. - interface/interface.c removed - playing options quiet is now a global variable - A number of FIXMEs addressed - bugfix in linear_eye_space - minor revision of komoku.sgf and hoshi.sgf - minor tuning - unnecessary NULLs removed in patterns.db - doc revision 2.7.200 released November 30, 2000 - serious bugfix in semeai() - bugfix in owl.c - bugfix in pattern ED58 - bugfix in fill_liberty() - revision of rotated tests - new file regression/games/me.tst and 3 new strategy2 tests - test results updated 2.7.199 released November 29, 2000 - color support test restored to 2.7.193 condition in configure.in - missing doc/api.texi replaced - analyze_semeai is not called if an owl_substantial worm is en prise - minor tuning 2.7.198 released November 28, 2000 - bugfixes in owl.c - new patterns in eyes.db - tuning - owl tuning - minor revisions in analyze_semeai - revised and new regression tests - bugfix in dfa.c: gpout was not cleanly reset before synchronization - if DFA_SORT is set in new_matchpat then sort patterns before check_pattern - new stat functions update_pattern_stats(), display_pattern_stats(), reset_pattern_stat() - dfa_add_pattern is now able to add all transformations into the dfa - new functions for dfa_add_pattern: permut() and show_pattern_instance() - fixed some bugs in matcher.c, and matchtest.sh - removed some unused files. - option -tm forces the anchor to be in the center and adds all transformations - added little_owl.tst - test results updated 2.7.197 released November 27, 2000 - old code removed from moyo.c - sgffile_decidestring() renamed decidestring() etc. - owl data structs in owl_attack, etc. made static - assertion changed in join_dragons - config.h included in interface.c and main.c - revisions to owl_analyze_semeai - show_dragons() lists worm lunches - assertion corrected in join_dragons() - new function find_more_owl_attack_and_defense_moves() in move_reasons.c - strategically_sound_defense() reimplemented - tuning - owl tuning - new file regression/READING reviewing failed reading tests - new tests in reading.tst and ld_owl.tst - new game records - test results updated 2.7.196 released November 23, 2000 - old definition of inessential worms restored - minor revision of owl_analyze_semeai - Small rearrangements in board.c - init_board() renamed to clear_board() - Some comments and rearrangements in gnugo.h - major cleanup in hash.h and hash.c - old definition of inessential worms restored - #include restored in play_ascii.c, play_gtp.c and hash.c - new function owl_update_goal() - revisions of owl_does_defend(), owl_does_attack(), owl_connection_defends(), and owl_threaten_defense() - bugfix in owl_threaten_attack() - doc revision 2.7.195 released November 19, 2000 - owl_analyze_semeai() complete (though still very buggy) - struct local_owl_data now has a color field - owl_find_lunches no longer has color parameter - two missing sgf files restored - config.h included again in matchpat.c and analyze.c 2.7.194 released November 18, 2000 - continued localization of owl - new struct local_owl_data for passing goal, boundary and lunches - new functions owl_update_boundary_marks() and owl_make_domains() - new function owl_topological_eye() - name restored in autohelper macro owl_topological_eye - get_coordinate globalized and moved to printutils.c - new --decidesemeai option - new function owl_analyze_semeai() - Removed all unnecessary inclusion of config.h - cleanup of worm.c - Error handing in main.c: get_coordinate() - shuffling of main.c - inclusion of cache.h removed from board.c - definition of inessential worms changed - dragons classified CRITICAL when owl_attack() and owl_defend() disagree - join_dragons() revised to choose origin consistently within dragons - dragon_ring() and dragon_eye() cleaned up and revised - clear_move_reasons() moved from genmove() to reset_engine() - revised and extended debug output from influence.c - strategically_sound_defense() revised - valuation of inessential dragons corrected - the owl code doesn't consider escape on the first move - filter out vital defense moves which are self ataris in owl_determine_eye() - bugfix in owl_shapes - bugfixes in owl_substantial() - attack2() revised - new function special_attack4() in reading.c - move ordering retuned - safe_move() again changed to return 3 for illegal ko captures - bugfix in shapes_callback() - gtp_loadsgf() now also calls reset_engine() - cut_connect_callback revised to deal with join_dragons() changes - tuning of barriers.db, influence.db, conn.db, and eyes.db - tuning - owl tuning - revision of joseki values - new game records and test cases - regression/STRATEGY revised - mkpat and mkeyes tolerate "\r" for Windows compatibility - Mingw32 and VC++ compatibility changes in configure.in and debugboard 2.7.193 released November 14, 2000 - owl_topological_eye autohelper macro replaced by topological_eye - owl goals and boundaries systematically localized - global owl_goal_color removed - now O patterns accept critical friendlies if * rescues tactically - matcher_status used in print_ascii_area (moyo.c) - new function matcher_status() - ascii mode save command fixed - fixme's addressed in play_ascii.c - tuning - two ld*sgf files had gotten overwritten by rotated versions--fixed - revision of test results 2.7.192 released November 12, 2000 - new on board assertions in move_reasons.c - increased safety value for strongly alive dragons - territory changes are counted for owl attacks and defenses - influence changes are counted for semeai moves - reverse followup values can never more than double the move value - bugfix in liberty_of_dragon(), check that vertex is empty - somewhere() function and corresponding autohelpers require that found stone does not have status dead - play_attack and play_defend autohelpers return ko results - tuning of barriers.db, conn.db, endgame.db - owl tuning - tuning of patterns.db and patterns2.db - double_does_break_helper and wide_break_helper replaced by constraints - new helpers edge_double_sente_helper and defend_against_atari_helper - new autohelper defend_against_atari - new target all_batches in regression/Makefile.am - revision of rotated testsuite - updating of test results 2.7.191 released November 10, 2000 - bug fix in update_liberties: kmouse_branch_depth - reading terminates when stackp>mouse_reading_depth - doc revision - revised dragon_escape() to allow kosumi directly from dragon - revised effect of I class influence patterns when computing escape influence - find_influence_patterns() add influence barriers "manually" when computing escape influence - dragon under consideration is now allowed to contribute influence during computation of escape influence - mouse_find_lunches() made static to mouse.c - new autohelper function mouse_escape_value - 7 new patterns in mouse_defendpats.db, aiming at escape - new function mouse_connection_defends() in mouse.c - code revised in do_mouse_attack(), do_mouse_defend(), and mouse_mark_dragon() - mouse_mark_dragon now can take either one or two dragons - bugfix in do_mouse_attack(), two loop end conditions were off by one - bugfix in do_mouse_attack() and do_mouse_defend(), the second most important move was removed when pattern of value 99 found, but not third most important one - move_safety field of move_data struct initialized correctly in move_reasons.c - examine_move_safety() revised - order of examine_move_safety() and induce_secondary_move_reasons() calls reversed in review_move_reasons() - same_dragon() in utils.c revised to be able to deal with the "no dragon" case, i.e. (-1, -1) coordinates - effective_move measure revised to never include intersections further away than distance 4 2.7.130 released July 11, 2000 - escape2 field removed from dragon_data struct together with code to compute it - patterns/escape.db removed - mouse status and if applicable attack and defense points printed by show_dragons() - bugfix in compute_escape_influence() in influence.c - revised debug and trace messages in mouse.c - new function examine_move_safety() in move_reasons.c - strategically_sound_defense() revised - more restrictions on which move reasons induce a block/expand move reason 2.7.129 released July 9, 2000 - redundant assignments removed from mouse.c - reading cache cleared after examine_position() call in sgffile_decidedragon() and sgffile_decideposition() - new file regression/games/incident262.sgf 2.7.128 released July 8, 2000 - obsolete declarations of black_domain and white_domain removed from liberty.h - dragon_escape() and compute_alternative_escape() in dragon.c revised - new function compute_escape_influence() in influence.c - new static functions compute_mouse_escape_values() and mouse_escape_route() in mouse.c - if --alternative_escape option enabled, do_mouse_attack() and do_mouse_defend() cut off reading if mouse_escape_route() report a sufficiently high escape potential - redundant file interface/debugboard/loadsgffile.c really removed - removed remaining occurences of return code 2 in do_mouse_attack() and do_mouse_defend() - new lunch pattern in patterns/conn.db 2.7.127 released July 6, 2000 - redundant file interface/debugboard/loadsgffile.c removed - parts of interface/play_solo.c moved into new file interface/loadsgffile.c - new library interface/libinterface.a for use by interface/debugboard - new files sgf/sgfkey.c and sgf/sgfkey.h to handle new abstract type sgfkey - find_border() renamed to examine_cavity() in worm.c - static functions propagate_worm_recursive() and libertiesrec() removed from worm.c - code in worm.c simplified and cleaned up - dragon genus initialized in make_dragons() instead of in make_worms() - new static functions dragon_escape() and compute_alternative_escape() in dragon.c - new option --alternative_escape to enable new escape route measure - new file /regression/games/incident261.sgf - one new test in regression/mouse.tst 2.7.126 released July 5, 2000 - change in definition to higher order liberties 2.7.125 released July 4, 2000 - statistics functions reset_mouse_node_counter() and get_mouse_node_counter() in mouse.c - corresponding new GTP commands reset_mouse_node_counter and get_mouse_node_counter - mouse.tst, ld_mouse.tst, and ld_mouse_life.tst reports the total number of nodes visited by the mouse reading - bugfix in mouse_determine_life(), attack and defense points for lunches were switched - constraints in some mouse patterns reordered for better performance - new files incident256.sgf and incident 258.sgf in regression/games - four new tests in regression/mouse.tst 2.7.124 released July 1, 2000 - tuning of mouse_defendpats.db - new files incident253.sgf and incident254.sgf in regression/games/ - two new tests in regression/mouse.tst - restructured and corrected coordinate conversion code in play_ascii.c 2.7.123 released June 27, 2000 - one new pattern in mouse_attackpats.db - new file regression/games/life_and_death/ld18.sgf - two new test cases in regression/ld*.tst - bugfixes in life.c - new GTP commands debug_move_influence, influence, move_influence, worm_data, and dragon_data - new function gtp_mprintf() in interface/gtp.c - new functions in influence.c to export influence data 2.7.122 released June 22, 2000 - partial implementation of debugboard eyes tab - black_domain[][] and white_domain[][] now static in optics.c - make_domains() restructured - xor() and unique_color() macros removed from showbord.c - support for boards smaller than 19x19 in debugboard - worm[][].attacki comparisons with -1 replaced everywhere with comparisons of worm[][].attack_code with 0 - likewise for worm[][].defendi and worm[][].defend_code - doc/dragon.texi revised - new GTP command debug_influence - code for debug printing restructured in influence.c 2.7.121 released June 20, 2000 - mouse option automatically enabled with decidedragon and decideposition options - matchpat() uses mouse status if available - new file regression/games/incident252.sgf - one new reading test 2.7.120 released June 17, 2000 - mouse lunches must have attack code 1 - bugfix in tryko sgf output - many reading functions take komaster argument - many reading functions made static - new functions do_attack and do_find_defense (with komaster) - cleanup in reading.c - doc revision - pattern Eye1 in conn.db taken out 2.7.119 released June 16, 2000 - new function gg_vsnprintf in gg_utils.c - check in configure.in for vwprintf - gg_vsnprintf used as workaround if vwprintf unavailable - fcntl/read stuff removed from debugboard - display_board_cursor() call added at the end of display_refresh() - leaveok() call removed from display_init() - debugboard cursor can be controlled by arrow keys - COLOR_* renamed to GG_COLOR_* to avoid name collision when using pdcurses - new file regression/games/life_and_death/ld17.sgf and new ld* test cases - non-options treated as filenames - new format strings %H and %C to vgprintf() and relatives - trymove() and tryko() write hash value together with node number to output sgf file - new files incident248.sgf and incident251.sgf in regression/games - decideeye() moved from utils.c to sgffile.c and renamed sgffile_decideeye() - decideeye option now can write variations to an sgf file - life code revisions - utils.texi revised - bugfix in attack_callback() in worm.c 2.7.118 released June 13, 2000 - minor sniff_lunch revision - new mouse_attack pattern - new file regression/games/reading03.tst. - one new reading test - check for curses also in -lpdcurses - check for term.h and curses.h in AC_CHECK_HEADERS instead of separate AC_CHECK_HEADER - new #define TERMINFO in config.h for the color code in gg_utils.c, debugboard builds with pdcurses on DJGPP despite the absence of term.h - workaround for the case when vwprintw is not available (as in pdcurses) in display_message() in interface/debugboard/display.c - print the error message about too small screen after the screen has been cleared in display_message() - use O_NONBLOCK as mask instead of FNDELAY since O_NONBLOCK is more widely available - remove HAVE_STRING_H use - include instead of for mingw included with new cygwin-1.1.1 release - cleanup of regression/Makefile.am - load_and_score_sgf_file() revised - life code revisions - default life eyesize increased from 8 to 10 - bugfix in mouse_attack() and mouse_defend() - decideeye() in utils.c revised - terse option removed - function remove_string_and_mark() removed from board.c - distance and strategic_distance code removed 2.7.117 released June 11, 2000 - bugfix in regression/Makefile.am - countsize() renamed to countstones() - new function findstones() - life.c completely rewritten - regression/games/marginal.sgf extended - new life and optics tests - depth values no longer reduced while running make_domains() - revision of topological_eye()-calling code in dragon.c and mouse.c - doc/utils.texi revised 2.7.116 released June 9, 2000 - goal now static to mouse.c - mouse_attack() and mouse_defend() usage simplified - mouse_effective_defense replaced by mouse_does_defend - doc revision - debugboard: strings renamed to worms - debugboard now gives info about dragons - debugboard now has a help screen - color_to_string enhanced with eye colors also - new function status_to_string in utils.c - regression/Makefile.am revised so that make check also works with a VPATH build - STACK_SIZE revised and assertion added in incremental_board.c - recognize_eyes2() now returns 0 if the eyespace is too large to evaluate - assertion added in eyehash_index() in life.c - size of hash table in life.c corrected - new function location_set_get_size() - bugfix in hadj() macro in optics.c - gtp.c keeps track of the board size in a static variable - one new reading test 2.7.115 released June 7, 2000 - regression/Makefile.am prepared for VPATH build - compiling without curses works again, debugboard disabled in that case - assert that color is BLACK or WHITE in do_trymove() - pass move in minimize_eyes() scored and tested together with the other legal moves - bugfix in maximize_eyes() - new GTP commands genmove_black and genmove_white - eyes1.sgf, eyes2.sgf, and eyes3.sgf in regression/games/ extended - new tests in optics.tst and life.tst 2.7.114 released June 6, 2000 - sniff_lunch revised and moved to mouse.c - mouse code classifies boundary strings - bugfix: mouse code was unsafe when stackp>0 - new functions do_mouse_attack() and do_mouse_defend - more careful includes in interface/debugboard/display.c - bugfix in incremental_sloppy_self_atari() - regression shell scripts revised - global variable color_has_played eliminated - new function stones_on_board() in board.c - movenum no longer used in fuseki.c - examine_position() avoids recomputing data that are up to date - caching of mouse reading results is no longer using code 2 to indicate a successful result for pass - new workaround for mangling of cached negative move coordinates - statistics functions reset_life_node_counter() and get_life_node_counter() in life.c - corresponding new GTP commands reset_life_node_counter and get_life_node_counter - life.tst, ld_life.tst, and ld_mouse_life.tst reports the total number of nodes visited by the life code - make_worms no longer returns anything - correct answer for mouse test 37 revised - temporary workaround in recognize_eye2(), chimeras are reported as one and a half eye - maximize_eyes() and minimize_eyes() score and sort the moves to test - performance optimizations in maximize_eyes() and minimize_eyes(), shortcut loops where possible unless all attack or defense moves are asked for - bugfix in maximize_eyes(), check for marginality when counting eyes 2.7.113 released June 5, 2000 - mouse lunches are sniffed - sniff_lunch revised - bugfix in mouse_find_lunches - new global mouse_goal_color - bugfix in mouse_topological_eye autohelper - decidedragon messages corrected when tenuki wins - mouse tuning - new function location_to_string() in utils.c - new function position_examine_position() in engine/interface.c - new program debugboard located in interface/debugboard/ - warning fixed in utils/gg_utils.c - comments about mapping of colors for linux console moved from showbord.c to utils/gg_utils.c - unused define -DBUILDING_GNUGO_ENGINE removed from engine/Makefile.am - config.h no longer included by moyo.c or showbord.c - new functions suicide() and self_atari() in board.c - a few approxlib() calls in reading.c replaced by suicide() and self_atari() - new files incident59.sgf, incident74.sgf, and reading02.sgf in regression/games - new mouse and reading test cases 2.7.112 released June 5, 2000 - optimizations of false_margin() - safe_move() no longer called from make_domains() if mouse code enabled - call to modify_eye_spaces1() from make_domains() disabled if mouse code enabled - bugfix in attack2() - bugfix in break_chain2() - duplicate comment block removed from reading.c - new files incident169.sgf, incident246.sgf, incident91.sgf, and reading01.sgf in regression/games - regression/games/life_and_death/ld11.sgf slightly revised - new mouse and reading test cases 2.7.111 released June 4, 2000 - comment added in attack4 - mouse_attack and mouse_defend call make_domains when stackp==0 - new files mouse04.sgf, incident185.sgf, incident186.sgf, incident199.sgf, and incident225.sgf in regression/games/ - new mouse and reading tests 2.7.110 released June 3, 2000 - init_color() in utils/gg_utils.c renamed to gg_init_color() to avoid name collision with curses library function 2.7.109 released June 3, 2000 - HASH64 removed from configure.in and acconfig.h - config.vcin brought in sync with config.h.in - macro UCHAR_ALIAS replaced by char - curses initialization and drawing code moved from moyo.c and showbord.c to utils/gg_utils.c - argument source_root removed from sgf_write_header - new files games/mouse02.sgf and games/mouse03.sgf - new tests, revised results - MAX_MOVES increased to 3 in mouse.c - attack4 tries a little harder - tuning of mouse patterns - life and death test cases 52-64 completed 2.7.108 released June 1, 2000 - mouse functions use a return code of 2 if tenuki works - Zobrist hashing extended to mouse_attack and mouse_defend - new function new_position() in board.c - warning fixed in life.c 2.7.107 released May 31, 2000 - random.c and random.h moved from engine/ to utils/ - gg_snprintf() and gg_gettimeofday() moved to new file utils/gg_utils.c and corresponding header file utils/gg_utils.h - new function gg_version() in utils/gg_utils.c - safe move cache implemented for mouse_shapes_callback - topological_eye autohelper function (taken down in 2.7.104) is back for mice - topological eye takes both eyespaces as parameters - 32 new life and death test cases, 1 new mouse test 2.7.106 released May 30, 2000 - tuning of mouse patterns - fuseki9.db rebuilt from a larger set of games - new game records and test cases 2.7.105 released May 29, 2000 - config.h only included by files which need it - one new mouse pattern - new test suite ld.tst with variations for --mouse and --life options; added for real this time - new dedicated fullboard pattern matcher for use with the fuseki databases - first move patterns in fuseki9.db and fuseki19.db no longer commented out - missing borders added in fuseki9.db and fuseki19.db - number of preambles in mkpat.c reduced from three to one - mkpat.c revised to also handle patterns for fullboard matcher - bugfix in make_dragons(), lunches weren't propagated to the whole dragon - one new pattern in eyes.db - pattern Lunch2 in conn.db revised - regression/games/marginal.sgf revised - new optics and life regression test cases 2.7.104 released May 28, 2000 - topological_eye takes the eye_data as a parameter - newgoal removed from mouse_attack - mouse_attack wins if ALL strings of original dragon are taken - topological_eye autohelper function temporarily taken down - mouse apat A39 revised - make_dragons does not add_lunch if lunch already eaten - doc revision - new function false_marginal_eye in life.c - new eye pattern for 4 point linear eye with a false margin - Tests for life and optics restructured - New tests for false margins - config.h only included by files which need it, plus still liberty.h - new GTP command dragon_status - new test suite ld.tst with variations for --mouse and --life options - shell scripts in regression/ revised - new game records ld1.sgf -- ld8.sgf in regression/games/life_and_death 2.7.103 released May 27, 2000 - new fields height and width added to the pattern struct - bugfix in fixup_patterns_for_board_size() in matchpat.c; matching now works correctly also when the board size changes between calls to matchpat - bugfixes in does_attack() and does_defend() in utils.c - bugfix in false_margin() in optics.c 2.7.102 released May 26, 2000 - better documentation of life code in the source - life.c handles false marginals - new function: location_set_isempty() in location_set.c - regression/games/marginal.sgf revised - new optics and life tests 2.7.101 released May 25, 2000 - revised doc/gnugo-logo.jpg and doc/gnugo-logo.jpg - new tests in reading.tst and mouse.tst - bugfixes in test files 2.7.100 released May 24, 2000 - minimize_eyes and maximize_eyes simplified and bugfixed - better documentation of the hash table in life.c - some cleanup in life.c, optics.c - new format character 'x' in vgprintf (utils.c) - improved printing of pass moves when %m is used in vgprintf - default life_eyesize increased to 8 - new eye tests 2.7.99 released May 23, 2000 - suffix rules for .gtp and .res in regression/Makefile - new regression files regression/*.tst - regression shell scripts revised - regression/expected removed - several new files in regression/games - several new regression tests - regression/ directory now under control of automake 2.7.98 released May 22, 2000 - false marginals are renamed false margins - eyespace search revised in mouse_determine_life - new file regression/expected - new targets in regression/Makefile - regression/games/false_marginal.sgf renamed regression/games/marginal.sgf - mouse tuning - several new files in regression/games - several new tests in regression/mouse.gtp, regression/eyes.gtp, and regression/reading.gtp - new GTP commands trymove, popgo, dump_stack, increase_depths, and decrease_depths - new function gtp_decode_move() in interface/gtp.c - ko eyes assigned to a dragon so halfeye analysis is performed - old regression files in regression/obsolete/ removed 2.7.97 released May 21, 2000 - false marginals are detected during make_domains - new function false_marginal - new file regression/games/false_marginal.sgf - regression tests in regression/eyes reimplemented to use GTP - regression shell scripts revised - new targets in regression/Makefile to test optics and life code - new global variable position_number which is increased any time a real move (not a trymove) is made or the board is permanently changed by some other means - safe_move cache modified to use position_number instead of movenum - caches in moyo.c modified likewise - new function setup_board() in board.c - the functions in engine/interface.c no longer modifies the global board on their own - new function gtp_finish_response in interface/gtp.c - new gtp command eval_eye 2.7.96 released May 20, 2000 - GTP documented - new file doc/gtp.texi - reading test suite extended - regression shell scripts revised - bugfix in gtp_loadsgf() - output from gtp_attack(), gtp_defend(), gtp_mouse_attack(), and gtp_mouse_defend() revised 2.7.95 released May 19, 2000 - new interface: GTP, Go Text Protocol - new files in interface/: gtp.c, gtp.h, and play_gtp.c - old contents of regression/ moved to regression/obsolete/ - new regression scripts and suits in regression/ - doc/regression.texi revised 2.7.94 released May 18, 2000 - bugfixes in mouse.c 2.7.93 released May 16, 2000 - writesgf() split into sgf_write_header() and writesgf() 2.7.92 released May 14, 2000 - bugfix in utils.c, config.h included before using information from configure tests 2.7.91 released May 14, 2000 - all functions in sgffile.c are now prefixed with sgffile_ instead of sgf_ to separate them from functions which handle SGF trees - some minor cleanup in dragon.c - globals last_move_i, last_move_j made local to interface/play_ascii.c - functions save_state() and restore_state() removed together with variables white_captured_backup and black_captured_backup. - move reasons are now sorted - inclusion of sys/time.h made contingent on HAVE_SYS_TIME_H in utils.c - inclusion of time.h and/or sys/time.h removed from hash.c and interface/play_solo.c - one new pattern in eyes.db 2.7.90 released May 12, 2000 - bugfixes in play_gmp.c, play_solo.c, and play_test.c; gameinfo correctly initialized - cleanup of play_gmp.c 2.7.89 released May 10, 2000 - bugfixes in main.c; decidestring, decidedragon, and decideeye options work correctly again - new function color_to_string() in utils.c 2.7.88 released May 9, 2000 - minor tuning of mouse_attackpats.db - extended documentation of influence function - new function unconditional_life() in utils.c - MAX_STRINGS macro moved from incremental_board.h to liberty.h - unused variable removed from do_pass() in play_ascii.c 2.7.87 released May 8, 2000 - guess_mode_from_sgf_comment() removed - coordinates (-1, -1) are now always used for pass moves (rather than (board_size, board_size)) - obsolete and unused debug flags marked in gnugo.h - inclusion of sys/types.h removed from gmp.c - unused function str2short() removed from sgf_utils.c - cleanup of play_solo.c, play_test.c, and sgf_utils.c - bugfix: move number again passed from the interfaces to the engine 2.7.86 released May 7, 2000 - doc revision - more comments in the code for multiple diagonals of a halfeye - extended debug outputs in optics.c - bugfix in hash.c - new datataype Gameinfo - Gameinfo used everywhere in interface/*.c - Gameinfo used instead of Position in a few places otherwise - new function: position_recordhand() - board_size no longer public; moved from gnugo.h to liberty.h - several small functions removed from interface/interface.c - bugfix in regression/Makefile - bugfix in mkpat.c 2.7.85 released May 5, 2000 - bugfix in recognize_eye() 2.7.84 released May 3, 2000 - multiple vital eye moves in conjunction with topological halfeyes supported in both optics and life code - compiler warnings fixed in interface/play_ascii.c and engine/interface.c - parameter names added to function prototypes in interface/interface.h 2.7.83 released May 1, 2000 - new functions in engine/interface.c - p[][], ko_i, ko_j, black_captured, white_captured moved from gnugo.h to liberty.h, i.e. made local to the engine - attack() and find_defense() also made local to the engine - board handling functions removed from interface/interface.c - all interface functions in interface/interface.c now use the Position datatype - sgfAddMoveFromTree() and sgfPlayTree() moved from sgfana.c to ttsgf.c - minor tuning of mouse_defendpats.db 2.7.82 released April 30, 2000 - new file engine/interface.c included for real this time - removed types SGFNodeP and SGFPropertyP - play_solo() and play_gmp() now plays on a Position. - get_moveXY moved from play_solo.c to sgf_utils.c - minor cleanup in a number of places - main.h moved from engine/ to interface/ 2.7.81 released April 28, 2000 - new function sniff_lunch (unused and untested) - new function remove_string_and_mark - originate_eye now public - add_half_eye now takes half_eye array as an argument - doc revision - jump_out_helper() rewritten to use influence function rather than strategic distance - matchpat_db() renamed to matchpat() - redundant autohelper function singleton() removed 2.7.80 released April 27, 2000 - bugfix in hash_rand() - obsolete -DBUILDING_GNUGO_ENGINE removed from patterns/Makefile.am - countlib2(), findlib2(), and approxlib2() renamed to countlib(), findlib(), and approxlib() respectively - minor tuning of influence.db 2.7.79 released April 26, 2000 - count of hash collisions added to the --statistics option - new files random.c and random.h with an implementation of a twisted GFSR random number generator - all calls to rand() or random() replaced by calls to the local random number generator - test for random() removed from configure.in 2.7.78 released April 25, 2000 - sgf/sgf.c moved to the engine and renamed to sgffile.c - sgf/sgf.h removed; declarations moved to gnugo.h and liberty.h - removed a few declarations for non-existent functions from sgf_utils.h - analyzerflag moved to globals.c - new file: engine/interface.c - some functions for handling positions. - ttsgf_read.c and ttsgf_write.c integrated into ttsgf.c - bugfix in sgfPlayTree() - old approxlib() removed - bugfix in life.c - local random generator removed from hash.c - cleanup of hash.c - simplified typedefs in hash.h 2.7.77 released April 24, 2000 - doc of the colored influence displays added - new function hashdata_diff_dump() for use in assertions - local random generator in hash.c - revised types in hashing code - bugfix in semeai_analyzer() - order of engine/ and pattern/ builds changed back - extract_fuseki no longer built by default - bugfixes in extract_fuseki.c - tuning of influence.db - bugfixes in patterns.db 2.7.76 released April 23, 2000 - revised assertions in add_stone() and remove_stone() - declaration and initialization of color_has_played moved from interface/ to engine/ - hashtable_clear no longer crashes if passed a NULL pointer - warning if hashtable allocation fails - new database matching step in the fuseki module - new experimental option --fusekidb to enable fuseki database matching - new program patterns/extract_fuseki.c which compiles a fuseki database in patterns.db format from a collection of game records - new pattern databases fuseki9.db and fuseki19.db containing 9x9 and 19x19 fuseki databases respectively - bugfix in influence.c to stop a single stone from claiming the whole board - libengine is now built before the patterns/ subdirectory is compiled 2.7.75 released April 20, 2000 - recognize_eye() and recognize_eye2() looks for all vital eye points and passes them to the move generation - eyes.db format extended for multiple vital moves and database revised - liberty counting functions in incremental_board.c restructured to agree with the new corresponding functions in board.c - approxlib() and countlib() calls converted to countlib2(), findlib2(), and approxlib2() calls - countlib() macro removed - accurate_approxlib() revised and accurate_countlib() macro removed - autohelper lib() can now be used for stackp>0 - TODO revised 2.7.74 released April 19, 2000 - obsolete code removed from genmove() - board_t renamed to Intersection - new Position struct added in gnugo.h - print_influence() now prints everything to stderr 2.7.73 released April 18, 2000 - revised TODO - renamed static function compile_for_match_new() back to compile_for_match() - removed all external calls to compile_for_match() - minor cleanup in globals.c - don't regard marginal eye points as real eyes in the life code - neighbors to marginal eye points may be captured in the life code 2.7.72 released April 13, 2000 - old board code removed from board.c - new functions countlib2(), findlib2(), and approxlib2(), intended to replace approxlib() 2.7.71 released April 12, 2000 - bugfixes in the hashing code, now CHECK_HASHING works again - pattern database code restructured, explicit calls to compile_for_match() no longer needed - apats.db renamed to mouse_attackpats.db and dpats.db renamed to mouse_defendpats.db - minor cleanup of dragon.c, life.c, optics.c, and patterns/patterns.h - documentation of hashing added to doc/reading.texi - cleanup of filllib.c 2.7.70 released April 10, 2000 - doc revision - bug fix in fill_liberty - compiler warning fix - simplified implementation of double_threat() - improved trace messages in confirm_safety() - depth values increased during reading in confirm_safety() 2.7.69 released April 9, 2000 - bugfix in regression/eyes/test.sh - revision of confirm_safety - revision of review_move_reasons - new function double_atari - new function accurate_approxlib - accurate_countlib takes *libi, *libj as parameters - fill_liberty tries to avoid setting up double ataris - doc revision - load_and_analyze_sgf_file assumes color_has_played - bugfix in mouse_determine_life 2.7.68 released April 7, 2000 - New switch --terse for test output - Various minor cleanups - life.c much commented - regression tests for life code using --decideeye in regression/eyes 2.7.67 released April 5, 2000 - check for size of int and long in configure - configure option --enable-hash64 - separate options --life and --life_eyesize - reformatting of help string to fit 80 columns - bugfix in play_ascii.c - minor tuning of patterns.db 2.7.66 released April 4, 2000 - point of attack and point of defense considered separately by compute_eyes(), recognize_eye(), topological_eye(), and half_eye_data - make_dragons() now take color to play as parameter - (defensei, defensej) renamed (defendi, defendj) in a number of places - minor tuning of patterns2.db 2.7.65 released April 3, 2000 - removed trailing ',' symbols in enums in main.c and gmp.c - extraneous declaration of deltai[] and deltaj[] removed from influence.c - bugfixes in the CHECK_HASHING code - bugfix in play_ascii.c, repeated save and load now works - compile_for_match() added in two places - keep track of attack and defense points of mouse_lunches - revision of mouse_find_lunches() and mouse_lively() - minor doc revision - aesthetic reformatting in eyes.db - declaration of incremental board functions moved from liberty.h to incremental_board.h - new function incremental_mark_string() in incremental_board.c - replaced mouse_mark_strings() with a generic mark_string() in board.c 2.7.64 released April 2, 2000 - updated DJGPP info - removed leading white space in windows.texi for more nicely formatted info files - removed obsolete workaround for a texi2html missing feature. - added members defendi and defendj to struct eye_data - recognize_eye2 now returns point of defense as well as point of attack for an eye - compute_eye now reports defense point as well as attack point - recognize_eye2 now considers if the boundary of the eye is captured during eye reading - speed optimizations in recognize_eye2 - 5 new functions in location_set.c - small bugfix in showbord.c - small bugfix(?) in main.c - small cleanup in dragon.c - new function mouse_effective_defense() - if the mouse code is enabled, strategically_sound_defense() invokes mouse_effective_defense() 2.7.63 released April 2, 2000 - new function attack1() to determine whether a string in atari can be captured - snapback() made obsolete and removed 2.7.62 released April 1, 2000 - bugfix in evaluate_diagonal_intersection() - evaluate_diagonal_intersection moved to optics.c and made static - new function topological_eye - new autohelper option topological_eye - doc revision - mouse tuning - hashvalue test whether matchpat is properly prepared for the board position being matched - compile_for_match() added in a few places - modify_eye_spaces1() and find_cuts() not used when make_domains() is called from the mouse code - minor bugfixes in life.c and board.c - minor tuning of patterns2.db 2.7.61 released March 31, 2000 - bugfix in recognize_eyes2() so it can be used for stackp>0 - reloading of files in ascii mode is documented - mouse code tries tenuki if no move of value >40 found - dpat revision - eye pattern 524 removed - obsolete fixme removed from patterns2.db - new function move_in_stack() in board.c - improved debug output in life.c - decideeye() disables trace outputs during make_worms() and make_dragons() 2.7.60 released March 30, 2000 - doc revision - new option --life to enable the life code - new function initialize_engine() in genmove.c - bugfixes in sgf_decidedragon(), sgf_decideposition(), and decideeye() - modify_eye_spaces1() only called from make_domains() if stackp==0 - loop unrolling in accumulate_influence enabled 2.7.59 released March 29, 2000 - new file life.c with eye reading code - new file location_set.c with a utility class that contains a set of locations on the go board - bew file location_set.h with headers for location_set.c - bugfix in board.c which makes the allocation of hash nodes correct - separation of the examination step of genmove() into it's own function, examine_position(), and calls to this function in a number of places - some comments added in mouse.c plus some cleanup - new option --decideeye which tells the status of an eye - new function get_coordinate() in main.c - black_eye and white_eye passed as arguments to make_domains - private black_eye and white_eye arrays for mouse.c - eye pattern added to eyes.db - bugfix in unrolled accumulate_influence() - bugfix in move_reasons.c 2.7.58 released March 28, 2000 - loop unrolling in accumulate_influence(), initially disabled by default 2.7.57 released March 27, 2000 - doc revision - compile_for_match() called again after running mouse code from genmove() - mouse_genmove() removed from utils.c (was unused) - doc/MOUSE and doc/INFLUENCE removed from distribution, all material is included in the Texinfo documentation - matchpat aborts if color==EMPTY - mouse_attack returns true if trymove captures - unnecessary test eschewed in mouse_find_lunches - corrected: debug flag set wrong in main.c with --mouse 2.7.56 released March 25, 2000 - optics.c: redefinition of lively for mousing - new functions mouse_find_lunches and mouse_lively - new DEBUG_MOUSE debug option - does_attack and does_defend no longer require stackp==0 - new apats and dpats - doc revision - sethand.c: bugfix in placehand(), use add_stone() instead of manipulating p[][] directly 2.7.55 released March 25, 2000 - initialize dragon.mouse_attack and dragon.mouse_defend - revaluation of joseki database - hashing code revised for 64 bit architectures - Makefile added to regression subdirectory and regress.sh revised - minor tuning of patterns.db - AUTHORS and doc/introduction.texi revised 2.7.54 released March 23, 2000 - revised eye patterns, prefer to play on marginal vital points - doc revision - introduction moved from incremental.c to texinfo - special value 99 implemented for apats and dpats - new apats and dpats - AUTHORS and doc/introduction.texi revised - accurate_countlib revised - slow_findlib() added in incremental_board.c so that incremental_findlib() and incremental_countlib() can handle all cases 2.7.53 released March 21, 2000 - bugfixes and other revisions of the incremental board code - incremental board code enabled by default - new function accurate_countlib() in utils.c - a few countlib() calls replaced by accurate_countlib() - minor bugfix in connection_value2 2.7.52 released March 19, 2000 - bugfix: decidestring and decidedragons were getting depth 0 - new apats and dpats - minor cleanup of join_dragon invocations - mouse code reports findings (temporary measure) - doc revision 2.7.51 released March 18, 2000 - doc revision - hurry >= 3 turns off some features - adjust configure.in, config.vc and sgf/ttsgf.c to test for vsnprintf instead of snprintf - replace an embedded newline in a #defined string in main.c with an explicit \n - remove trailing ',' characters in enum declarations - include interface.h in sgf_utils.h so that enum testmode is defined when declaring guess_mode_from_sgf_comment. - bugfix in break_through_helper() 2.7.50 released March 17, 2000 - new option --showtime makes genmove report its time - new option --hurry decrements depth parameters - hurry can be set during ascii play - new global variables hurry and showtime - gg_gettimeofday made global - new global variables nominal_depth, nominal_backfill_depth, nominal_fourlib_depth, and nominal_ko_depth 2.7.49 released March 15, 2000 - bugfix in make_dragons (--mouse could cause crash) - bugfix in mouse_determine_life - bugfix in vgprintf - new function vital_chain - new autohelper functions singleton and vital_chain - mouse tuning - new eye pattern - mouse code documented - string.h included in incremental_board.c to stop warning - sgf functions cleaned up by passing around a file handle instead of sharing a global one - minor optimizations in break_chain() and relative_break_chain() - minor changes and more comments in incremental_board.c - stack implementation revised in incremental_board.h 2.7.48 released March 14, 2000 - new global variable mouse - new functions mouse_reasons, add_mouse_attack_move, add_mouse_defend_move - new option --mouse - support for loading a position from file and continue playing with the ascii interface 2.7.47 released March 13, 2000 - singleton() moved from utils.c to board.c - new files incremental_board.c and incremental_board.h, supplying an implementation of incremental board updates - support for incremental board updates added to board.c but still disabled - updateboard() made static to board.c - return type of pushgo() and popgo() changed to void - new function play_move() replaces updateboard() for use from interfaces 2.7.46 released March 10, 2000 - chainlinks() and chain() moved from reading.c to board.c - find_origin() moved from utils.c to board.c - count() made static to board.c 2.7.45 released March 9, 2000 - globals global_size, global_lib, global_libi, and global_libj eliminated - new function countsize() in board.c - tenuki (?) implemented for autohelpers - two autohelpers in patterns.db and one in dpats.db use tenuki - type omitted from findex entries - decideposition takes a color option - if (MOUSE) then showboard prints two diagrams - new apats and dpats - error messages in mkpat slightly revised - Martijn van der Kooij and NNGS are thanked - minor spelling corrections in Texinfo documentation - windows.texi revised 2.7.44 released March 8, 2000 - globals size, lib, libi, libj renamed global_size, global_lib, global_libi, global_libj - new parameters to count(), approxlib(), and countlib() for passing liberty locations - bug fixed in mouse_determine_life which could cause crash - new option --decideposition - showboard can display mouse_status - mouse_status computed in dragon.c - a few new apats and dpats - findex entries omit parameters - windows installation instructions added to Texinfo documentation 2.7.43 released March 7, 2000 - connection_value2() revised - type of potential_move array changed to int - updated VC project files 2.7.42 released March 6, 2000 - mouse goal array changed from int to char - C patterns implemented for mouse patterns - bugfix in mouse_defense: misplaced popgo() popped - new function goaldump for debugging - new function mouse_mark (like count but does not mark liberties) - new mouse patterns - cleanup of interface.c - pushgo() made static - pattern profiling output now computes the total number of hits and reading nodes - O symmetry introduced in barriers.db 2.7.41 released March 5, 2000 - documentation revision - new file doc/influence.texi - move generation functions are documented in Texinfo - influence.c functions are documented in Texinfo - short section on Migration removed from move_generation.texi - new pattern profiling option --profile_patterns - minor tuning - new symmetry class 'O' - joseki pattern values reduced to a third 2.7.40 released March 4, 2000 - doc revision - tryko returns 0 if suicide is attempted - now --printsgf works with -L - implementation of trymove() and tryko() unified - minor optimization in attack_either() - cleanup of utils.c - experimental pattern CB327 in patterns.db 2.7.39 released March 1, 2000 - revision of patterns/apats.db and patterns.dpats.db - default depth values restored to 2.6 level - new functions set_temporary_depth_values() and restore_depth_values() in utils.c - depth values temporarily decreased while computing influence - bugfix in tryko() 2.7.38 released February 29, 2000 - handle handicap stones in sgf files correctly - bugfix in mouse.c - trymove() replaced by tryko() in compute_move_influence 2.7.37 released February 28, 2000 - point to strings instead of copying them in mouse.c - more than two moves per position can now be handled by the mouse code by increasing the value of MAX_MOVES - B class patterns in dpats.db inhibit addition of the stone to the dragon - AUTHORS, THANKS, and doc/introduction.texi revised - two eye patterns revised - bugfix in sgfOverwritePropertyInt() in ttsgf.c - sethand() split into two halves to make it more flexible - play_ascii.c revised to deal correctly with handicap stones 2.7.36 released February 27, 2000 - dragon.c: serious bug fixed in topological eye evaluation - substantial revision of mouse.c - new patterns in apats.db and dpats.db - sgf.c: revision of decidedragon - doc expanded of certain autohelper functions - Jamal Hannah's typing Gnu acknowledged as logo source - documentation of influence function begun in doc/INFLUENCE 2.7.35 released February 26, 2000 - mouse_attack and mouse_defend avoid some duplicate eyespace evaluations - missing eye pattern in eyes.db - sgf_decidedragon correctly invoked from main.c - close sgf file before reopening it - do not close stdout in sgf_close_file - print_eye revised to give nice output also when stackp>0 2.7.34 released February 25, 2000 - experimental mouse code - gnugo.eps and gnugo.jpg renamed gnugo-logo.eps and gnugo-logo.jpg 2.7.33 released February 23, 2000 - VC project files and WINDOWS revised 2.7.32 released February 22, 2000 - reading cache cleared once it becomes full - -M option now takes float argument - -M 0 no longer causes a floating exception 2.7.31 released February 21, 2000 - VC project files adapted from 2.6 - win/ directory with makefile brought over from 2.6 - bugfix in main.c, optind replaced by gg_optind - WINDOWS revised - minor assorted cleanups 2.7.30 released February 19, 2000 - cleaned up code for debuginfluence option - general cleanup of main.c - minor tuning of patterns2.db - AUTHORS, THANKS, and README brought up to date with 2.6 - TODO revised - Added news for 2.6 in NEWS - WINDOWS brought over from 2.6 - year 2000 added in copyright notices everywhere - emacs interface added from 2.6 - gnugo.jpg added from 2.6 - gnugo.eps built by encapsulating gnugo.jpg into postscript level 2 using jpeg2ps - Texinfo documentation merged with late changes from 2.6 - various other late changes from 2.6 merged 2.7.29 released February 11, 2000 - tuning of barriers.db, endgame.db, and patterns.db - sprintf replaced by vsprintf in gg_snprintf - spelling corrections - TODO revised - unreachable code in hashdata_init() commented out - UNUSED and ON_BOARD macros moved to liberty.h - special_rescue() made more general - calls to special_rescue() also in defend3() 2.7.28 released February 8, 2000 - bugfix in break_through() - tuning of conn.db, influence.db, patterns.db, and patterns2.db - various minor fixes to eliminate warnings on certain platforms - opterr, optind, and optopt prefixed with gg_ to allow building with profiling 2.7.27 released February 6, 2000 - copying.texi added for real this time - minor revision of patterns.texi - various code revisions in influence.c - new functions for segmenting connected regions of territory, moyo, and area added to influence.c - -m option can take hexadecimal values - tuning of barriers.db, influence.db, conn.db, patterns.db, and patterns2.db - conn.db reorganized - retuning of joseki patterns - corner moves in fuseki.c retuned - minor revisions of move_reasons.c - workaround to avoid black characters on black background in showbord.c - we no longer add half eyes when eye.dragoni == -1 2.7.26 released January 31, 2000 - endgame patterns split off from patterns.db to endgame.db and matched separately - influence_delta_territory results cached - tuning of barriers.db, conn.db, patterns.db, and patterns2.db - new eye pattern from 2.5.63 - new option --debuginfluence to help tuning influence function - listing of worms includes origins of corresponding dragons - bugfix in move_reasons.c; don't accept cuts or connections of one dragon and itself 2.7.25 released January 29, 2000 - AUTHORS, INSTALL, and THANKS revised - GPL added to texinfo documentation - small_semeai() documented in texinfo documentation - autohelper call moved from matchpat() to callback - possible to pass auxiliary data through matchpat() to callback - DEPTH decreased from 14 to 12, BACKFILL_DEPTH from 8 to 6, and KO_DEPTH from 8 to 6 - new functions for drawing boards for debug output - symbolic names for colors - influence function implemented in influence.c and influence.h - new patterns to assist influence function in patterns/barriers.db and patterns/influence.db - terri renamed to territory in a number of places - revised heuristics to decide when a tactical defense is strategically sound, using influence values - territorial value estimated with influence_delta_territory() instead of delta_terri() from moyo module - influence value estimated with influence module functions instead of delta_moyo() from moyo module - secondary_value weighted down substantially in computation of total move value - symbolic names for printmoyo values - local optimizations in shapes_callback() to avoid unnecessary reading - increased depth values when evaluating reading constraints disabled to improve speed - new patterns in conn.db - local optimization in connections.c, don't evaluate autohelper if there is nothing to amalgamate - autohelper functions xarea, oarea, xmoyo, omoyo, xterri, and oterri changed to use functions from influence module - separate flag to mkpat to decide anchoring policy - tuning of patterns.db and patterns2.db 2.7.24 released January 27, 2000 - cleanup of the interface/ files - minor revision to doc/using.texi - doc/reading.texi updated from 2.5.62 2.7.23 released January 26, 2000 - removed inclusion of unistd.h where unnecessary - include io.h on platforms where unistd.h not available - remove unused files utils/long-options.[ch] utils/closeout.[ch], and utils/error.h - fixed getopt warnings by renaming the getopt in utils/ to gg-getopt - TODO revised - -M option repaired - bugfix in init_gnugo() in board.c; don't do everything twice - default size of reading cache increased from 8 MB to 32 MB - docs/ directory replaced by doc/ with texinfo documentation from 2.5.60 - gnugo.6 man page moved from top directory to doc/ - /docs/WINDOWS updated from 2.5.60 and moved to top directory 2.7.22 released January 20, 2000 - always use strtok in play_ascii.c and skip strsep - cleanup in configure.in - bugfix in play_solo.c - configure test for gettimeofday in interface/ - HAVE___FUNCTION__ moved to the right position in acconfig.h - in configure.in, add -lwsock32 to $LIBS for the mingw32 environment for the select call in gmp.c - include windows.h and windows32/sockets.h to get definitions for fd_set, select and FD_* macros in gmp.c - incorrect "abort;" changed to "abort();" in several places - TODO item about converting documentation into texinfo marked as done 2.7.21 released January 17, 2000 - confirm_safety() called from review_move_reasons() in order to avoid certain blunders - the search for lunches moved to the end of make_worms() 2.7.20 released January 16, 2000 - removed unused file utils/getdate.c from distribution - pattern Eye2 taken out from conn.db as workaround to a bug - only victims with attack code 1 or 2 are considered lunch - separation of interface into a public and a private part; liberty.h split into gnugo.h for external interface and liberty.h for internal interface - dragon_status() renamed to compute_dragon_status() - new function dragon_status() hiding dragon_data struct - default cached function is only attack() - new function is_worm_origin() - new function confirm_safety() - update the files getopt.c getopt1.c and getopt.h in utils/ to glibc-2.1.2 - add a file README in the utils directory explaining where the getopt files come from. - make utils the first subdirectory to compile - link in utils/libutils.a when linking mkpat.c 2.7.19 released January 13, 2000 - unsigned char changed into signed char in sgfana.c, ttsgf.c, and ttsgf_write.c to eliminate DEC-cc warnings. 2.7.18 released January 12, 2000 - src directory renamed to engine 2.7.17 released January 10, 2000 - cleanup in moyo.c, eliminating DEC-cc compiler warnings - main.c moved from src/ to interface/ - dragon.weak renamed dragon.safety 2.7.16 released January 8, 2000 - cleanup in configure.in - cleanup in make_proper_eye_space() - autohelper functions for modifying eyespace - more debug output for DEBUG_EYES - tuning - one new pattern in eyes.db 2.7.15 released January 6, 2000 - cleanup in configure.in - configure tests for random and alarm - embedded newline removed from a string in mkeyes.c - extra pair of braces to avoid ambiguous else in optics.c - compiler warning about snprintf eliminated from ttsgf.c - documentation about dragon.status and dragon.weak revised in docs/DRAGON - attack() is more cautious about snapbacks - dragon_status() revised to consider a missing case - docs/PATTERNS fully revised - slight revision of the definition of higher order liberties, in an attempt to fix escape_route problem - reading depths increased with the number of explicitly placed stones in autohelpers - minor cleanup in utils.c - patterns shuffled around in patterns.db and patterns2.db - two extra matching pattern steps to modify eyespaces, patterns temporarily hosted in conn.db - not_lunch patterns moved to conn.db and matched together with eye space modifying patterns - autohelpers can now also be used in conn.db patterns with no '*' - minor revision of escape.db - dont_attack_helper removed since it was no longer in use - remaining references to EXPERIMENTAL_MOVEGEN removed - bugfix in add_half_eye() - new function make_proper_eye_space() in optics.c for use from autohelpers - tuning 2.7.14 released January 4, 2000 - four vgprintf calls in utils.c changed to vprintf calls - variable sized arrays changed to fixed size in sgfana.c - declaration of board_size in ttsgf.h made consistent with liberty.h - removed embedded newlines in strings in mkeyes.c and main.c - escape.db patterns revised - bugfix in matchpat - revised heuristics for non-matched eye shapes - tuning 2.7.13 released January 3, 2000 - help debug prints default hash memory - decidestring reports even if verbose=0 - print_eye() documented, prototype moved - documentation in docs/PATTERNS partially updated to reflect changes in pattern format - bugfix in mkpat.c - bugfix in getopt string - bugfixes in trace messages in shapes.c - new function dragon_status2() using new escape route measure in the escape2 field (not yet in actual use) - new patterns in escape.db - tuning 2.7.12 released January 2, 2000 - configure option to revert to sprintf if neither snprintf or g_snprintf found - command line option -M (--memory) to specify hashtable size - bugfixes in board.c 2.7.11 released January 2, 2000 - all remaining patterns in patterns.db adapted to new move generation scheme - format of ":" lines in pattern databases changed - joseki.c updated to produce new database format - patterns in conn.db can have action lines - three new autohelpers: dragonsize(), wormsize(), and potential_cutstone() - patterns are no longer sorted in mkpat and min weight optimization removed from matchpat - updated documentation of autohelpers in docs/PATTERNS - value field in worm_data and dragon_data obsoleted and removed - obsolete section removed from docs/PATTERNS - obsolete pattern classes Q and q removed, remaining ones slightly reordered - B, C, a, d patterns work on up to five dragons (previously max two or one) - improved tunability of patterns, possible to specify min and max territorial and total values - many helpers converted to constraints and removed - join_dragons() no longer need to be called with origins of dragons - wind assistance and moyo assistance functions obsoleted and removed - connection_value() and compute_score() obsoleted and removed - attack_either move reason rejected if one of the strings is defenseless - old style move values no longer used in move generation - shape value effect changed from additive to multiplicative - random contribution to move value decreased - tuning 2.7.10 released December 28, 1999 - changes from 2.5.47--2.5.52 merged into eyes.db - tuning - unused helpers and patterns removed - many patterns in patterns.db adapted to new move generation scheme - linear eyes of size 6 with one marginal eye fixed in eyes.db 2.7.9 released December 27, 1999 - bugfixes and cleanups in configure.in and various Makefile.am - bugfix in move valuation - bugfix in add_half_eye: remember to adjust marginal_neighbors - bugfix in defend1: consider case of 4 liberties after extend - breakchain2: try_harder to break chain - bugfix in singleton() 2.7.8 released December 23, 1999 - break_chain2 considers a few extra possibilities - stricter syntax checking in mkpat.c - bugfixes in pattern databases - caching of read results indexed also on stackp - warning eliminated in dragon.c - implementation of tracing of read results revised - one new pattern in escape.db - new escape route algorithm documented in docs/DRAGON 2.7.7 released December 21, 1999 - More verbose autoconf test for __FUNCTION__ - bugfix and cleanup in patterns/Makefile.am - Split utils.c into board.c and utils.c - Cleanup of both files. - Fix a warning in fuseki.c - minor tuning - one new pattern in conn.db - improved trace messages for read results, contingent on TRACE_READ_RESULTS 2.7.6 released December 19, 1999 - READ_RETURN0 macro redefined in reading.c - makes consistent the inequalities in reading.c - misspelling of "propagate" corrected - experimental implementation of new escape route algorithm - new file: patterns/escape.db - DEBUG_HEY (obsolete) replaced by DEBUG_ESCAPE - one new pattern in conn.db - new autohelpers: same_dragon and same_worm - minor tuning - bugfix in rr_set_result_ri_rj() macro - bugfix in compile_for_match() - don't allocate hash table space in find_defense if more than four liberties - bugfixes in defend3() - two compiler warnings eliminated in semeai.c - bugfixes in attack_callback() and defense_callback in worm.c 2.7.5 released December 18, 1999 - elimination of stackp=depth - dead code cleaned away from reading.c 2.7.3 released December 16, 1999 - minor tuning - cleanup of patterns and helpers - cleanup of matchpat() - attack and defense patterns moved from patterns.db/patterns2.db to new files attack.db and defense.db - attack and defense patterns matched during make_worms() - error message instead of segmentation fault when using -L without -l - testmode output modified - cleanup of ttsgf.c, ttsgf_read.c, and ttsgf_write.c - improved configure detection of snprintf - cleanup in Makefile.am and patterns/Makefile.am - configure tests for gcc specific macro __FUNCTION__ - bugfix in sgf/Makefile.am - in break_chain, removed stackp7 is alive in recognize_eye - several eye patterns added - dragon_status: escape_route bound for CRITICAL upped to 6 - -o and --analyzerfile add handicap stones by AB,AW - in nonfile modes the handicap stones are added in sethand() - sethand() checks for max handicap values and returns actually set stones - reduced MAX_HANDICAP to 19 - main.c checks for MAX_HANDICAP - sgf_close_file is called only once, when ending ascii mode with "quit" - GM property added in --analyzerfile - HA property added in --analyzerfile (in sethand()) - defined MIN_BOARD 3 in liberty.h - help output shows MIN_BOARD, MAX_BOARD and MAX_HANDICAP - cleanup of shapes.c, optics.c and moyo.c 2.3.86 released August 21, 1999 - resolved: hashed functions shall be readlad2 and basicnet3 - connection code patch to reconcile amalgamation and cutstone classification (needs rewriting) - tuning - amalgamate over _dead_ ko positions - bugfix in not_lunch_helper - Changed semantics of play_attack_defend_n() - unused color parameter removed from get_read_result - no compiler warnings under GNU/Linux - man page docs/gnugo.6 added - convenient tcsh completion described in docs/MISC 2.3.85 released August 20, 1999 - configure option --disable-hashing now functional - values are not hashed when stackp>depth - cleanup of mkpat.c - cleanup of eyes.h - tuning - now prints number of eyes in analyzerfile with --analyze eyeinfo 2.3.84 released August 18, 1999 - tuning - cleanup of dragon.c - halfeyes.c removed from the distribution - configure option --disable-hashing sets HASHING to 0 - sgf.c: avoid trying to close output file twice - eyes.db: code # has been changed to @ to avoid conflict with comments - Revised compute_eyes() and split off linear eyes to an own function. - Made return value from recognize_eye() more consistent. - New autohelper functions to identify eye space points: eye(), proper_eye(), and marginal_eye() - Major revisions of endgame patterns, taking eye space into account - obsolete functions play_attack_defend2() to play_attack_defend8() removed 2.3.83 released August 15, 1999 - joseki.c upgraded to generate constraints in .db - 3 new autohelpers in mkpat.c: diff_moyo, area_space, area_stone - interface/play_test.c: bugfix when --testmode and --analyze are combined - CHECK_HASHING turned off 2.3.82 released August 14, 1999 - hash codes are now computed incrementally - bugfix in hash.c - reading.c: sacrifice only if stackp, replace old --fuseki and --fearless 2.3.79 released August 10, 1999 - hash.h: bugfix which caused reading errors in rr_set_result_ri_rj - reading.c: savestone2 looks for double ataris to chain when stackp>depth - updated docs/MISC: analyze functions - option --analyze works again (was temporarily off by accident) - option --analyze works in --testmode game, no variations tested - new analyze functions: moyocolor, recommended, eyeinfo, worminfo - bug fix in analyze function eyes - option --score last --analzyerfile saves the potential territory with TW,TB - option --statistics writes also to analyzerfile - abortgo() saves analyzerfile - ttsgf.c: ttsgf_move_made() removed - play_solo.c: timing added to benchmark mode 2.3.78 released August 7, 1999 - hashing in basicnet3 and savestone3 - bugfix in play_gmp.c: undo now seems to work! - sgf/sgf_utils.c: bugfixes in get_moveX and get_moveY - interface/play_solo.c: bugfix in get_moveXY 2.3.77 released August 5, 1999 - showbord.c: revised behavior of -E option - minor change in moyo.c to have it reinitialized when a game is reloaded - change in scoring system for compliancy with chinese & japanese style rules - ascii mode: save territory points to analyzerfile - gmp mode: log game in sgf tree - gmp mode: undo implemented by replaying sgf tree - gmp mode: save result and territory points to analyzerfile - ttsgf.c: new function sgfOverwritePropertyInt() - ttsgf.c: new function sgfAddStone() - sethand.c: sets handicap stones to sgf tree - hash.diff removed from distribution 2.3.76 released August 4, 1999 - interface/html directory contains cgi interface - bugfix in optics.c: initialization of domains - bugfix in reading.c: some variations were being overlooked - hashing implemented in savestone2 2.3.75 released August 2, 1999 - mark illegal moves in --printsgf with IL property - Some new macros in hash.h - Use hashing in readlad2 - Some cleanup of worm.c - option -f rewritten : opening tuning, including oba moves - non fuseki part of old -f option became --fearless option 2.3.74 released August 1, 1999 - bugfixes in helpers.c. One of these could cause a crash - two connection patterns increased substantially - moved get_komi() and inc_movenumber() to liberty.h - play_ascii(): new commands to navigate the game tree in ascii mode - back command (undo) implemented in ascii mode! Newly placed stones appear as variations in the sgf - play_ascii(): changed the compare length of some commands. Now q works for quit, b for back and f for forward. - removed bug in play_ascii(): user pass after computer pass did not display result. - fixed bug in helpanalyzer output - utils.c: added function intialize board() and removed remove_stone() - fixed the komi bug reported by Douglas in --analzyerfile 2.3.73 This version may be released later 2.3.72 released July 30, 1999 - bugfix in updateboard ko handling - Moved obsolete documentation about reading.c to doc about utils.c - Expanded documentation about reading with hashing - minor tuning 2.3.71 released July 29, 1999 - bugfix in make_worms: moving point of defense - fixes to handling of ko after a pass - updatepassmove() removed - updateboard now handles pass moves. - KO handling by trymove is currently broke - play_ascii.c, play_gmp.c, play_solo.c updated accordingly. - revisions to ascii interface. - legal() now reports a pass move to be legal. - revision of one eye pattern - tuning to increase attention to connections - 2 new helpers - mkpat: weak autohelper option needed ==CRITICAL - modified worm values 2.3.70 released July 28, 1999 - Zobrist hashing implemented - new files src/hash.h and src/hash.c - readlad1 uses hashing - readlad2 does consider 2 stone sacrifices if stackp19 - depth and backfill_depth are augmented in attacker() and defender() - bugfix in printsgf mode - sgf_printboard prints current board position to sgf file - LOAD_AND_PRINT mode: read file, output final position 2.3.65 released July 21, 1999 - dragon_eye does not amalgamate across an ikken tobi - play_ascii.c: change depth on the fly - new option --statistics - revision of various helpers and 2 new helpers - mkpat rewritten so constraints can now be on several lines. - New autohelper functions xplay_attack, oplay_attack, xplay_defend, and oplay_defend, which take variable number of arguments. - New functions in utils.c to support the above. - tuning - bugfix in sethand.c - increased DEPTH to 14 and BACKFILL_DEPTH to 7 - change_attack can sometimes reclassify dragons as DEAD - command line resetting of depth 2.3.64 released July 20, 1999 - reformatting of reading.c - bugfix in break_chain2 - revised basicnet3: try harder to rescue boundary chains - revised basicnet3: remember moves tried to avoid redundant reading - bugfix in find_lunch: pick juciest worm - sgf property PL implemented in play_solo - revisions in play_solo.c and fuseki.c for small boards 2.3.63 released July 19, 1999 - delta_moyo, delta_terri work with either color - 2 new functions diff_terri and diff_moyo, - cleanup of moyo.c - -f option revised - docs/BOUZY revised - new docs/SCORING - New autohelper functions. - New connection patterns and revisions of the connections matching code. - Bugfix to an eye pattern. - Much tuning. - Revised criterion for when to defend or attack a worm. - Extended the scope of destroyer(). - Experimental worm and cut revaluation in light of dragon formations - Changed heuristics for eye values of non-matched eye shapes. - reordered arguments to does_attack() and does_defend() - bugfix in readlad2: backfill was turned off - default backfill_depth is now 5 - -l and -o options can be - for stdin and stdout 2.3.62 released July 17, 1999 - New autohelper functions, xlib(), olib(), xcut(), and ocut(). - Revised documentation for autohelper functions. - Connections database introduced. New files: connections.c and conn.db. - find_dragon_pairs() disabled, replaced by connection patterns. - Cutting patterns from the connection database can modify eye spaces. - Amalgamation in dragon_eye() no longer done over marginal eyes. - mkpat partially rewritten. - Minor correction to eyes.db. - Nakade helpers cleaned away. - Minor tuning, - two more nakade like patterns removed, EC63 again C pattern. - Bug fix in attacker(): discount bad captures, not good ones - New function destroyer() to capture of strings that can't currently be defended, but which could be after opponent backfilling - Some cleaning in genmove.c. - Attack points of non-defendable strings not moved in make_worms - defense points added for adjacent non-defendable strings so dragon amalgamation won't confuse semeai() - new function read_sgf_header used by load_and_analyse_sgf_file - new function load_and_score_sgf_file - new option --score and new mode LOAD_AND_SCORE - new function evaluate_territory 2.3.61 released July 15, 1999 - nakade patterns are gone - only linear patterns are currently hand-coded - many new eye patterns - not_lunch_helper aids in hane/kill combinations - undid a change in 2.3.59: amalgamation on first line 2.3.60 released July 15, 1999 - TODO revised - copyright revised in interface/ files - new pattern in eyes.db - halfeyes: require O not dead - revision of detect_trap_helper - revision of one pattern in hey.db - new ko patterns - other minor changes - new functions does_attack and does_defend in utils.c - attacker and defender call these functions - copyright notice slightly changed in main.c - reformatting of worm.c - unwanted handicap printf removed from play_gmp.c 2.3.59 released July 14, 1999 - revision of docs/DRAGON - several new eye patterns - fair amount of tuning. Particularly, changes to diag_miai patterns - dragon.c: we don't amalgamate a dragon if it touches the eyeshape only on the first line - COLOR_STACK_SIZE increased to 70 - DEBUG used in optics.c 2.3.58 released July 13, 1999 - mkpat revised. Autohelper functions now can take multiple parameters. First out is defend_against(a,b) which plays our own stone at a and then checks whether the opponent can safely play at b. - some tuning of patterns. - new function defend_against() in utils.c - bugfix in compute_eyes(): missing returns - two new eye patterns - bugfix in add_half_eye - more refined testing of att_X case in halfeyes.c - halfeye: obsolete test that eye and halfeye are in distinct cavities omitted - halfeye: we check that * is a safe move for X - restored marginal test in throw_in_atari_helper (removed in 2.3.55) - superceded docs/GRAPHS removed from distribution - filllib.c reformatted 2.3.57 released July 12, 1999 - count and chain rewritten for speed - more graceful error message if no in file specified in testmode - eye pattern 10 needed a vital point - find_lunch and make_worms: a ko is not lunch 2.3.56 released July 11, 1999 - add_half_eye: when a half eye's vital point is in another eyeshape the eyeshapes are amalgamated. This is correct and stops some crashes - computer tries to compute the score at end of game - new function who_win in moyo.c - one chimera pattern included in eyes.db - bugfix in attdef.c: color in territory test - bugfix in showbord.c: display of capture count 2.3.55 released July 9, 1999 - integration of half eye and eye code - separate eye domains for black and white - revision of docs/EYES to document the algorithm - a couple of changes that will be undone in a later release: temporary oversimplification of treatment of att_X in hey_callback temporary oversimplification of throw_in_atari_helper - removal of one half eye pattern - experimental penalty for running inside enemy territory - bug fix in semeai.c - revision in showboard for -E option 2.3.53 released July 8, 1999 - reading.c: new function special_rescue finds certain saving moves - revisions to savestone2 including use of special_rescue - speedup in find_lunch - minor revisions to hey.db and eyes.db - bugfix in mkpat (this could cause compilation failure) - bug fix in make_dragons (ignore eyes when not relevant) 2.3.52 released July 7, 1999 - bugfix in setup_double_atari_helper (could cause crash) - minor tuning - revision make_domains: influence can't creep under third line stone - revision to find_lunch: if already eaten it's not lunch - revision in halfeyes.c vis a vis Pattern 12 2.3.51 released July 6, 1999 - revision of mkeyes - new function recognize_eye() for use by the reading code (unfinished) - revision of the -f option (move generator based on territory) - cleanup in helpers.c and replacement of helpers by constraints 2.3.50 released July 4, 1999 - gnugo -f implements search for big moves with delta_moyo>=12 - and delta_terri >=14. Such a move gets value 80. - tuning - some work on false eye code - some work on the eye code - bugfix in double_atari_helper 2.3.49 released July 2, 1999 - Correction to sgf output from ascii interface. - Results of safe_move() are cached if stackp==0. - Helpers and some other code rewritten to use safe_move() - Bugfixes in block_attack_defend_helper and urgent_connect_helper - Reading bug fixed in savestone2(). - tuning - autohelper options safe_xmove,safe_omove,xmoyo,omoyo,xarea,oarea,xterri,oterri - new function mkeyes to compile the eye database (unfinished) - docs/GRAPHS explains the approach to the eye code - revisions to eyes.db and eyes.h - in halfeyes.c we make an exception to the rule that X can't be captured - revisions to hey.db - dragons with one eye and lunch are CRITICAL - revisions to eye_finder to find such dragons - eyespaces are not connected through adjacent marginal eyes - various fields initialized in make_domains() - bugfixes in make_domains - bugfix in compute_eyes: sometimes found the wrong end of a linear space 2.3.48 released June 29, 1999 - experimental changes to fuseki.c - revisions to helpers and patterns - eye_finder() now calls sgf_move_considered() - revisions to compute_eyes: eye shapes of size 4 - DEPTH is now 13, BACKFILL_DEPTH is 9 - gnugo --help now prints defaults of depth and backfill_depth - bugfix in worm.c: some non-kos were incorrectly identified as ko 2.3.47 released June 29, 1999 - substantial speedup in chainlinks - minor tuning 2.3.46 release June 28, 1999 - tuning, new helpers and patterns - some half eye code restored to dragon.c - some further linear patterns in compute_eyes() - bugfix in savestone3 - speedup in find_lunch: if stackp==0, we used cached info - in break_chain2 don't try certain foolish moves - speedup in basicnet3 (avoid unnecessary readlad1) 2.3.45 released June 27, 1999 - 3 new functions delta_terri_color, delta_moyo_color, delta_area_color - new board stack in moyo.c - BOUZY updated - bug fixes regarding half eyes in dragon.c and eyes.c - new code for some linear patterns - bugfix: dragons around a ko were getting amalgamated 2.3.44 released June 25, 1999 - bugfix in atari_save_helper (could cause crash) - revision to CD68 (could cause GNU to play out a ladder) - bugfix in dragon.c: incrementing msize wrongly - minor revisions to make_domains() - new functions int moyo_color(int m,int n) and int terri_color(int m,int n) returning the color of the intersection as seen by terri & moyo modules - new function delta_moyo_simple() without meta_connect bonus, delta_moyo() is now a wrapper to this one (should be a transparent modification) - diag_miai_helper uses the new moyo_color() 2.3.43 released June 24, 1999 - revisions to ascii interface - gnugo can resume adjourned games - gnugo plays through endgame phase of the ascii interface - much tuning - revisions to helpers and new helpers - in this version a weak group has between 0 and 20 points space - two half eye patterns are back. Half eyes still not working right - (incomplete) revision of eye code to deal with half eyes - bug fix in eyes.c regarding opponent stones within eyespace - tinkering with hoshi.sgf 2.3.42 released June 23, 1999 - weak groups now have between 4 and 20 liberties - diag_miai_helper won't recommend a move in opponent's territory - revisions to patterns/hoshi.sgf - mkpat.c: fields in NULL pattern at end of patterns.c corrected - mkpat.c: weak option added to pattern compiler - some tuning - dragon.c: error eye.msize was preventing us from finding false eyes - some code moved from eye.c to dragon.c to help finding false eyes - compute_eyes and propogate_eyes are now public functions - bugfix in shapes.c: obonus and xbonus should now work correctly - revisions to documentation 2.3.41 released June 22, 1999 - compute_eyes is partially written (without using matchpat) - revisions to computation of genus - openeyes is expunged - half eye database is invoked earlier - half eye database used only to find false eyes - bonus field split into obonus and xbonus - obonus and xbonus are applied to patterns involving weak groups - most EB patterns now have bonuses - 5 point bonus for patterns involving weak groups (2.3.38) is gone - some tuning - some bugfixes in eyes.c, dragons.c and semeai.c 2.3.40 released June 21, 1999 - substantial revisions and new code in dragon.c and eye.c - dragons around an eye shape are now amalgamated - delta_moyo looks in meta_connect for the tested move - Bug fixes for two helpers. - Minor tuning. - GNU now can read sgf files with missing final ")". - defender and the attacker try the move suggested by shapes() - The semeai player now prefers to play on mutual liberties if this improves the liberty balance. 2.3.39 released June 18, 1999 - some tuning, new helper block_attack_defend_helper - eye code now fills out an array eye[][] with data - revision to eye algorithm - open eye spaces now have origins - bugfix with -E option - dead groups are now cyan in showboard (were white) 2.3.38 released June 17, 1999 - experimental bonus of 5 points to patterns involving a weak dragon - revision of patterns/hoshi.sgf: attachment variations deprecated - open eye shapes are now computed. Display these with gnugo -E - some tuning 2.3.37 released June 16, 1999 - weak groups no longer classed dragon.status==CRITICAL. Instead ... - new field dragon.weak - old worm.weak and dragon.weak renamed worm.lunch and dragon.lunch - weak groups (found by moyo) classed dragon.weak==CRITICAL - dragon.weak field not used by genmove but displayed by showboard - new helper wedge2_helper - tuning and other revisions to pattern database - src/eye.c code is now linked though not used by genmove - revisions to showboard to display eye domains if xo=1 - int make_worms() (was void) returns 1 if board not empty - find_weak() renamed find_lunch() 2.3.36 released June 15, 1999 - weak groups are classed CRITICAL so they scrounge eyes - new function test_weak to find weak groups (in moyo.c) - revision to print_txt_color - bugfix in fill_liberties - revised docs/BOUZY - bugfix: find_defense no longer checks that strings can be attacked which required some modifications, slowing us down a little - DEPTH reduced to 12 2.3.35 released June 15, 1999 - reading code is much faster now and hopefully also more accuracy. - new function relative_break_chain() used in revised readlad2() - caching of moves eschewed in break_chain(), break_chain2() if return pointer is NULL - DEPTH increased from 10 to 13 - new docs/READING explains using --decidestring -o with gdb - connect_under_helper() rewritten to use connection_value() - housecleaning in patterns.db 2.3.34 released June 14, 1999 - test for pass in play_solo.c corrected - tuning - new pattern classification: Edge Expansion - GNU tries in two ways to fill liberties (points in Chinese count) - before passing, DEAD opponent stones in semeai are reclassed unknown, then shapes is rerun - if that doesn't work, new function fill_liberty() tries again - new field dragon.semeai, new function revise_semeai() - static_eval() is gone (superceded by moyo()) - reading.c: new function savestone3() - reading.c: savestone2 no longer tries to find the best move since we have ways to improve points of attack and defense - some code taken out of find_defense() - dump_stack() uses gprintf instead of TRACE and counts variation 2.3.33 released June 12, 1999 - new function meta_connect to test a move against area ownership (returns true when the move connects/disconnects meta groups) - area ownership now sees kosumi connections - minor changes in moyo.c data structures - in shape.c, added some bonus for meta_connect moves - in mkpat.c, some bonus added to maxwt for meta_connect moves - minor tuning - in readlad2() we consider throwins - Copyright updated (no longer says 2.0) in src/ and patterns/ 2.3.32 released June 11, 1999 - substantial speedup of reading code - in savestone2, we try to find an easy saving move before reading - in savestone2, we don't try second move if first works - in readlad2, we postpone break_chain2 but not break_chain - option --decidestring -o now outputs variation numbers - bugfix in extend_to_kill_helper - embryonic src/eyes.c included in tar file 2.3.31 released June 10, 1999 - new globals last_move_i and last_move_j give the last move made. This is used to improve(?) ascii output. - fixed bug ascii play where the captured stones where added wrong - play_ascii and play_test start with move 0 like play_gmp - in ascii play the last move is now marked - bug fixed in ascii play when a pass is made 2.3.30 released June 9, 1999 - reimplementation of of handicap in ascii without writing p[][] - new functions for saving/restoring game state without using stack - use inc_movenum instead of movenum++ in play_gmp and play_solo - revision to ko_important_helper: ko values cut in half - move_attack() and move_defense() renamed change_attack() and change_defense() - new komoku pattern - 2 new patterns 2.3.29 released June 7, 1999 - connection_value moved to src/util.c - alive11_helper modified - eschewing of kos by attacker() and defender(), dropped in 2.3.28 is back - edge_ko_important helper added - new sente_extend_helper, straight_connect_helper, block_to_kill_helper extend_to_kill_helper, revise_value_helper - new half eye pattern - several new patterns and changes to patterns.db - moved some CC patterns from wrong section - now --color should work with ascii interface 2.3.28 released June 6, 1999 - bugfix (worm.c, shapes.c, helpers.c): propogate_worm not used with stackp>0 - attacker() and defender() no longer eschew kos - unused sgfAddPlay is commented out (fixing a warning) - fixes to trace (indent is back, caves which are kos are reported correctly) - default backfill_depth is 7 (arrived at by trial and error) - option --decidestring no longer requires -o (useful with or without it) - in make_worms() code to improve worm.attack, worm.defend we now read one step deeper in the stack to avoid horizon effect - initialization in propogate_worm() uses memset 2.3.27 released June 5, 1999 - new option -B [depth] should now work - default values of depth and backfill_depth are 10 and 5 - new function mprintf which is similar to gprintf but writes to stdout - changed vgprintf to work with different outputs (i.e. stderr, stdout) - the testmode now write its output to stdout only (never stderr) - bugfix in backfire_helper 2.3.26 released June 4, 1999 - Backfill depth can now be set with -B [depth] - very minor revisions to patterns.db - reading.c: bc was not being initialized when stackp>0 (twice) 2.3.25 released June 1, 1999 - bug fix in new make_worm() code - connection_value gives a bonus if the connecting move makes 2 eyes - mystery pattern CB102 removed 2.3.24 released May 30, 1999 - tuning of joseki and patterns - revised definition of inessential worms --- require worm.weak==-1 - new code in make_worms() to revise points of attack/defense - BACKFILL_DEPTH reduced to 4 due to increased slowness - basicnet4 included but turned off 2.3.23 released May 29, 1999 - asymmetry bug in moyo.c fixed: when init_moyo() is launched, boardsize is not known - area computation and dilat algorithm bug - distribution includes reading.c.alt for the experimentally inclined - tuning and new helpers - dragon.c split into dragon.c and worm.c 2.3.22 released May 27, 1999 - disabled long jumps into enemy area without a secure connection - no center pattern can jump down to or along the second line - revision to the endgame patterns according to docs/ENDGAME - detect_trap_helper looks for moves attacking two groups at once - some other tuning - evaluate_game removed from the distribution - semeai will not recommend a move which leads to an immediate loss - bugfix in semeai: bestlib was not getting updated 2.3.21 released May 27, 1999 - Empty corner play moved to src/fuseki.c (new) and reimplemented - Embryos for 3-4, 3-3, 5-3, and 5-4 joseki databases in patterns/*.sgf - option -m [level] for debugging moyos - docs/EYES revised - bugfix in urgent_connect_helper - pattern revisions 2.3.20 released May 26, 1999 - readlad2 now tries backfilling. readlad2 and attack return 2 if a backfill is found but no direct attacking move - new patterns - use of macros to simplify helpers - trymove: sgf --decidestring now gives more information - solves errors when MAX_DILAT != MOY_DILAT - now the area ownership uses 4 dilation, which seems better. - docs/ENDGAME added from Gunnar's email of May 18, 1999 2.3.19 released May 24, 1999 - edge block/expand patterns reordered - tuning - a new joseki - a new helper - Move evaluate_game functionality into play_test.c - It is now main.c that loads the sgf file into a tree. - If no playmode / testmode is supplied, look for a comment of the form C[testmode=...] in the root node. If found, this sets the playmode / testmode. - Other interface fns take the tree, rather than filename, as param. - testmode is now a local variable, passed as param into play_test, rather than setting into global state via set_testmode / get_testmode - Move the tests for acceptable sgf file (GM[1]FF[3/4]) into the sgf reader, rather than in the user of the tree. - bugfix in hane_backfill_helper - semeai now attacks dragons of low vitality - semeai tries a little harder to choose a smart liberty 2.3.18 released May 23, 1999 - break_chain() and break_chain2() return 2 if saving move can be taken - savestone2() and find_defense() try harder not to make self-atari - find_defense() now considers tenuki - forgot to initialize adjsize and adjlib in chainlinks() 2.3.17 released May 23, 1999 - Complete reordering and some tuning of the fuseki patterns. - A little tuning elsewhere. - Documentation of the new features in the patterns.db format. - The -m option enhanced with another board with delta_moyo values. - chainlinks test now in basicnet3 - delta_terri(int ti, int tj,int color) : the same as delta_moyo(), but against the 5/21 evaluation - area ownership evaluation (using 5/0 algo), with wrapper functions : area_stone(int m,int n), area_space(int m,int n) area_color(int m,int n), area_tag(int m,int n) set_area_tag(int m,int n,int tag) - the values are computed during make_moyo evaluation, use "gnugo -m" to see how area are evaluated. - bugfix in play_test.c 2.3.16 released May 22, 1999 - Wind assistance complemented by moyo assistance. - Move dependent randomness replaced by pattern dependent randomness. - Format of patterns.db changed to accomodate new features mentioned above. - One new joseki line. - Jump out patterns retuned. They may still be somewhat out of tune but in a new and different way. Or maybe they even work quite well. - Some tuning of fuseki patterns. - Caching of upower and mypower values from testwind. - Some functions moved from matchpat.c to shapes.c. 2.3.15 released May 22, 1999 - board-setup nodes were being ignored in test-mode - fixes a bug where moves annotated as bad (MA[]) were reported as good. - took ascii_showboard out of play_test.c. - end_sgfdump() tries to pop the stack before closing the file - DEPTH ramped all the way up to 10, the new reading code is so fast - evaluation of moves is moved to break_chain and break_chain2 - simplification of readlad1, readlad2, savestone2, find_defense and basicnet3 - a few annotated games against David Fotland's XGO added to regression/ 2.3.14 released May 21, 1999 - documentational changes to helpers.c - minor changes in patterns.db - all jump_out_helper patterns changed to weight 60 for moyo heuristics - jump_out_helper() modified to use moyo heuristics - new function delta_moyo() run quite fastly, using the cache as proposed. the result of this function go in global variables : moyo_test[WHITE],moyo_test[BLACK] and the difference from precedent moyo evaluation is in moyo_test[0] delta_moyo returns what is expected : the difference from point of view of "color" player, aka moyo_test[0] the same for moyo_eval[3] and terri_eval[3] so all the results are availables for later use. (see sources for details) - used #defines for the variables 5/21 and 5/10 (can be 4/10 too), see liberty.h 2.3.13 released May 20, 1999 - further revisions to ttsgf_read.c regarding file buffering - tuning, new patterns, helpers, half eye patterns 2.3.12 released May 20, 1999 - tuning - ttsgf_read.c: changed 2.3.11 released May 19, 1999 - reading.c from 2.3.8 is restored - MAX_FILE_BUFFER increased to 150000 in ttsgf_read.c - tuning and a new joseki - hide most of liberty.h from non-src/ code. - src/ and patterns/ define BUILDING_GNUGO_ENGINE, and are therefore allowed to see all the internal symbols. Otherwise, code just sees a few functions, and sees 'const' versions of the variables. - (liberty.h defines a macro PUBLIC_VARIABLE which expands to extern for engine source files, and extern const for others) - *NOTE* : we get many warnings about const violations, where other modules write to these variables. In particular, ascii_showboard makes temporary changes to p[][]. But it still compiles (with gcc at least). These interface violations were always there. Now they are visible. - Moved remove_string() and count_territory() from play_ascii into src/utils : these need to be part of the engine since they have intimate access to the state. - Did a bit of gratuitous changes with play_test.c No functionality changes. - lost get_*_a and put_*_a interface functions. - make_dragons() is no longer predicated on movenum, but on existence of worms. - potential_moves[][] is now taken seriously : genmove() clears it at the start of the move cycle, rather than having sgf_move_made() clear it at some random time after genmove has returned. - semeai criterion slightly changed: my dragon.vitality<0 and your dragon.status==DEAD. 2.3.10 released May 18, 1999 - hane_backfill_helper deprecated - semeai module now consults vitality field to initiate fighting - test mode did not pass movenum to engine code: fixed. did away with the game_info entries for boardsize and move_number, made the interface use the engine's global variables instead. Better solution is needed (see TODO) 2.3.9 released May 17, 1999 - play_solo.c: in load_sgf_file() we now use global movenum instead of mv - play_solo.c: white stones were loading as black (fixed) - new helpers, tuning, revisions to pattern database - mkpat.c: maxwt now takes bonus into account - reading.c: break_chain2 simplified 2.3.8 released May 17, 1999 - backfill.sgf added to regression/ - color added to moyo.c - bugfix in moyo.c: captures were counted backwards - BOUZY added to docs/ - bugfix in sente_hane_helper - joseki patterns are now type 's' - fix the board_size bug in test mode - reimplement load_sgf_file() in terms of the sgf parser : gives us ability to read multiple AB[][]... for free - move load_sgf_file and load_and_analyse_sgf_file from sgf/ into interface. (Currently play_solo.c but that's temporary.) Justification is that these fns have more to do with the engine than with sgf files. - put in the emacs variable blocks into some of the files - remove some extern refs from .c files - according to David this is a bad practise - Remove a few remaining // comments, and disable // comments in GNUGO_SOME_WARNINGS - Reorganise the --help page, and add long options for most of the short ones. The --help is modelled after gnu tar. - Some files had #define _NO_PROTO to hide getopt() prototype, but these files were not doing option parsing, so assume this is redundant. - interface game_info structure was used only in interface.c, so moved the structure defn out of a public header file - The ttsgf_read.c code only offered to parse an sgf file which had already been read into a buffer. Moved a code fragment which appeared in two places to load the file then parse it into a readsgffile() function. - Prefixed all the symbols for long option names with OPT_, and mode names with MODE_to avoid namespace clashes. (DECIDE_STRING was being used as a mode and an option.) 2.3.7 released May 15, 1999 - Jerome's moyo mode (-m option) - new patterns and helpers, including backfill patterns CD47 and CD48 - reading.c: trysafe in readlad2 has been removed - reading.c: in savestone2 if stackp==0 we first try to capture - a surrounding string. This would lead to thrashing if we tried - it at deeper levels - reading.c: bug fix in find_defense (Gunnar) - reading.c: in break_chain2 we omit harder attacks if string has - 3 liberties since this causes too many errors. - reading.c: in basicnet3 we test a little more the attack really works 2.3.6 released May 15, 1999 - bug fixes in patterns/ 2.3.5 released May 14, 1999 - tuning, new helper - initialization in src/evaluate_game.c and interface/play_test.c 2.3.4 released May 13, 1999 - Nils' changes to main.c and src/Makefile.am - tuning, joseki revisions, new helper wedge_helper 2.3.3 released May 12, 1999 - find_weak eschewed in find_defense - change to allow build in a directory other than source - braces to joseki.c to avoid a warning about dangling else - added --testmode game to analyze games and see if it considered the moves - added docs/structure.doc describing program structure and APIs 2.3.2 released May 12, 1999 - missing library files restored in utils/Makefile.am - tuning, invasion under hoshi joseki - and a cosmetic bug fix in shapes.c. - patterns for endgame ko - bugfix in double_attack patterns 2.3.1 released May 11, 1999 - Joseki compiler and beginnings of a Joseki database - some tuning - Tweak sgf/Makefile.am to write generated sgf_properties to $(srcdir)/ note : this generates a warning at automake, but I think it is benign. - remove the GCC_OPTS from the Makefile.am's, and replace with either @GNUGO_SOME_WARNINGS@ or @GNUGO_ALL_WARNINGS@. This means we can centralise the choice of which warnings we enable, rather than having to duplicate the list of warnings in each component. - Add code to configure.in to generate the above. ALL_WARNINGS switches off use of // comments (via -Wp,-lang-c89 which runs preprocesser in ansi mode). SOME_WARNINGS will do the same once all components have been cleaned up. SOME_WARNINGS is intended for code over which we don't have full control (eg gmp.c) and so we have to be more liberal in the diagnostics. - Removed from the build some of the stuff in utils/ which we do not (currently) use. - fixed clear_board() bug that caused segfaults - fixed game parameter handling in main() to use interface API - updated other interfaces to partially use interface API (no more passing from main!) - removed // comments where they were not needed They stil are in the tt* code, that needs to be revisited!! - patched sgfgen to use stdin and stdout- makes things easier 2.1.25 released May 10, 1999 - added --decidestring option for sgf debugging reading code - added regression directory: contains a few example test files - added --quiet option - added --testmode option: move, annotation, or both This allows some flexibility in handling differently annotated files - added --infile and --outfile options - wrote play_test to handle regression testing - wrote sgfgen, a program to translate SGF definitions into a header file - added Tommy Thorn's code for SGF parsing and implemented tree parsing - updated ASCII interface to rely on interface routines- it works! - updated interfaces to handle new 'pass' based on int returned from genmove - made genmove return boardsize, boardsize coordinates for pass - added interface specification and code-- we now have engine independence! - moved all SGF code into sgf directory 2.1.23 released May 7, 1999 - sgf debugging of reading code (from gdb only in this release) 2.1.22 released May 6, 1999 - renum target removed from pattern Makefile.am and Makefile.in - strategic_distance was being calculated incorrectly - revisions to pattern database - chainlinks now tabulates the size of adjacent worms in preparation to trying to sorting them when stackp19, else [] (by SGF standard) - changed 'pass' moves to send board_size, board_size to sgf routines 2.1.18 released May 3, 1999 - play_ascii: playblack and playwhite are recognized as valid commands. - play_ascii: Correct use of strtok on Solaris (missing strsep) - ascii display and showboard now work as stated in the help command - ascii display doesn't draw the board twice if showboard is enabled. - ascii force was broken, is no longer. - added check for getopt.h to configure.in - fixed PLAY in play_ascii: need to check for two passes! - prettyfication in main.c: changed strcmp() usage - fixed seed printing in sgf.c - play_gmp: handicap was not being passed to sgf_write_game_info 2.1.17 released May 2, 1999 - added counting to ascii interface - Gunnar's reshuffled patterns - LDFLAGS = $(COLORLIB) in src/Makefile.am and src/Makefile.in 2.1.16 released May 1, 1999 - further revisions to ascii interface 2.1.15 released May 1, 1999 - further revisions to play_ascii and sgf.c - Gunnar's pattern classification in patterns.db - static evaluation of the board position 2.1.13 released April 30, 1999 - moved all sgf routines into sgf.c - changed pass value: from 19, 19 --> board_size, board_size - added sgf_open_file() sgf_close_file() and sgf_flush_file() to sgf.c - also added sgf_write_line() and sgf_write_game_info() - rewrote play_solo to use new sgf routines - absolutely no more build errors! (at least on Linux...) - renamed ascii.* play_ascii.* - moved play_gmp into play_gmp.c and added header file - added komi option (doesn't do anything yet, just parses it) 2.1.12 released April 29, 1999 - finished adding long options - color also works now (--handicap and --boardsize have been working) - needs a little cleanup with short options- some should become long - finished ASCII interface - can display any board size up to 25x25 - has command line options and help - enhanced error messages - added 'switch' command to switch colors in the middle of play 2.1.11 realeased April 29, 1999 - Minor changes to the syntax of patterns.db and hey.db as a preparation for restructuring of patterns.db. Documentation in PATTERNS updated. - moved ascii play code into ascii.c - copied showboard code for ascii play into ascii.c (ascii_showboard) - updated Makefile.am's to reflect changes - removed posix and error.c files from lib dir- not needed - added long option parsing; still need to add this to help menu - moved PATTERNS, DRAGON and OVERVIEW to /docs 2.1.10 released April 28, 1999 - incorporated more reorganizational patches 2.1.9 released April 28, 1999 - Automake-ized (NL) - Made code which moves dragon[m][n].borders contingent on !worm[m][n].ko - Set TRUST_GRID back to 1. -------------------------------------------------------------- This is GNU Go, a Go program. Contact gnugo@gnu.org, or see http://www.gnu.org/software/gnugo/ for more information. Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 and 2008 by the Free Software Foundation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation - version 3 or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in file COPYING for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.