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)

Reply via email to