On Wednesday, 28 May 2014 at 19:43:53 UTC, Nordlöw wrote:
I would like my radix sort function radixSortImpl() at

https://github.com/nordlow/justd/blob/master/intsort.d

to not use the GC. However, when I tag with @nogc I get the error:

intsort.d(195,47): Error: @nogc function 'isort.radixSortImpl!(byte[], "a", false).radixSortImpl' cannot call non-@nogc function 'std.array.uninitializedArray!(byte[], immutable(ulong)).uninitializedArray'

Is there an alternative to

std.array: uninitializedArray
Elem[] y = uninitializedArray!(Elem[])(n);

that neither use the GC and nor preinitialize the data?

malloc? There's no wrapper around it though, like there is for uninitializedArray.

Keep in mind though that currently, you have to choose either of "pure" (GC) or "nogc" (malloc) if you need dynamic allocation :/

Could the recent DMD pull optimization to scope here

https://github.com/D-Programming-Language/dmd/commit/abc7033bf9cf7f7224a47e45096efc48a21b5ab8

be used?

/Per

I don't think scope can be used to create a dynamic array on the stack. I think it requires the object's type be statically known. I could be wrong though.

If you know "n" has a max size, you could you create a fixed size array, or attempt a "alloca" array?

Reply via email to