std.allocator needs your help

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Sep 23 07:03:12 PDT 2013


On 9/22/13 9:19 PM, Manu wrote:
> On 23 September 2013 13:01, Andrei Alexandrescu
> <SeeWebsiteForEmail at erdani.org <mailto:SeeWebsiteForEmail at erdani.org>>
> wrote:
>     Containers and other objects that want to allow customization of
>     their allocation would be parameterized during compilation with an
>     allocator type. Functions that need to allocate memory may similarly
>     accept a parameter of allocator type.
>
> You've just described C++ verbatim.
> And you've previously agreed that C++'s approach totally failed. Can you
> explain how this is different from C++, and how it solves the issues
> that defeated that design?

As I just wrote in my previous post, the two mistakes in C++'s allocator 
design are:

1. Allocators are parameterized by type.

2. Allocators cannot have state.

I fix both.

>     One possibility I'm keeping in mind is that of defining a dynamic
>     interface (i.e. in the OOP sense) for a global allocator. Then
>     people can globally change what allocator must be used for operator
>     new invocations.
>
> Right, this is getting warmer. It's a stark contrast to what you suggest
> above though, and when I try and think this through, it gets very
> complex, very fast.
> I can't imagine how such a system could ever be declared safe. However,
> this is more or less what I want. I don't know how to reconcile the 2
> requirements.

There are possibilities, which I hope to get to soon.

> How much have you thought on this? This is where I think some serious
> creativity will need to be applied...
>
> Following this train of thought, I can imagine a really nice end goal
> would be that the existing GC is effectively plugged in as a library,
> and people can easily substitute it for their own GC if they want/need to.

Sean has already done that. The current GC is entirely replaceable (and 
in particular extricable).


Andrei




More information about the Digitalmars-d mailing list