On Thursday, 21 December 2017 at 10:49:46 UTC, Dan Partelly wrote:

I started to look into D very recently. I would like to know the following, if you guys are so nice to help me:

1. What is the performance of D's GC, what trade-offs where done in design , and if a in-deep primer on efficient usage and gotchas of the current implementation exists.

I've never independently measured it myself, so I can't say.

2. GC is never good enough. What are the current plans in this area for D.

The -betterC feature come to mind. Walter is trying to convert the DMD compiler's backend to D (It's still written in C-like C++; only the frontend is in D). For reasons I don't quite understand, he wants to use -betterC and RAII: https://github.com/dlang/dmd/pull/7421#issuecomment-350874126

But the GC isn't required. D is an extraordinarily powerful language with which you can work around just about any limitation.

https://wiki.dlang.org/Memory_Management
https://p0nce.github.io/d-idioms/#The-impossible-real-time-thread

In general, please point me to the place where current work on D is done.

Work on the D programming language is done primarily in 3 different repositories:
DMD (reference compiler) - https://github.com/dlang/dmd
DRuntime (language runtime library) - https://github.com/dlang/druntime
Phobos (standard library) - https://github.com/dlang/phobos

3. I need to be able to run with GC totally disabled sometimes. In the light of this: - are there any features of core language which depend on garbage collection ? (i.e unbound arrays, strings ..)

Yes, Exceptions, classes, dynamic arrays, and associative arrays come to mind. But, keep in mind that there are always ways to word around this.

- are there any features from standard library which depend on active garbage collection?

I'm not a big user of the standard library, but I believe most features of the standard library require the GC.

- Please point me to a list where there is an exhaustive enumeration of which language features *and* library features requires GC active. Looking at standard library docs I did not seen markings which identify clearly and unequivocally what requires GC active and what not.

I don't think such a list exists. You can compile code with the @nogc attribute and the compiler emit errors if you attempt to use the GC.

The -vgc compiler option will also tell you where you have GC allocations.

4. Is Andrei Alexandrescu's book from 2009 on D still actual, or the language evolution made it obsolete ?

I think there is still great information in that book, and Andrei is always a fun author to read. However, "Programming in D" is probably the best place to start - http://ddili.org/ders/d.en/index.html

Some D books are currently on sale for $5 at Packt Publishing: http://forum.dlang.org/post/mbczecvrworfwacmz...@forum.dlang.org

Mike


Reply via email to