Skip to content

3.0.0

Latest
Compare
Choose a tag to compare
@SSoelvsten SSoelvsten released this 03 Apr 09:23
· 9 commits to main since this release

CAL 3.0.0

Switch from outdated GNU build system files to CMake.

C

Bug Fixes / Clean Up

  • Fix Segmentation Fault on Cal_BddManagerQuit(). In short, the code was set up to allocate with malloc or valloc. Yet, only the valloc version was maintained. Hence, the malloc version has been removed entirely. Yet, valloc is deprecated and hence has been replaced with the C11 aligned_alloc.
  • The value LG_PAGE_SIZE is now derived as part of the pre-processor. That is, you only have to parse PAGE_SIZE as part of the compilation, not also compute its logarithm.
  • Removed the dynamicReorderingEnableFlag value to simplify logic for running reordering; the prior version seems to be asking for bugs to be introduced.

Features

  • Implements Cal_BddNull(). This was mentioned in the documentation but not implemented. All null creation in the code base has also been replaced with this one to improve code clarity.

C++

Features

  • Adds a C++ header-only (and hence zero-overhead) wrapper for CAL in <calObj.hh> similar to the one of CUDD.

    • Provides the Cal object to provide single ownership semantics of the Cal_BddManager.
    • Provides the BDD class to hide reference counting with RAII.

    Both classes also provide access to the BDD operations (Cal with prefix-notation and BDD with infix-notation). Operations that depend on the Cal_BddManager's state, i.e. Exists and RelProd, are only provided by Cal.

Documentation

The documentation of the public API has been moved from the many implementation file directly into the C and C++ API header files. This way, you have the documentation available directly in your editor. Furthermore, the entire documentation has been replaced with one generated by Doxygen.