On Thursday, 23 May 2013 at 18:13:17 UTC, Brad Anderson wrote:
There was a lot of interesting stuff in Benjamin Thaut's
article about GC versus manual memory management in a game [4]
and the discussion about it on the forums [5]. A lot of this
collective knowledge built up on manual memory management
techniques specific to D should probably be formalized and
added to the official documentation. There is a Memory
Management [6] page in the documentation but it appears to be
rather dated at this point and not particularly applicable to
modern D2 (no mention of emplace or scoped and it talks about
using delete and scope classes).
Game development is one place D can really get a foothold but
all too often the GC is held over D's head because people
taking their first look at D don't know how to avoid using it
and often don't realize you can avoid using it entirely. This
is easily the most common issue raised by newcomers to D with a
C or C++ background that I see in the #d IRC channel (many of
which are interested in game dev but concerned the GC will kill
their game's performance).
I think that Phobos should have some support for manual memory
management. I don't mean clearing out the gc usage there, as it's
fairly obvious. I rather think about something like
unique_ptr/shared_ptr in the std. I think unique_ptr can't be
implemented without rval refs, also C++ sollutions may not fit
here. Anyways, now it's not so straightforward how to live
without gc so standard sollution would be really helpful.
Also, it should be visible in C++/D that D can really deal with
manual memory management conveniently - when I checked out Dlang
first time I felt very disappointed that "delete" operator is
deprecated. "So - they advertise one can code without GC, yet
they seem to deprecate the operator" - false claims discourage
people from using new languages.