Garbage Collection and gamedev - tl;dr Yes we want it, so let's solve it

Ethan gooberman at gmail.com
Sun Nov 22 19:54:14 UTC 2020


On Sunday, 22 November 2020 at 14:30:45 UTC, Ethan wrote:
> ...longer form discussion about the exact kind of GC we want in 
> game development...

So chatting with Atila on beerconf. The conversation that comes 
up, apart from this needing to be a DIP, is that I need to fill 
out some of the ideas that I have here.

One of the things I mentioned is that I don't get why library 
solutions are pursued for handling memory allocations/garbage 
collecting when the runtime already exists and can be used for 
the same purpose. This led to highlighting that the runtime 
should be more templatised anyway so that it can get that deeper 
knowledge of objects via DbI. The runtime as designed and 
implemented is about ten years behind how the language 
progressed, so there's definitely some work that needs to happen 
there.

But the single reason I'm focused on runtime versus a library 
solution. If you get the pointer acquire/release hooks in to the 
runtime that I talk about, then the whole argument between ARC GC 
and other forms comes down to a single question: "Who cares?"

A library solution actively requires the user to specify the kind 
of memory management they want. This is not what most modern 
programmers need to care about. A runtime solution means that if 
you want to switch between ARC GC and a traditional mark/sweep GC 
then you just swap the runtime implementation out. The user's 
code does not change, and it should not need to.

But yeah, this all comes down to the fact that the runtime really 
needs work these days. And to a degree, I imagine user-provided 
templates that dictate how code should be generated is an 
interesting compiler design paradigm that can help there.

So tl;dr - DIP, but I can't think about writing one for a few 
months because time, but there's bound to be interesting 
discussion that can come up as a result of this.


More information about the Digitalmars-d mailing list