DIP60: @nogc attribute

bearophile via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 24 06:35:37 PDT 2014


Walter Bright:

> http://wiki.dlang.org/DIP60
>
> Start on implementation:
>
> https://github.com/D-Programming-Language/dmd/pull/3455

Currently this code doesn't compile because the lambda allocates 
the closure on the heap:

void main() @nogc {
     import std.algorithm: map;
     int[3] data = [1, 2, 3];
     immutable int x = 3;
     auto result = data[].map!(y => y * x);
}


test.d(1,6): Error: function D main @nogc function allocates a 
closure with the GC

Such kind of code is common, so a good amount of range-based code 
can't be @nogc.

-----------

In the meantime the good Kenji has created a patch for missing 
semantics:
https://github.com/D-Programming-Language/dmd/pull/3493

Bye,
bearophile


More information about the Digitalmars-d mailing list