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

Reply via email to