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