On 6/12/15 4:08 AM, Dicebot wrote:
Small tip for reviewers: there are quite many modules in proposed
package but majority is actual allocator implementation. I'd suggest to
start investigating sources/documentation starting from
http://erdani.com/d/phobos-prerelease/std_experimental_allocator.html
and
http://erdani.com/d/phobos-prerelease/std_experimental_allocator_building_blocks.html
while using
http://erdani.com/d/phobos-prerelease/std_experimental_allocator_showcase.html
as reference for "highlight" examples.
A few more words on that:
Think of std.experimental.allocator as a three-layered cake:
* An untyped layer, dealing exclusively in void[], and where all action
is happening. That's where work is getting done, and also where assembly
of various custom allocators happens. Best entry point for that is
http://erdani.com/d/phobos-prerelease/std_experimental_allocator_building_blocks.html,
which describes this layer's design and links to all untyped components.
* A statically-typed layer, which takes types from the user and gives
back typed memory. There are two good entry points here:
http://erdani.com/d/phobos-prerelease/std_experimental_allocator.html
contains generic routines for creating and destroying typed objects
using any untyped allocator: make, dispose, etc. There is also assembly
at this level, i.e. deciding to use different heaps for shared vs.
unshared data:
http://erdani.com/d/phobos-prerelease/std_experimental_allocator_typed.html
(this is particularly beautiful or awful, depending).
* A dynamicaly-typed layer that allows the user to swap allocators at
runtime. This is embodied in IAllocator, CAllocatorImpl, theAllocator,
and processAllocator.
Thanks in advance for reviewing this!
Andrei