I've seen you say more than once that you can't bond with the GC, and believe me I understand, if you search back through the forums, you'll find one of the first things I did when I got here was complain about the GC. But what you're saying is "I can't bond with this horrible GC so we need to throw it out and rebuild the compiler to support ARC." All I am saying is "I can't bond with the horrible GC, so why don't we make a better one, that doesn't ruin responsiveness, because I've seen it done in other places and there is no technical reason D can't do the same, or better."

There are lots of technical reasons why D's GC is just the way it is and why Java and C# can do better. They have been enumerated in this forum a lot of times, you simply chose to ignore them:

1. D doesn't restrict pointers, interior pointers abound especially thanks to the design of slices. Interior pointers are a problem for every high performance GC algorithm I'm aware of. 2. D's design doesn't easily allow for read or write barriers in general. You simply cannot make a GC behave without barriers.
3. Unions cause some (minor) problems.

In general the type system doesn't distinguish between GC'ed memory and manually managed memory at all.


Now that I've started to read the GC Handbook I am starting to suspect that using D, there might be a way to create a completely pause-less GC. Don't hold me too it, I don't know enough yet, but D has some unique capabilities that might just make it possible.

That's just bullshit. The opposite is true: Of the big players D is easily the language that is most hostile to an efficient GC implementation.

Reply via email to