Change log for gfsm

v0.0.10 Mon, Fri, 31 Oct 2008 14:29:52 +0100
   + added configure flag --disable-programs for static builds
   + gfsmio_getdelim (local implementation): changed handling of GString data buffers
     - formerly, GString data was literally returned as (*lineptr)
     - old behavior breaks perl wrappers (e.g. _compile()) on OpenSuSE 11.0
     - workaround: GString data is copied to a new (char*) locally allocated with malloc()
   + automaton I/O: changed header struct; added hacks for v0.0.9 header detection & parsing
   + fixed an overflow bug in default gfsmio_getdelim() func
   + added at&t-style escaped-string paring function: gfsm_alphabet_att_string_to_labels()
     - wrapper:gfsm_alphabet_generic_string_to_labels()
       ~ choose character-wise or att-style parsing via 'att_mode' flag
     - added '--att-mode', '--map-mode', '--quiet' options to gfsmlabels
   + moved gfsmArcList to a native linked-list type, rather than GSList
     - saves 1 pointer per arc
     - adapted some code from glib/gslist.c (sort, remove_link, etc)
   + moved autoheader config file to gfsmAutoConfig.h
     - added header-safe gfsmConfig.h hack to "safely" read in autoheader config
     - requires clobbering any existing autoheader type macros with gfsmNoConfig.h
       ~ there are better ways of doing this (e.g. sed), but this should suffice for most purposes
   + altered behavior of gfsm_automaton_copy_shallow(), gfsm_automaton_shadow()
     - root state id is no longer copied: not considered 'shallow' data
   + moved most simple accessor function code from macros to 'static inline' defined in *.hi
     - added configure option '--disable-inline' to disable function inlining

v0.0.9 Fri, 23 Nov 2007 22:43:52 +0100
   + added "source" field to gfsmArc: source gfsmStateId
     - fixed gfsm_automaton_reverse() and gfsmReverseArcIndex to use new feature
     - added additional argument to various methods in gfsmArc.h to deal with new datum
   + added shell tool gfsmindex, source files gfsmIndexed.[ch], gfsmIndexedIO.[ch]
     - the "right way" to do this would be to go for a truly abstract automaton API,
       but the price (virtualization, extraneous flag & limit checking, etc.) is daunting
   + changed static int<->pointer casts to GPOINTER_TO_(U)INT, G(U)INT_TO_POINTER
   + fixed gfsmWeight-related segfault bugs on 64-bit linux
     - gfsm_weight2ptr() and gfsm_ptr2weight() are now implemented as true functions
       using a "hidden" union type gfsmWeightOrPointer to handle memory stuff
     - this happily also allows gcc to compile without -fno-strict-aliasing
   + fixed bug reported by Alexis Nasr in gfsm_pointer_alphabet_new() macro 
   + fixed nasty bug in gfsm_alphabet_load_handle() and gfsmio_getc() causing
     char decimal 255 to return as EOF
   + re-implemented gfsm_automaton_compose() using implicit Mohri-Pereira-Riley filter
   + fixed output-filename parsing bug in gfsmlabels
   + added check for fsm->states->len==0 in is_cyclic(), fixes bug in gfsminfo
     for empty automata created with gfsm_automaton_copy_shallow() (aka 'shadow')
     - the real problem here is probably that copy_shallow() also copies root_id, even
       though the corresponding state doesn't exist
   + added gfsmArcIter copy() and clone() methods

v0.0.9-pre? Mon, 29 Oct 2007 12:54:19 +0100
   + exposed guts of gfsm_automaton_compose()
     - compose_prepare() into compose_old_prepare_fsm1(), compose_old_prepare_fsm2()
     - should make it easier to hack a cascade implementation

v0.0.8 Thu, 15 Feb 2007 12:05:41 +0100
   + updated build system to build more cleanly on non-development systems
     - e.g. missing optgen.perl, flex, bison, pod2x, perl, etc.
   + added gfsm.magic snippet for /etc/magic
     - added 'install-magic' and 'uninstall-magic' targets for
       manual magic maintainance, since there seems to be no good and safe
       way to do this automagically (ugh)...
   + added support for final weights
   + changed binary format (backwards-compatible with dispatch function)
   + added final-weight operations final_weight_(plus|times)()
   + added optional(), replace(), insert_automaton()
   + added lookup_viterbi(), viterbi_trellis_paths(), viterbi_trellis_bestpath()
   + fixed a bug in gfsm_automaton_renumber_states()
   + fixed a really stupid bug in gfsm_arclist_insert_link() for sorted insertion
   + fixed some bugs in gfsm_automaton_rmepsilon()
   + fixed an epsilon-related bug in compose() and intersect()
   + fixed another epsilon-related bug in compose()
     - implemented algorithm from:
	  Mohri, Pereira, & Riley (1996), "Weighted Automata in Text and Speech
	  Processing", Proc. ECAI '96, John Wiley & Sons, Ltd.
     - calling conventions changed for compose_full()
   + added gfsmScanner.[ch], gfsmRegexCompiler.[ch]
   + added gfsmTrie, (quasi-)deterministic input acceptor (i/o pairs)
     - currently geared towards storing frequencies
   + added gfsmIO.[ch] : abstract I/O layer
     - includes basic zlib compression support
     - currently used only for text & binary automaton I/O, also text alphabet I/O
     - TODO: use I/O layer for alphabet draw methods?  regex compiler?
   + added gnulib code for vasprintf(), getdelim()
     - removed old gfsmCompat.h hack

v0.0.7 Sun, 20 Nov 2005 14:39:33 +0100
   + added lookup(), paths(), path<->string conversion functions
   + added semiring type "plog" (positive logs), added stable gfsm_log_add() function
   + added intersect(), compose(), difference(), product(), rmepsilon() operations
   + gobble less memory on load_bin_file() -- load states & arcs incrementally
     - doing this right would require a stored binary file incompatibility, currently hacked.
   + fixed a number of small bugs

v0.0.6 Mon, 12 Sep 2005 01:45:46 +0200
   + added mingw32 patch (getline)

v0.0.5 Wed, 22 Sep 2004 00:23:49 +0200
   + removed references to file "LICENSE" in header comments
   + fixed small size bug in clear() for gfsmUserAlphabet
   + added key-stringification to gfsm_automaton_draw() methods

v0.0.4 Tue, 14 Sep 2004 15:57:56 +0200
   + fixed bug in gfsm_alphabet_size() for user alphabets

v0.0.3 Mon, 13 Sep 2004 10:25:23 +0200
   + added some algebraic operations, fixed some bugs

v0.0.2 Thu,  2 Sep 2004 17:34:18 +0200
   + basic accessors and algebra

v0.0.1 Tue, 24 Aug 2004 11:34:59 +0200
   + created
