On Tuesday, 19 September 2017 at 13:11:03 UTC, Craig Black wrote:
I've recently tried coding in D again after some years. One of
my earlier concerns was the ability to code without the GC,
which seemed difficult to pull off. To be clear, I want my
programs to be garbage collected, but I want to use the GC
sparingly so that the mark and sweep collections will be fast.
So I want guarantees that certain sections of code and certain
structs will not require the GC in any way.
I realize that you can allocate on the non-GC heap using malloc
and free and emplace, but I find it troubling that you still
need to tell the GC to scan your allocation. What I would like
is, for example, to be able to write a @nogc templated struct
that guarantees that none of its members require GC scanning.
Thus:
@nogc struct Array(T)
{
...
}
class GarbageCollectedClass
{
}
void main()
{
Array!int intArray; // fine
}
struct Array(T)
{
@nogc:
...
}
?