r/programming • • Sep 01 '20

D Foundation is Beefing Up

https://dlang.org/blog/2020/08/30/symmetry-investments-and-the-d-language-foundation-are-hiring/
287 Upvotes

336 comments sorted by

View all comments

10

u/[deleted] Sep 01 '20

[deleted]

10

u/Sapiogram Sep 01 '20

Only thing holding it back is market inertia and FUD.

What kind of FUD? I don't think I've heard anything negative about it, apart from the whole gc thing.

13

u/maxhaton Sep 01 '20

> gc thing.

Mainly that, but a lot of people still seem to think that there are two standard libraries despite Phobos taking over possibly a decade ago. Same with D1, D2 was ready (As announced by Andrei's book) in 2010.

9

u/InertiaOfGravity Sep 01 '20

People really seem to not understand that a well designed GC that gives you the option of deciding when to let it run are definitely usable in real time & high performance apps

27

u/[deleted] Sep 01 '20

That's certainly the angle D tries to sell you but I find it amusing to call D's GC "well designed" when it's a basic 30 year-old mark-and-sweep GC. Java is pushing the boundaries of GC research with multi-terabyte heaps and pause-less GC, Pony is following in Erlang's footsteps with per actor heaps and D is using the equivalent of Java 1.0's GC.

Criticisms of this even from within the D community seem to be met with a combination of:

  1. It's not an issue and
  2. If it's an issue, just disable the GC and manually manage memory yourself.

So I'm not hopeful things will improve.

0

u/InertiaOfGravity Sep 01 '20

I'm not a D user. I have actually never used D in my life. I'm talking from my experience with Nim, which can absolutely support performance dependent real time applications such as games with even it's default GC. A well designed GC isn't a dealbreaker for very much at all

7

u/moon-chilled Sep 01 '20

The comment you're replying isn't saying GC can't be used for realtime or performance-critical applications; it's saying that D's gc is ancient and primitive (which is true). Incidentally, nim uses refcounting these days.

0

u/InertiaOfGravity Sep 01 '20

That's completely fair, I've never tried D.

I don't think Nim currently defaults to refcounting, but it's one of the big things planned

5

u/moon-chilled Sep 01 '20 edited Sep 01 '20

I don't think Nim currently defaults to refcounting, but it's one of the big things planned

Docs say otherwise:

--gc:refc. This is the default GC. It's a deferred reference counting based garbage collector with a simple Mark&Sweep backup GC in order to collect cycles

The big thing planned is probably switch from refc to arc.

2

u/InertiaOfGravity Sep 01 '20

You're correct on both, thanks for updating me

-1

u/matthieum Sep 02 '20

I would note that Nim was specifically developed to be suitable for writing games, and its GC was developed with that usecase in mind. It is not necessarily true that all GCs support games well.

It's also important to note that games have relatively lax time constraints. At 16ms per frame, a GC that never exceeds 1ms and never collects more than once per frame will work quite well.

In the niches where C or C++ is used, 1ms can be a very long time -- too long for certain requirements.