Avoiding GC

Guillaume Piolat via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Oct 28 07:58:34 PDT 2016


On Friday, 28 October 2016 at 11:50:20 UTC, hardreset wrote:
> On Thursday, 27 October 2016 at 07:52:09 UTC, Guillaume Piolat 
> wrote:
>> On Wednesday, 26 October 2016 at 08:18:07 UTC, hardreset wrote:
>>> Is there a page somewhere on how to program D without using 
>>> the GC?
>>
>> The information is scattered.
>>
>>
>>> How do I allocate / free structs / classes on the heap 
>>> manually?
>>
>> Classes => 
>> https://github.com/AuburnSounds/dplug/blob/master/core/dplug/core/nogc.d#L122
>
> Thanks.
>
> I notice you avoid GC altogether in dplug. Whats the reason for 
> total avoidance as apposed to just avoiding it in the real time 
> code?

Not a lot of reason.
It's very recent work, I'm still struggling making threadpool 
works.

- Reason #1 was that it gives a way to unload shared libraries on 
OSX. This bug has been fixed in LDC but would require to make 
druntime and phobos a shared library to ship. That makes releases 
3x larger so I went with disabling the runtime instead (one month 
of work and still going...).

- Reason #2 is that GC does use more memory. Next release of our 
products use 2x fewer memory.

All in all it's _painful_ not to use the D runtime, suddenly you 
can't use third-party code, and there is no performance 
enhancement to expect apart from reduced memory usage.

Don't avoid the runtime on principles alone.



More information about the Digitalmars-d-learn mailing list