Release v2.10.0
Release of Broccoli belstar v2.10.0
New Features
- [memory]:
- Added
PoolAllocatorclass- Generic pool-allocator for user-defined classes - also supports Eigen alignment
- Added
ImplicitDaryHeapclass- Generalization of a binary heap for arbitrary branching factors
d>1(d-ary heap) - Internally uses pool-allocator
- Optimized for maximum performance when used in Dijkstra algorithm
- Supports various optimized helper methods (finding/updating elements, pre-allocation, etc.)
- Generalization of a binary heap for arbitrary branching factors
- Added
DefaultInitializationAllocatoradaptor- Adaptor for allocators to replace value-initialization with default-initialization
-
MultiVector- Added
reservemethod to allow memory allocation for the underlyingstd::vector - Added
resize(std::array<size_t, N>, T)method to allow resizing with copy-construction for elements
- Added
- Added
- [geometry]
- Added
Triangle2DandTriangle3Dclasses- Generic abstraction of a triangle in the two- and three-dimensional space
- Contains various pre-computed auxillary parameters for accelerated distance and intersection tests
- Provides explicit methods for point-triangle distance and (ray-)intersection tests
- Improvements for
SSVDistanceEvaluator- Improved point-triangle test (matching implementation of
TriangleND) for speedup
- Improved point-triangle test (matching implementation of
- Added
Non-breaking Changes
- [io]:
-
PNMFileDatanow usesDefaultInitializationAllocatorfor its raster representations (keeps data uninitialized onresize()which increases performance in some use cases - e.g. for deserialization of the raster)
-
Bug Fixes
- [hwl]:
- Fixed noexcept signature of defaulted copy constructor: this caused problems for some compiler versions
- Fixes bus variable move constructor. When moved, a new mutex is used. The alternative is wrapping the mutex in a unique_ptr, which reduces cache-coherency though.
- Fixes variable base class constructor calls for mutex/lock class types changed via macros
Breaking Changes
- [hwl]:
- makeDevice() API changes to not adding the device to the bus yet. (old variant wouldn't have worked anyway)