Memory Versions Save

STL compatible C++ memory allocator library using a new RawAllocator concept that is similar to an Allocator but easier to use and write.

v0.7-3

1 year ago

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)

New Contributors

Full Changelog: https://github.com/foonathan/memory/compare/v0.7-2...v0.7-3

v0.7-2

1 year ago

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)

v0.7-1

2 years ago

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)

v0.7

3 years ago

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 no longer supported.

Adapter

BREAKING: Remove Mutex support from allocator_reference and consequently from std_allocator, allocator_deleter, etc. 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.

Allocator

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.

Bugfixes

  • 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

v0.6-2

4 years ago

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

v0.6-1

6 years ago
  • fix CMake configuration error
  • fix double free error in segregator
  • add static_assert() when default constructing a stateful std_allocator
  • fix various compiler warnings

v0.6

7 years ago

See also: https://foonathan.github.io/blog/2016/11/21/memory-0.6.html

Tool

  • better MSVC support
  • improved compilation time

Core

  • add literal operators for memory sizes (4_KiB)
  • more flexible make_block_allocator
  • composable allocator concept

Allocator

  • improved temporary_allocator: explicit separation into temporary_stack, improved automatic creation
  • new memory_stack_raii_unwind for automatic unwinding
  • new iteration_allocator
  • make allocators composable
  • add facilities for joint memory allocations

Adapter

  • add shared_ptr_node_size
  • add string container typedef
  • add fallback_allocator
  • add segregator

Bugfixes

  • OSX support
  • various warnings fixed

v0.5-3

8 years ago

Fixes a few minor bugs in memory_stack also the next_capacity() functions so that they return the exact results.

Array allocations in memory_pool_collection are improved and now supported for pool types that do not support them natively (small_node_pool) also add _left() to pool_capacity() and capacity() like in the other arenas.

v0.5-2

8 years ago

Fixes a crash in memory_pool<array_pool> that sometimes happens for array allocations. Also fixes a non-critical performance bug in memory_pool<small_pool> and a typo in Readme.

v0.5-1

8 years ago

Drop-in replacement for version 0.5 that massively improves the performance.

See also: https://t.co/uh59UnpVVi