Imported Upstream version 1.6.6
[platform/upstream/openfst.git] / NEWS
1 OpenFst: Release 1.6
2     * Fixes error handling in HashMatcher (1.6.6)
3     * Adds kShortestDelta for operations dependent on shortest-distance (1.6.6)
4     * Adds Python methods for (un)pickling and (de)serializing FSTs (1.6.6)
5     * Adds constructive variants of Invert and Project (1.6.6)
6     * Increases code sharing in MemoryPool/MemoryArena (1.6.6)
7     * Improves consistency of matcher FST ownership (1.6.6)
8     * Adds non-trivial A* estimator class (1.6.6)
9     * Prevents unreachable code generation in libfstscript (1.6.5)
10     * Adds move constructors for non-trivial weight types (1.6.5)
11     * Standardizes method names for tuple weight types (1.6.5)
12     * Eliminates undefined behavior in weight hashing (1.6.5)
13     * Optimizes binary search in SortedMatcher (1.6.5)
14     * Adds SetWeight (1.6.5)
15     * Fixes typing error in Python FAR reader (1.6.4)
16     * Removes restriction that Prune argument have commutative weights (1.6.3)
17     * Improves configuration of CompositeWeight readers and writers (1.6.3)
18     * Improves accuracy of ShortestDistance summation (1.6.3)
19     * SetFinal now "moves" its weight argument (1.6.3)
20     * Exposes ArcIterator and EncodeMapper flags in Python (1.6.3)
21     * Properly sets return codes in FST binaries (1.6.3)
22     * Eliminates StringWeight macros (1.6.3)
23     * Finalizes most virtual method overrides (1.6.2)
24     * Fixes missing includes of <fst/log.h> (1.6.1)
25     * Adds float format support to FST drawing (1.6.1)
26     * Extensive modernization for C++11 style (1.6.0)
27     * Many classes and constants moved into an internal namespace (1.6.0)
28     * Adds HashMatcher (1.6.0)
29     * Adds Member method to SymbolTable (1.6.0)
30     * Adds the "special" extension and the fstspecial binary; this is similar to
31       fstconvert but accepts arguments for specifying special labels (phi, rho,
32       and sigma) of FSTs (1.6.0)
33     * Exposes allow_negative_label option for Python symbol tables (1.6.0)
34
35 OpenFst: Release 1.5
36     * Added p-subsequential determinization (1.5.0)
37     * Generalized epsilon normalization to non-functional case (1.5.0)
38     * Added general gallic (plus is union) semiring (1.5.0)
39     * Added FST compression extension (1.5.0)
40     * Added Python extension (1.5.0)
41     * Added multiple pushdown transducer (MPDT) support (1.5.0)
42     * Fixed Isomorphic function (1.5.0)
43     * Added final method to matchers (1.5.0)
44     * Fixed various compiler issues (1.5.0)
45     * Fixed missing Isomorphic components (1.5.0)
46     * Added UnionWeight (1.5.0)
47     * Added InputEpsilonMapper and OutputEpsilonMapper arc mappers (1.5.1)
48     * Added TrivialComposeFilter for more efficient composition when one
49       of the arguments is epsilon-free (1.5.1)
50     * Added properties bits kUnweightedCycles and kWeightedCycles (1.5.1)
51     * Added missing const qualification to (1.5.1):
52       - SymbolTableIterator access
53       - EncodeMapper writing to file
54       - EncodeMapper SymbolTable access
55     * Replaced internal custom reference-counting (RefCounter) with
56       C++11 smart pointers where possible, and fixed associated
57       reference-counting bugs (1.5.1)
58     * When calling DeleteStates on a MutableFst with a shared impl, the impl
59       is set to a new empty impl rather than copying and deleting (1.5.1)
60     * Prepended `Pdt` to the Expand libraries and classes in the PDT
61       extension, and prepended `MPdt` to the Expand libraries and classes
62       in the MPDT extension, so that both can be used in the same compilation
63       unit (1.5.1)
64     * Added option to PDT Replace for compiling a strongly-regular RTN into a
65       bounded-stack PDT (1.5.1)
66     * Improved symbol table support for PDT Replace, including automatic
67       generation of parentheses symbols (1.5.1)
68     * Improvements to scripting API (1.5.1):
69       - Added methods for FST access and mutation
70       - Added additional checks for arc/weight compatibility
71       - WeightClass::One and WeightClass::Zero now require a specified weight
72         type at time of construction
73       - Improved VectorFstClass constructors
74       - Added linear-time check for cyclic dependencies in Replace
75       - Added EncodeMapperClass, a template-free box for an EncodeMapper
76     * Improvements to the binaries (1.5.1):
77       - Fixed no-op --precision flag to fstdraw (1.5.1)
78       - Fixed no-op --file_list_input flag to farcreate (1.5.1)
79     * Improvements to the Python extension (1.5.1):
80       - Added methods for creating an empty mutable FST
81       - Added methods for FST access via state and arc iteration
82       - Added FST compilation from arclists (cf. fstcompile)
83       - Added FST printing and drawing
84       - Added FarReader and FarWriter classes.
85     * FarReader's GetFst method now returns a pointer (1.5.2)
86     * Fixed FSTERROR macro (1.5.2)
87     * Fixed build flags for dlopen (1.5.2)
88     * Consolidated Python extension into single module (1.5.2)
89     * Python add_arc now takes an Arc object (1.5.2)
90     * Adds optional minimization of non-deterministic FSTs (1.5.3)
91     * Mutation methods of the Python Fst object now support chaining (1.5.3)
92     * Scripting API and Python weight objects now support semiring arithmetic
93       (1.5.3)
94     * Adds RemoveSymbol method to SymbolTable (1.5.4)
95     * Prevents underflow when using LogProbArcSelector in random generation
96       (1.5.4)
97     * Makes random weight generators a single template class (1.5.4)
98     * Makes weight Properties constexpr where possible (1.5.4)
99     * Adds check for error when opening files when compiling strings into FARs
100       (1.5.4)
101     * Adds routines for parsing string flags to the scripting API (1.5.4)
102
103 OpenFst: Release 1.4
104     * Port to C++11 (1.4.0)
105     * Disambiguate function added (1.4.0)
106     * Isomorphic function added (1.4.0)
107     * Matcher interface augmented with Priority method.
108     * Special matchers (rho/sigma/phi) can match special symbols
109       on both input FSTs in composition/intersection provided at each
110       state pair they only match one side (1.4.0)
111     * Added ExplicitMatcher to suppress implicit matches (e.g. epsilon
112       self-loops) (1.4.0)
113     * Linear{Tagger,Classifier}Fst extensions added (1.4.0).
114     * Generalized state-reachable to work when input is cyclic (so long as no
115       final state is in a cycle). This ensures label-reachable (and hence label
116       lookahead) works with cyclic input (1.4.0)
117     * Added Condense to build the condensation graph (SCCs condensed to single
118       states) of an FST (1.4.0).
119     * Added an option to Reverse to specify whether a super-initial state
120       should always be created (1.4.0).
121     * Fixed bugs in FirstCacheStore, PowerWeight, and StringCompiler (1.4.0).
122     * Changed SymbolTable to use faster data structure (1.4.0).
123     * Added 'min' disambiguation in determinizaton to keep only the minimum
124       output in a non-functional transducer when plus=min/max
125       (flag --disambiguate_output) (1.4.1)
126     * Compiler issues in linear-fst fixed (1.4.1)
127
128 OpenFst: Release 1.3
129     * Support for non-fatal exits on errors: (1.3.1)
130       - Added FLAGS_fst_error_fatal: FST errors are
131         fatal if true (default); o.w. return objects flagged as bad:
132         e.g., FSTs - kError
133         prop. true, FST weights - not a Member().
134       - Added kError property bit signifying bad FST
135       - Added  NoWeight() method to FST weight requirements that returns
136         weight that is not a Member().
137     * Various improvements to the FAR extensions (1.3.1)
138       - a single FST is now a FAR type
139       - FLAGS_initial_symbols: Uses the symbol table from the
140         first FST in the archive for all entries"
141       - Input/output to standard input/output for some FAR and arc types
142     * --with-icu configuration option no longer needed (1.3.1)
143     * Improved flags usage esp. if use SET_FLAGS not SetFlags/InitFst (1.3.2)
144     * Added 'fst' as possible far writer type (1.3.2)
145     * phi matcher can now accept 0 as the phi label (1.3.2)
146     * Added ngram-fst extension (1.3.2)
147     * Improved performance of PDT composition (1.3.3)
148     * Memory-map support (1.3.3)
149     * Fixed cross-FST serialization issues (1.3.3)
150     * Fixed NGramFst off-by-one issue (1.3.3)
151     * farextract now allows one to specify a list of comma-separated keys,
152       including key ranges (1.3.3)
153     * Fixed bug in PDT replace that could cause close paren IDs to collide
154       with open paren IDs (1.3.4)
155
156 OpenFst: Release 1.2
157     * Added lookahead matching and filtering for faster composition
158     * Added EditFst for mutation of o.w. immutable FSTs
159     * Added script sub-namespace defining type FstClass, a non-templated
160       Fst<Arc> to hold the arc template type internally. This and FST
161       operations on it allow easier I/O and scripting at the cost of some
162       runtime dispatching.
163     * Added per-arc-iterator control of Fst caching.
164     * Added PowerWeight and Power Arc.
165     * Added SparsePowerWeight and SparsePowerArc (1.2.4)
166     * Added SignedLogWeight and SignedLogArc (1.2.4)
167     * Added ExpectationWeight and ExpectationArc (1.2.4)
168     * Added AStarQueue, PruneQueue and NaturalPruneQueue disciplines (1.2.6)
169     * Added Log64Weight and Log64Arc to FST library throughout, including 
170       support throughout scripts/bins/dsos (1.2.8)
171     * Added delayed RandGenFst that outputs tree of paths weighted
172       by count (1.2.8)
173     * Added fstsymbols shell-level command
174     * Added total weight removal option to pushing
175     * Changed methods for symbol table mutation:
176       use MutableInputSymbols()/MutableOutputSymbols().
177     * Numerous efficiency improvements esp in composition, replace, and caching
178     * Made "fstmap" handle semiring conversion by adding "to_std", "to_log"
179       and "to_log64" as supported 'map_type' arguments (1.2.8).
180     * Made the destructive implementation of RmEpsilon skip over states
181       admitting no non-epsilon incoming transition (1.2.8).
182     * Fixed numerous bugs (1.2 through 1.2.9) including:
183       - improper types of some approximation deltas
184       - sub-optimal hashing functions
185       - issues in internal reuse of shortest distance
186       - hashing bug in FloatWeight
187       - bug in shortest path queue
188       - symbol table checksumming issues
189       - various C++ standards issues
190       - Visit() behavior when visitation aborted
191       - Decode() hash performance bug (1.2.1)
192       - EditFst::Copy(bool) method when the boolean parameter is true (1.2.7)
193       - SymbolTable memory leak in Invert() (1.2.8)
194       - Added escaping of " and \ in labels in fstdraw, needed for dot to
195         function properly (1.2.8)
196       - Fixed handling of final weight of start state in fstpush (1.2.8)
197       - Added FST_LL_FORMAT to fix 64-bit integer printf issues (1.2.9)
198       - Fixed missing <functional> includes (1.2.9)
199       - Fixed reused local variable names (1.2.9)
200       - Fixed passing string by reference in FstDraw args (1.2.9)
201     * Added extensions directories including:
202       - finite-state archive (FAR) utilities,
203         added stlist format supporting writing/reading to/from standard out/in
204         at the library-level (1.2.8)
205       - compact fsts
206       - lookahead fsts
207       - pushdown transducers (improved in 1.2.1 through 1.2.7).
208     * Added StateMap/StateMapFst; renamed Map/MapFst to ArcMap/ArcMapFst;
209       map/MapFst retained (but deprecated) (1.2.9)
210     * Deleted ArcSum() and ArcMerge; use StateMap w/ ArcSumMapper and
211       ArcUniqueMapper (1.2.9).
212     * Incremented version of ConstFst/CompactFsts to stop memory alignment
213       that fails on pipes. Made old version raises errors when read on
214       pipes (1.2.9).
215     * Improved determinize hash (1.2.9)
216     * Removed stdio uses (1.2.10)
217     * Fixed library ordering issues esp. with newer GNU build tools (1.2.10)
218
219 OpenFst: Release 1.1
220     * Added compat.h to src/include/fst to fix missing defines
221     * Fixed bug in acyclic minimization that led to non-minimal
222       (but equivalent) results
223     * Fixed missing FST typedef in various matchers in matcher.h
224       so that they can be cascaded
225     * Opened file streams binary where appropriate
226
227 OpenFst: Release 1.0 (Additions to beta version):
228     * Matcher class added for matching labels at FST states. Includes
229       special matchers for sigma (any), rho ('rest'), and phi ('fail')
230       labels.
231     * Composition generalized with arbitrary filters, matchers, and state
232       tables.
233     * Sequence and matching composition filters provided. (see compose.h,
234       compose-filter.h, matcher.h, state-table.h)
235     * Unique n-best (see shortest-path.h)
236     * Pruning in determinization and epsilon removal (see determinize.h,
237       rmepsilon.h)
238     * New Fst class:
239        * Compact Fsts for space-efficient representation (see compact-fst.h)
240     * New Weight classes:
241        * MinMax
242        * Lexicographic
243     * Miscellaneous bug fixes