On Friday, 15 July 2022 at 09:27:51 UTC, LinguisticMystic wrote:
>I'm looking for a modestly mature language to be a C++ replacement for my hobby needs. D seems to be a good one as it ticks all the boxes of C++ while fixing most (all?) of its flaws. However, what confuses me is the fact that D has a garbage collector. My necessary requirement is that the runtime should not include any such thing. And D does have some sort of @nogc switch. My question is, how usable is the scenario of GC-free programs in reality? Does the switch apply globally, so that the compiled binary is free from GC code? How many essential libraries can work without GC? Is it better for me to look elsewhere if I don't want GC?
Thanks for your clarifications!
It is perfectly usable without a GC
You have access to malloc/free from libc and also allocators, so you can do what ever you want!
I am working on an online RPG targeting WASM without touching the GC at all, no RAII (thanks to scope guards aka defer, scope(exit)), no exceptions and it's been super smooth
-
game server
-
login server
-
master server
-
front end
-
database stuff
D is a very pragmatic language, i still use the GC for tooling projects and the deployment scripts where the GC doesn't have any impact at all, it was very useful to have even thought not necessary
If you don't want the GC then you know what you are doing you don't want to deal with 3rd-party anyways since they can mess up your memory allocation strategy
You can consume C/C++ code with D, so you can consume their entire ecosystem with ease
I consume GLFW on desktop, Freetype for fonts, OpenGL/OpenAL for gpu/audio and PostgreSQL for the database, they are all C projects and the integration is super smooth
And there are lot of people around developing D libraries that are @nogc compatible