I have a plan.. I really DO

punkUser andrew.lauritzen at gmail.com
Sat Jun 30 12:59:02 UTC 2018


I don't normally contribute a lot here but as I've been using a 
fair mix of C/C++, D and Rust lately for a variety of projects 
from game dev to web to services, I have a few thoughts.

Without exhaustively comparing the different pros/cons of the 
languages, the most important thing that makes me pick D for a 
project these days is actually vibe.d. It's the perfect balance 
between letting me expose my low level stuff as a network/web 
service easily while not trying to take over too much of my 
application or conversely get me to manually write async network 
state machines. I'd happily argue that its cooperative fiber 
model is actually superior to C#'s, and while it's not quite to 
the level of Go (mostly just because it's not as ubiquitously 
supported in the standard library), I'll still happily take the 
trade-off to use a language closer to C/C++.

Rust's web framework and cooperative fiber story is still just 
forming, and I have some concern they'll go down the C# route 
which while better than nothing, isn't quite as nice as vibe.d 
where any function can effectively be part of a cooperative fiber 
without the need for infectious markup everywhere. Rust's syntax 
is also a fair bit different than C/C++ which makes it harder to 
collaborate with people for the moment, while D's is close enough 
that anyone with a decent amount of C/C++ experience can jump in 
pretty quickly.

In terms of what makes me *not* want to use D, while GC is 
certainly a factor in some uses, in more cases it's actually that 
I want more language and compiler stability. While things have 
calmed down somewhat in the past year the number of times a D 
update has broken code (mine or code in a dependency) and left me 
trying to debug someone else's code deep in a library somewhere 
when I'm trying to just do a small update has been far too high. 
Rust's "stable" branch and their new epochs model (where the 
language can change every few years but critically dependencies 
using different epochs work together) is something I would love 
to be adopted in D.

In any case I just wanted to give the feedback that from my point 
of view the main thing that keeps me coming back to it for new 
projects is vibe.d. Thus I'm in favor of making vibe.d a big part 
of the selling point and design considerations for D going 
forward.


More information about the Digitalmars-d-announce mailing list