- Major rewrite and simplification of the internal structure, overall ~1.5-2x runtime improvements
- Switched to a dumber, much simpler hash function, which seems to be much faster in practice (another ~2x improvement on several benchmarks)
- Breaking change: True and False node are now negative (in preparation for MTBDDs, where all leafs will be negative)
- Breaking change: Changed some method names (removed
get...
prefix) - Added several benchmarks and optimized some default values based on that
- Deleted several caches which were close to useless
- Fixed a performance bug in the iterative implementation of
support()
- Removed a runtime dependency that accidentally slipped in
- Add an implementation of
BddSet
and automatic reference management - Add spotless for formatting
- Maintenance and version bumps
- Small fixes and improvements
- Added a (mostly) iterative implementation of bdds to alleviate stack overflow problems for deep structures
- Added set views on bdd nodes
- Bump gradle and dependency versions
- Small improvements
- Improve performance in some cases by fixing the hash function
- Renamed some of the public methods
- Removed synchronization - access should be synchronized on a higher level
- Added a solution iterator
- Fixed a stupid bug in
createVariables(int)
- Re-add non-null annotations
- Added utility methods to
Bdd
(createVariables(int)
andgetSatisfyingAssignment(int)
). - A synchronized BDD can now only be obtained via the
BddFactory
. Bdd#support
does not clear the passed BitSet anymore.- Reordered some code.
- Update build infrastructure, drop
javax.annotations
and SpotBugs (waiting for the checker framework gradle plugin to mature).
- Improved
forEachMinimalSolution
(don't use a complex iterator, but rather a simple recursion). - Added an adaption of
forEachMinimalSolution
where additionally the relevant variables of the solution are passed. - Added
forEachNonEmptyPath
, which is a partial version of the aboveforEachMinimalSolution
. - Upgrade Gradle and the static analysis tools.
- Removed Guava dependency (now only JRE is needed).
- Fixed a synchronization issue, added some more convenience methods.
- Add a simple synchronization wrapper for the Bdd interface.
- Removed the minimal solution iterator, since it can't be synchronized.
- Add automated deployment.
- Fixed the package name (
jbdd
instead ofjdd
).
- Initial release.