Skip to content

v2.0.0-beta.5

Pre-release
Pre-release
Compare
Choose a tag to compare
@SSoelvsten SSoelvsten released this 09 Oct 14:57
· 480 commits to main since this release

New Features

  • Functional Bridge:
    Fully generalized and committed to the use of functions to bridge between Adiar and the user's code (as was started in v2.0-beta.2). To this end, Adiar now provides the types predicate<...> and generator<...> to pass information into Adiar and consumer<...> to pass information back out again. All functions of v1.x that used some file, e.g. bdd_restrict, zdd_onset, bdd_varprofile etc. all now provide one (or more) of these functions instead.
  • Execution Policy:
    Each algorithm (when relevant) has been overloaded with an exec_policy as its first argument. This class provides a thread-safe way of passing options into an algorithm, e.g. whether the algorithm should use internal or external memory data structures. This replaces the use of the globally set enum values, e.g. memory_mode.
  • bdd_top(), bdd_bot(), zdd_top(...), and zdd_bot(...):
    Provide a uniform interface for getting the top and the bot value of the lattice. This provides a more uniform and interchangeable interface between BDDs and ZDDs where you do not need to think about the reduction rules.

Optimisations

  • bdd_satmin and bdd_satmax
    Stores the intermediate result in an internal memory stack (since it can at most be 8 MiB in size) rather than writing it out to disk. This should improve their performance slightly.

Breaking Changes

  • The function overloads with an auxiliary file as an input, e.g. bdd_restrict, zdd_onset, bdd_varprofile, have been removed in favour of the new functional input instead.
  • The enums memory_mode, access_mode, and quantify_mode have been removed in favour of using the new Execution Policy.
  • Removed the functions bdd_counter and zdd_sized_set. They may be added anew, assuming someone sends in a feature request.
  • Fixed inconsistency of naming scheme. For example, the function is_true(const bdd &) has been renamed to bdd_istrue(const bdd&). This makes them consistent with the rest of the API. The domain and statistics functions have also been renamed for consistency.
  • Removed the map_pair class introduced in v2.0-beta.2 as it has become redundant with the simpler function interface.

Contributors