std.experimental.allocator is a package by Andrei Alexandrescu that standard API for allocators as well as implementation for some of common ones.
What std.experimental.allocator is:
- A hookable interface for allocating and releasing memory.
- A systematic and hierarchical approach to global allocation, spanning the stack, thread-local storage, and process-level memory.
- A collection of quality implementations of typical memory allocation strategies, including free lists, regions, bitmapped blocks, bucketized size-specialized allocators, and more.
- A framework for easy assembly and experimentation with custom allocation strategies.
- An integration of types within the allocation strategy, allowing concrete allocators to exploit various characteristics of the types they are allocating.
What std.experimental.allocator is not:
- An abstraction of lifetime management, e.g. transparently choosing between tracing vs. reference counting.
- An abstraction of notions such as "address", "pointer", and "reference".
Formal review is about to start soon