D-Painless Release Notes
Major Changes
Sharing Architecture
- New SharingEntity: Implements thread-safe subscription-based sharing using weak references to prevent circular dependencies.
- Enhanced GlobalSharingStrategy Implementations: MallobSharing now follows the sharing strategy described in MallobSat.
Clause Management
-
Optimized ClauseExchange:
- When back to use flexible array member pattern for efficient memory layout
- Implements reference counting via boost::intrusive_ptr
- Provides safe creation and pointer conversion methods
-
Lock-free ClauseBuffer:
- Wraps boost::lockfree::queue for concurrent operations
- Supports multiple producers/consumers
- Maintains proper reference counting during pops and pushes
-
New ClauseDatabase Interface:
- Abstract interface for clause storage systems
- Used by SharingStrategy and SolverCdclInterface
Requirements
- C++20 or later
- Boost headers
- MPI for distributed operations