On Saturday, 24 July 2021 at 02:48:51 UTC, Paul Backus wrote:
Which raises the question, *why* is `destroy` not `@nogc` when the destructor is `@nogc`? And it turns out the answer is that [it calls `rt_finalize`][1], which [takes its argument as a `void*`][2] and therefore has to assume that any destructor it calls *might* use the GC.


Technically, they might indeed call the GC (if called deterministically, that is another topic).

If you know it won't happen, you can break the type system like this:
https://dplug.dpldocs.info/source/dplug.core.nogc.d.html#L80

Which is useful if you are running with some kind of DasWorseD (no runtime, disabled runtime, or custom runtime usw)

Reply via email to