I like programming in D. And I think that it can exist in a world with Rust/Zig/Go/blub. My personal opinion/pitch for D.
1. I found D pretty easy to learn and use so getting productive in it was easier for me than Rust.
2. D has a lot of improvements to C++ that make it more ergonomic (no header files! built in package management!)
3. D has a lot of flexibility to go up and down the stack in complexity as well as interface with existing c/c++ code.
a. Need to use d for scripting like Python? use Rdmd
b. Need to interface with c code and can't depend on the D compiler? use -betterC ^1
c. Need a quick and dirty way to use C code without creating bindings? use importC
d. Can't use the garbage collector? use @nogc
e. Need to interface with C++? use extern (C++)
D's flexibility is its greatest strength and weakness. It can do a lot of things but not all of its features are ergonomic. A lot of that just has to do with man power. If it had a community as large as C++ things would be different. Using the examples in 3, you could use Ds features and write a kernel with @nogc, a user interface for that kernel using regular D, and create build scripts using rdmd.
To see a c++ person perspective on D watch this video^2
I use D to interface with C code and C APIs. Started using it for that purpose in June 2013 and haven't looked back. Used Rust and Go first, did not like either, and have been happy using D ever since. Over time the interoperability with C has gotten even stronger - to the point that you don't need to write bindings for the most part, and you can even directly compile C code as part of your project.
Are you saying you tried rust in 2013 and found it unsuitable? I think it was a pretty different thing back then. Though obviously that doesn’t mean D isn’t a great choice.
I quit using Rust in 2013 due to the learning curve. There's just no way I could have asked anyone else to use it.
Keep in mind that Rust 1.0 was released in early 2015, and it's not like they were making major changes right up to that release date. I haven't followed it recently, but I doubt it was meaningfully different from the 1.0 release in terms of learning curve.
Rust was still changing quite a lot in 2013. It sounds like you used it back when it had a garbage collector, baked-in green threads, and "~" and "@" sigils everywhere. Rust 1.0 may as well be a completely different language.
Here's a blog post from the same year that proposed removing the garbage collector.
1. I found D pretty easy to learn and use so getting productive in it was easier for me than Rust.
2. D has a lot of improvements to C++ that make it more ergonomic (no header files! built in package management!)
3. D has a lot of flexibility to go up and down the stack in complexity as well as interface with existing c/c++ code.
D's flexibility is its greatest strength and weakness. It can do a lot of things but not all of its features are ergonomic. A lot of that just has to do with man power. If it had a community as large as C++ things would be different. Using the examples in 3, you could use Ds features and write a kernel with @nogc, a user interface for that kernel using regular D, and create build scripts using rdmd.To see a c++ person perspective on D watch this video^2
1. https://wiki.dlang.org/D_on_esp32/esp8266(llvm-xtensa%2Bldc)...
2. DConf '22: Ray Tracing in (Less Than) One Weekend with DLang -- Mike Shah https://www.youtube.com/watch?v=nCIB8df7q2g