On Sunday, 22 February 2015 at 12:55:17 UTC, Benjamin Thaut wrote:
1) We need full percise pointer discovery, even for pointers on
the stack.
2) We need write barriers.
1) Is a really complex task for a language like D. There is a
reason why java has so a small feature set.
Worse than complex, you need a strongly typed language. D's type
system is ad hoc, aka broken.
2) For some reason nobody likes write barries because the
general fear is, that they will cost performance, so it was
decided to not implement them. (Without actually measuring
performance impact vs GC improvement)
Barriers in a loop is not good...
3. you need to get rid of destructors et al from GC.
The problem is that, to implement a non stop-the-world-GC you
need 2) and to implement a GC which is on par with Java or C#
you need 1).
Fortunately you can make do with "stop the GC threads" and still
have good real time responsiveness. But that requires:
1. minimal scanning (implies significant language and compiler
changes)
2. non-polluting cache friendly scanning (implies tunable or slow
scan in favour of real time non-gc threads)