2.0.0
While this is a new major release with breaking changes in the internal Rust and external C-API, graphANNIS 2.x can read all existing data directories. No data migration is needed, and you should be able to just run the updated binary file. Also, there are no changes in how AQL is interpreted.
Changed
- Refactored the basic
GraphStorageandAnnotationStorageAPIs to handle
errors. Previously, we used mostly main memory containers which had an API
that could not fail. This was reflected in theGraphStorageand
AnnotationStorageAPIs, which directly returned the result or an iterator
over the non-fallible results. With the addition of disk-based
implementations, this API model was not possible to implement without using
panics when repeated access to the disk failed. Some of the API that was
changed was user visible when using thegraphannis-corecrate (and thus the
C-API), so this release is not technically backwards-compatible. Adapting to
the updated API should be restricted to handle the errors returned by the
functions. - The changes to the error handling also affects the C-API. These following
functions have now aErrorListargument:annis_cs_list_node_annotationsannis_cs_list_edge_annotationsannis_cs_list_components_by_typeannis_cs_unloadannis_iter_nodeid_nextannis_graph_annotations_for_nodeannis_graph_outgoing_edgesannis_graph_annotations_for_edge
- Renamed the Criterion-based benchmark CLI to
bench_queriesand synchronize
its arguments to the current version of Criterion.
Fixed
- More efficient node path extraction in
count_extrafunction and when sorting
the matches. - Avoid large memory consumption when importing GraphML files by resetting an
internal buffer on each XML event. - Limit the number of disk maps for the
GraphUpdateso there are less issues
with large corpora where the maximum number of open files per process might be
reached. - Performance improvements when importing large corpora in disk-based mode. This
optimizes the DiskMap to use a C0 (normal in memory BTree), a C1 (on disk
BTree) and a C2 map when serialized to disk. On compacting, the entries are
only written to C1 in O(n*log(n)). Before, multiple on disk maps might need to
be merged, which had a much worse complexity. The C1 file uses the
transient-btree-index crate. - Trim mapping entries when importing relANNIS resolver files (#222).
- Fixed schema errors in the Webservice OpenAPI file.