Componentizing D's garbage collector

deadalnix deadalnix at gmail.com
Tue Jan 14 16:33:41 PST 2014


On Wednesday, 15 January 2014 at 00:24:48 UTC, Frustrated wrote:
> On Tuesday, 14 January 2014 at 22:36:12 UTC, Benjamin Thaut 
> wrote:
>> Am 14.01.2014 23:10, schrieb Walter Bright:
>>>
>>> I already agreed that there are better ways.
>>>
>>
>> Then this was a big misunderstanding.
>
> So, the issue seems to be that everyone is treating the GC as 
> the Thors hammer and seeing everything as a nails?
>
> The GC does and can not solve all problems. Why force people to 
> use it when it doesn't work well?
>
> I would think having a multi-layered approach would be best. 
> Allow the GC to do everything it can but also allow it to be 
> configured from 0 to 60. For noobs, non-realtime apps, etc the 
> GC can be set to do it all. One can trade speed for memory(less 
> memory, more scanning etc...). One can disable to in specific 
> cases(such as on unions), have separate heaps for GC memory and 
> non-GC allocated memory, etc.
>
> It seems that a more robust GC with many features(with the 
> feature of not using it and either manually allocating or using 
> ARC).
>
> The the only real issue becomes how to keep the GC in sync with 
> the non-GC allocated memory... and this only happens if one 
> chooses to use non-GC features(which must be intentional so 
> hopefully the programming knows what he's doing if he got that 
> far).
>
> I doubt this will ever be possible to solve efficiently so why 
> bother? Leave it up to the programmer to deal with it. Make 
> some resources available to solve these problems but don't try 
> to dictate what must be done. If the programmer is going to 
> bypass the GC he already must have good reasons so why put up 
> roadblocks? Cause *you* think you know better than him what he 
> needs to do?
>
>
> For example, suppose we have a non-GC based pointer. Allow the 
> programmer to mark it as a pointer with certain contextual 
> parameters so that either the GC ca n "deal with it" better or 
> at least for debugging purposes help find memory leaks.
>
> I'm way more interested in having a GC that doesn't stop the 
> world and a compiler that doesn't require the GC for simple 
> stuff as slices(could it not use a buffer and/or ARC 
> instead/alternatively?).

Try to do the pull request that goes with that, and we will be
able to discuss the real problems.


More information about the Digitalmars-d mailing list