On 5/11/2014 2:48 AM, Benjamin Thaut wrote:
Mostly percise doesn't help. Its either fully percise or beeing stuck with a
impercise mark & sweep.
This is not correct. It helps because most of the false pointers will be in the
heap, and the heap will be accurately scanned, nearly eliminating false
references to garbage.
Also D's GC doesn't use RTInfo currently.
Yes, but that is not an issue with the language design.
Additionally Rainer Schuetzes implementation showed that using RTInfo with the
current GC
makes the collection actually slower at the price of beeing 'mostly' percise.
As I recall, his implementation showed dramatic improvements in memory
consumption.
(All GC schemes are tradeoffs.)
The Boehm collector cannot move objects around, the D one can.
Oh it can? Really?
Yes. D, for example, requires that objects not be self-referential for this
reason.
I would love to see how well interfacing with any C library
works, if the D garbage collector actually does that.
The current D GC does not do that, but it can. It will work fine with C
libraries as long as a pointer to the data is retained on the stack, as it
naturally will be by passing it as a stack parameter to a C function. Roots
found on the stack would automatically pin the object.
I know this works because I implemented it for a Java VM back in the 90's.
Someone wrote a paper about a similar scheme calling it a "mostly copying
collector".
Also I'm talking about what the D garbage collector currently actually does, and
not what it could do.
I think it would be more useful to talk about what it could do without language
changes.
If we actually would implement arc, it would most likely
take less time then a full blown proper gc and we would end up with better
performance than we currently have. Beating the 300% slowdown which the current
GC imposes is not that hard.
If we however keep arguing what a GC could do, we will be stuck with the
impercise mark & sweep forever. (or at least the next 5 years)
I believe the performance claims of pervasive ARC are unjustifiably optimistic
and based on unproven technology that has never been implemented anywhere.