CMake Improvements:
- Fix deprecation warnings, update doctest, and CI. (#188)
- Remove static linking for cross compilation. (#162, #164)
- Fix include paths, cache variables. (#165, #190)
- Assume
thread_localis supported. (#167)
Bugfixes:
- Support
fixed_block_allocatorinmemory_pool_collection. (#173) - Fix
virtual_block_allocatordeallocation. (#175) - Fix
std::shared_ptrnode size alignment mismatch. (#171) - Fix unit tests on android. (#176)
- Don't use undefined preprocessor macros. (#186)
- Fix unused variable warnings. (#183, #184, #189)
Improvements:
- Allow incomplete types in
allocator_deallocator. (#153) - Give
allocator_polymorphic_deallocator/deletera default constructor. (#155) - Expose
memory_pool::owns. (#174)
CMake improvements:
- Increase the CMake minimum required version to 3.14 to reflect reality. (#147)
- Fixes to container node size generation using CMake on MacOS. (#138)
- Don't regenerate container node sizes when they already exist.
Bugfixes:
- Workaround a compiler bug in MSVC. (#146)
- Fix broken multi-threading configuration. (#142)
- Check initial block size for
memory_pool_collectionproperly. (#148) - Fix bug in
memory_block_stack::owns(). (#151)
Deprecate virtual_memory_page_size; use get_virtual_memory_page_size() instead. (#132)
CMake improvements:
- Generate container node sizes using CMake, which makes cross-compiling easier (#129)
- Set
CMAKE_RUNTIME_OUTPUT_DIRECTORYproperly to support shared libraries (#132)
Just bugfixes:
- CMake: automatically link libatomic on platforms where that is necessary (#95)
- catch small block sizes of
memory_pool(#113) - fix buffer overflow in
memory_pool_collection's array allocation (#99) - fix compatibility with Windows UWP (#102)
- fix computation of
memory_pool::min_block_size(#110) - fix debug assertion in free lists (#111)
BREAKING: Removed the use of the compatibility library to automatically generate macros and workaround for older compilers.
The important compatibility workarounds like the __builtin_clz extension are still used, but workarounds for missing C++11 library features have been removed.
In particular, the library now requires compiler support for noexcept, constexpr, alignof and thread_local.
This means that GCC 4.8 and Visual Studio version 12.0 (both released in 2013), are now longer supported.
BREAKING: Remove Mutex support from allocator_reference and consequently from std_allocator, allocator_deleter, ...
Embedding the Mutex with the reference was fundamentally broken and unusable to ensure thread safety.
Use a reference to a thread_safe_allocator instead, which actually guarantees thread safety.
Add ability to query the minimal block size required by a memory_pool or memory_stack that should contain the given memory.
Due to internal data structures and debug fences this is more than the naive memory request, so it can be computed now.
- more CMake improvements for cross-compiling, among others
- bugfixes to support UWP (#80), VxWorks (#81) and QNX (#85, #88, among others)
- better support missing container node size (#59, #72, among others)
- fix alignment issues in debug mode
- fix tracking for allocators without block allocators
Various bug fixes, compiler warning workarounds and CMake improvements accumulated over past two years. Most notable changes:
- cross compilation works now
fallback_allocatoris default constructible if stateless- add
unique_base_ptrto support a unique ptr to a base class - add
allocate_uniqueoverloads that take a custom mutex - allocator deleters are default constructible
- fix CMake configuration error
- fix double free error in
segregator - add
static_assert()when default constructing a statefulstd_allocator - fix various compiler warnings
- better MSVC support
- improved compilation time
- add literal operators for memory sizes (
4_KiB) - more flexible
make_block_allocator - composable allocator concept
- improved
temporary_allocator: explicit separation intotemporary_stack, improved automatic creation - new
memory_stack_raii_unwindfor automatic unwinding - new
iteration_allocator - make allocators composable
- add facilities for joint memory allocations
- add
shared_ptr_node_size - add
stringcontainer typedef - add
fallback_allocator - add
segregator
- OSX support
- various warnings fixed
- improved CMake build system, now supports cmake installation and
find_package() - improved low-level allocators and added
malloc_allocator - add virtual memory interface and allocators
- add allocators using a fixed-sized storage block
- introduced
BlockAllocatorconcept and various implementations - new class template
memory_arenathat is used inside the higher level allocators, allows more control over the internal allocations - add wrappers/adapters for the polymorphic memory resource TS
- improved tracking classes
- other improvements like concept checks and more exception classes
- internal changes
- polished up the interface, many breaking changes in the form of renaming and new header files
- added unified error handling facilities and handler functions in case exceptions are not supported
- improved old allocator adapters by introducing allocator_storage template
- improved allocator_traits making them more powerful and able to handle Allcoator types directly
- added type-erased allocator storage
- added node-size debugger that obtains information about the container node sizes
- most parts now work on a freestanding implementation
- used foonathan/compatibility for CMake compatibility checks
- added miscellaneous tiny features all over the place
- many internal changes and bugfixes
- added debugging options such as memory filling and deallocation and leak check
- improved performance of pool allocators
- changed complete project structure and CMake
- many internal changes and bugfixes and automated testing
- added temporary_allocator as portable alloca
- added small_node_pool type optimized for low-overhead small object allocations
- added various allocator adapters including a thread_safe_allocator for locking
- better compiler support
- many internal changes and bugfixes
- critical bugfix in memory_stack
- added smart pointer example
- first beta version