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_collection
properly. (#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_DIRECTORY
properly 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_allocator
is default constructible if stateless- add
unique_base_ptr
to support a unique ptr to a base class - add
allocate_unique
overloads 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_unwind
for automatic unwinding - new
iteration_allocator
- make allocators composable
- add facilities for joint memory allocations
- add
shared_ptr_node_size
- add
string
container 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
BlockAllocator
concept and various implementations - new class template
memory_arena
that 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