On Wednesday, 4 July 2018 at 19:29:55 UTC, Ecstatic Coder wrote:
First, to be clear, I mainly use D as a scripting language for file processing, and for this use case, having a GC is a blessing.

This is a non issue and a GC doesn't matter at all in this case. You could allocate all you wanted and never free and as long as there's enough memory to finish the script you couldn't tell the difference. Once a script or program is done the OS reclaims all memory.

But memory leaks in software, running in some kind of main loop, become real performance bottlenecks eventually and a time sink to debug.

You say that garbage collection is not a real problem for game development.

No, what I'm saying is that I've hadn't had any issues with the GC so far and that I don't expect any. I'm also saying that I keep hearing this argument against using D but it was never backed up by anthing substantial so it sounds like an excuse by folks who never really considered D in the first place.

Like, what does it matter if a collection cycle is triggered during a loading screen ? Performance aware C++ folks do have to do resource management at some point, too, and that's not free either and is usually done while the loading screen is displayed.

For instance, have you read Unity's own official recommandations on how to overcome this problem ?

No, I haven't.
It probably boils down to pre-allocation, object pools, reusing objects, don't allocate in a loop, caching data, be mindful of what you do and when and how, etc, etc.

Which would be good advice for game development in general and I'd do exactly that in C/C++, or any non-GC'd language, too.


And about developing video games in C++, actually most studios use orthodox C++. This means no exceptions, no RTTI, few virtual methods, fast lightweight smart pointers and collections, etc.

They could get that with -betterC which also does not use a GC.


And about the scripting language, it's not my fault if some game engine developers don't care for the performance or GC issues when adding a scripting language to their game engine.

Never said it was your fault, just pointed out the fact that it's a very common occurance.

So, as I said, those who use C++ or Rust because D's GC is a problem for them, won't probably use D in its current state.

Or any other language tagged GC for that matter, except maybe LUA.

Nobody and nothing forces anyone to use the GC or features which use it. Just go ahead and manage your memory manually. They will not be using features like dynamic arrays, the standard library, and such but that's not a loss since they'd roll their own, more performant implementations, anyways.

But I'm convinced that they wouldn't consider D - even if there was a GC-free Phobos.
They would find the next excuse.

Those who are willing find solutions, those who are not find excuses.



Reply via email to