Things that keep D from evolving?
NX via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Feb 8 08:33:09 PST 2016
On Monday, 8 February 2016 at 11:22:45 UTC, thedeemon wrote:
> On Saturday, 6 February 2016 at 08:07:42 UTC, NX wrote:
>> What language semantics prevent precise & fast GC
>> implementations?
>
> Unions and easy type casting prevent precise GC.
> Lack of write barriers for reference-type fields prevent fast
> (generational and/or concurrent) GC. Some more detailed
> explanations here:
> http://www.infognition.com/blog/2014/the_real_problem_with_gc_in_d.html
I see... By any chance, can we solve this issue with GC managed
pointers? AFAIK, this is what C++/CLR does: There are 2 different
pointer types, (*) and (^). (*) is the famous raw pointer, second
one is GC managed pointer. A GC pointer has write barrier (unlike
raw pointer) so we can have both raw C performance (if we want)
and fast generational GC or concurrent GC (which are a magnitude
better than a mark and sweep GC).
As you realized, there is a major problem with this: classes. The
desicion of making classes reference-type is actually fine
(+simplicity), but it doesn't really help with the current
situation, I expect D to be pragmatic and let me decide. Maybe in
future... Who knows...
More information about the Digitalmars-d-learn
mailing list