On 1/26/21 8:10 AM, Ola Fosheim Grøstad wrote:
Is there some way for library authors to test whether a GC is present at
compile time? @nogc just means that my code does not depend on a GC, but
it doesn't tell the compiler that my code is incompatible with GC.
I want to compute pointers in a way that is not scannable by a
conservative collector for performance reasons. So I need to make sure
that the faster code isn't chosen when people use GC using "static if"s.
The only way to ensure the GC isn't used is with betterC. Even with
@nogc tag on main, the GC could be used in static ctors, and casting
function pointers/etc.
In that case, you can do version(D_BetterC)
And this will only apply to templates, not to compiled code, since
compiled code already is done (and one can obviously use betterC
compiled code in normal D code).
-Steve