You can also make use of library types for reference counting,
http://dlang.org/phobos/std_typecons.html#.RefCounted
And if you really, really need, also manual memory management
by calling the C functions and letting the GC know not to track
that memory.
http://dlang.org/phobos/core_memory.html#.GC.BlkAttr.NO_SCAN
Fascinating! I assume the Phobos RefCounted then avoids using the
GC by utilizing GC.malloc (NO_SCAN) behind the scenes? Has anyone
benchmarked an application using D's GC versus using RefCounted
for critical paths?