On Saturday, 30 June 2018 at 12:59:02 UTC, punkUser wrote:
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.
Not to brag and what not, but if you're going straight for web
and not anything else then use Diamond, because it gives you so
much more than vibe.d alone does, but at the same time allows you
to utilize vibe.d to its full extend.