timmyjose wrote:
a). So the GC is part of the runtime even if we specify @nogc
yes. GC is basically just a set of functions and some supporting data
structures, it is compiled in druntime. @nogc doesn't turn it off, if
says that compiler must ensure that *your* *code* doesn't allocate, at
compile time. i.e. @nogc code with GC allocations won't compile at all.
b). Do we manually trigger the GC (like Java's System.gc(), even
though that's not guaranteed), or does it get triggered automatically
when we invoke some operations on heap allocated data and/or when the
data go out of scope?
GC can be invoked *only* on allocation. as long as you don't allocate
GC data, GC will not be called. of course, things like array/string
concatenation (and closure creation) allocates, so you'd better be
careful with your code if you want to avoid GC in some critical part.
or you can call `GC.disable()` to completely disable GC (and
`GC.enable()` later, of course ;-).
c). Does Rust have analogues of "new" and "delete", or does it use
something like smart pointers by default?
`new`. no `delete`, tho, as it is not necessary with GC. actually,
there is `delete` thingy, but it is deprecated, and you'd better not
use it unless you are *really* know what you're doing and why. i.e.
don't prematurely optimize your code, especially without good
understanding of D's GC.
Fascinating reading about the various use cases that you and others
have put D to. It does give me a lot more contextual understanding
now. Thank you!
you're welcome.
as for me, i am using D exclusively for *all* my programming tasks
(including writing simple shell scripts ;-) for years. and i don't want
to go back to C/C++ or switch to some [new] hyped language. i have 20+
years of programming expirience, and i feel that D is the best language
i ever used. don't get me wrong, tho: it doesn't mean that D is the
best language on the planet. what i mean is that D has a best balance
of features, warts, libs and so on *for* *me*. easy C interop allows me
to use all the C libraries out there; C-like syntax allows me to port C
code (i did alot of C ports, including NanoVG, NanoSVG, Tremor Vorbis
decoder, Opus decoder, etc.); great metaprogramming (for C-like
language) allows me to skip writing boilerplate code; and so on. ;-)
also, dmd compiler is easily hackable. trying to even compile gcc is a
PITA, for example. and dmd+druntime+phobos takes ~1.5 minutes to build
on my old i3.