Library associative array project v0.0.1

rikki cattermole rikki at cattermole.co.nz
Wed May 11 16:58:27 UTC 2022


On 12/05/2022 4:55 AM, templatedperson wrote:
>> for a good reason, the default is the GC.
> 
> Good reason or not, people sometimes need to do manual memory management.
> 
> I usually use the GC and like that we have it, but if you care about 
> performance you gotta drop down to manual managements sometimes. If 
> libraries don't let users decide what sort of memory management pattern 
> they want to use we have two languages essentially.
> 
> I'd rather all of phobos had overloads with allocator arguments, but 
> sadly it doesn't.

They are classes hidden inside structs.

I'm well aware of the issues, I have my own -betterC allocator library 
(that will hopefully be available soon-ish) that does not have these issues.

```d
struct RCAllocator {
     private {
         void delegate() @safe @nogc pure nothrow refAdd_;
         void delegate() @safe @nogc pure nothrow refSub_;

         void[]delegate(size_t, TypeInfo ti = null) @safe @nogc pure 
nothrow allocate_;
         bool delegate(scope void[]) @safe @nogc pure nothrow deallocate_;
         bool delegate(scope ref void[], size_t) @safe @nogc pure 
nothrow reallocate_;
         Ternary delegate(scope void[]) @safe @nogc pure nothrow owns_;
         bool delegate() @safe @nogc pure nothrow deallocateAll_;
         bool delegate() @safe @nogc pure nothrow empty_;
     }

@safe @nogc pure nothrow:
```


More information about the Digitalmars-d-announce mailing list