std.allocator needs your help
qznc
qznc at web.de
Mon Sep 23 02:31:51 PDT 2013
On Monday, 23 September 2013 at 07:31:46 UTC, Jacob Carlborg
wrote:
> On 2013-09-23 01:49, Andrei Alexandrescu wrote:
>
>> I am making good progress on the design of std.allocator, and
>> I am
>> optimistic about the way it turns out. D's introspection
>> capabilities
>> really shine through, and in places the design does feel really
>> archetypal - e.g. "this is the essence of a freelist
>> allocator". It's a
>> very good feeling. The overall inspiration comes from Berger's
>> HeapLayers, but D's introspection takes that pattern to a
>> whole new level.
>
> I agree with Manu here. I thought the whole point was to come
> up with a design and API how the allocators are supposed to be
> used. How they integrate with user code.
>
> Here's a quick idea:
>
> I can think of at least four different usage patterns how an
> allocator can be set. Hopefully this will be backwards
> compatible as well.
>
> 1. Globally - The same allocator is used in the whole
> application by all threads
>
> 2. Thread local - The allocator is set per thread. Different
> threads can used different allocators
>
> 3. Function local - This is the most intrusive. Sets the
> allocator for a given function call
>
> 4. Block local - The allocator is used during a given block
5. Class local - The allocator is used for specific types (e.g.
ASTNode in a compiler)
6. Class-hierarchy - The allocator is used for a specific type
hierarchy (e.g. ASTNode might have sub classes
Statement,BinOp,etc)
7. Container local - The C++ way which binds allocation to a
wrapping container
8. Task local - like Thread local but for std.parallelism.Task
That's it for now.
This is quite a long list, which means it is probably exhaustive.
There should be a generic approach which encompasses at least
those cases.
More information about the Digitalmars-d
mailing list