On Monday, 25 July 2016 at 00:05:16 UTC, ketmar wrote:
On Sunday, 24 July 2016 at 23:30:37 UTC, bitwise wrote:
On Sunday, 24 July 2016 at 23:10:18 UTC, Dicebot wrote:
@nogc functions must never ever trigger GC collection cycle, not under any possible circumstances. Otherwise the attribute serves no purpose.

The fact that you can use malloc() in a @nogc function invalidates this argument.

nope. `malloc()` has nothing to do with garbage collection.

what `@nogc` means is "i won't use built-in allocator with garbage collection in this code", not "i won't do any memory allocations in this code".

If someone knows all their code is @nogc, they can disable the GC. If they do that, and then someone GC allocates anyways, it's a leak. Based on this, an argument could be made that @nogc should *never* be bypassed. But that argument is made on the false premise that it's fool-proof in it's current condition. It's not, because you can already use malloc() in a @nogc function and leak that memory instead.

     Bit

Reply via email to