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.

Reply via email to