[Issue 16250] New: GCAllocator should be at least @safe, nothrow
    via Digitalmars-d-bugs 
    digitalmars-d-bugs at puremagic.com
       
    Thu Jul  7 15:18:19 PDT 2016
    
    
  
https://issues.dlang.org/show_bug.cgi?id=16250
          Issue ID: 16250
           Summary: GCAllocator should be at least @safe, nothrow
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Keywords: safe
          Severity: minor
          Priority: P1
         Component: phobos
          Assignee: nobody at puremagic.com
          Reporter: greensunny12 at gmail.com
A common pattern for future APIs would be to allow to pass-in a custom
Allocator and have @safe and nothrow code if the GCAllocator was used. Ideally
I hope that the language might ease the use of custom allocators, but being
conveniently able to switch between safe and non-safe fast code would be a good
start. See e.g. this simple test for an example:
nothrow unittest
{
    import std.experimental.allocator: dispose, makeArray;
    import std.experimental.allocator.gc_allocator: GCAllocator;
    auto Allocator = GCAllocator.instance;
    auto safeFun() @safe
    {
        int[] arr = Allocator.makeArray!int(2);
        assert(arr == [0, 0]);
        return arr;
    }
    Allocator.dispose(safeFun());
}
Imho this test could also be `pure`, but that's not really important there .
There's is already an ongoing PR, but that lost its motion and needs to be
revived.
https://github.com/dlang/phobos/pull/3891
For no required shared in the GCAllocator, there is another ongoing effort: 
https://github.com/dlang/phobos/pull/4288
--
    
    
More information about the Digitalmars-d-bugs
mailing list