Thanks for the very comprehensive response! I think most of my
doubts are cleared now. You're right though that I'm probably
worrying too much about GC with my current use case. Also thanks
for the links - they should also come in very handy indeed.
I managed to find some book recommendations as well on the site.
I've decided to start out with what appears to be the most
approachable of them - Programming in D by Ceherli.
D doesn't have macros. D has templates like C++, string mixins
(insert a statically >know/generated string as D code), and CTFE
(Compile Time Function Evaluation, to >programmatically generate
static stuff).
Ah, I see! Thanks for clarifying that although CTFE as you
mentioned it seems to match my specific interest.
I look forward to learning D and being able to contribute some
day! :-)
On Saturday, 18 February 2017 at 21:09:20 UTC, ag0aep6g wrote:
On Saturday, 18 February 2017 at 20:15:55 UTC, timmyjose wrote:
[...]
There is a GC, but you can avoid the features that use it.
There's a function attribute for that: @nogc [1]. It forbids
GC-manages allocations. The GC is still there, but it won't do
anything because you're not triggering it.
You can also turn automatic collections off (GC.disable [2]).
There's no need for that when all your code is @nogc, though,
because collections are triggered by allocations.
As for getting rid of the GC entirely (for saving space, I
guess), I think that's more involved. May require changes to
druntime. Shouldn't be necessary most of the time.
[...]
Yes. Whenever a std function returns a new string or some such
it's going to be GC-allocated. There's an experimental module
for custom allocators [3], but the rest of the library doesn't
make use of it, yet. When a std function uses the GC, the
compiler won't let you call it from @nogc code.
[...]
I don't think you're going to run into much trouble when making
"grep-scale tools".
[...]
[...]
D doesn't have macros. D has templates like C++, string mixins
(insert a statically know/generated string as D code), and CTFE
(Compile Time Function Evaluation, to programmatically generate
static stuff).
[...]
Can't answer this, because I'm not familiar enough with those
languages.
[...]
Absolutely. Anyone is welcome to contribute. D is very much a
volunteer effort. Also don't hesitate to point out (or even
fix) any stumbling blocks you may encounter when starting out.
[1] https://dlang.org/spec/attribute.html#nogc
[2] https://dlang.org/phobos/core_memory.html#.GC.disable
[3] https://dlang.org/phobos/std_experimental_allocator.html
[4] http://ddili.org/ders/d.en/index.html
[5] https://tour.dlang.org/