Two decades ago everything was running in the JVM or CLR. But today we’re seeing investment in Go, nim, etc.
I also think two decades ago you didn’t need your app to run everywhere. D can be your web app backend, it can compile to wasm, and it can be compiled to a shared library while still keeping you productive with a GC or without a GC if that’s your thing. This means you have a shared library that your electron desktop app can use or your iOS Swift app can use.
I do agree D has a problem of a split community. You see it on the forums with 50% just wanting better C++ and 50% going GC. I'm actually looking forward to C# AOT sometime soon.
Sun spoiled their uptake by pushing Java the way they did.
It's too late to pronounce any language dead. Not only is it hurtful to those who use the language, the pronouncement may also be wrong! :-)
For example, one of the languages that I really like is OCaml. You could say that OCaml is a super niche language like D. It's kinda undergoing a renaissance today with the upcoming OCaml 5.0. Some important software is written in OCaml e.g. Coq, pyre-check, flow, rescript, infer etc. I see OCaml remaining relevant and excellent in the years ahead whether or nor it amasses a huge following.
In other words, the number of people using a language is just one of the metrics you should use to assess the language. D has shown a long term resilience that is amazing. The language has been steadily improving and getting refined for a very long period of time which is admirable. So many open source projects run out of steam in a couple of years! Not the case with D!
D has a native, gcc and llvm backend. Quite amazing huh!?
One thing I would say though about D: The language needs to decide who it wants to be.
Go wants to be minimalist garbage collected language with a good concurrency/parallelism story. Rust wants to be a safer C++ with full control on memory. Java wants to be object oriented and garbage collected.
Because its mission is not clear, it ends up trying to please everyone but delight no one!
The day D decides what it wants to be _and_ this message comes from top leadership it will become much more successful! D can still achieve a lot in the future...I am rooting for D to be more successful in 2020s and beyond!
As for Zig I’ve used it (I rewrote the xv6 user space programs in it, and plan to rewrite the rest of the kernel in it one day) but for day to day I don’t want to manage memory.
I like D because it’s a blend of high level and low level. It’s natively compiled and if GC becomes a problem I can just turn it off in critical sections instead of playing with C FFI shenanigans.
It’s an extremely ergonomic language with amazing metaprogramming and error handling (unlike Go).
It gives me full control of memory and the cpu via pointers, scoped allocations, and in-line assembly if I need it. Which results in a light weight binary and low memory usage (unlike Java and C#).
I really hate language bashing, and I'd have liked D to succeed, but I'm not sure where it fits anymore.
In 2021 Java and C# aren't the same languages as in 2021. The midori team rejoined .NET and has brought many of the learnings into .NET Core, since C# 7.0, C# has been surfacing CLR features that were only available to C++/CLI, and .NET 7 (yeah still one year away) will finally fix the whole ongoing AOT story.
There are runtimes like Meadow for embedded development, runing on top of NuttX.
Java has been feeling the pressure of languages like Go, and also so also improving its value types, GPGPU programming and AOT story. Also supports embedded development and there is that phone OS out there, even if the language is a subset of the real deal.
C++20 has taken most of the top selling D features (auto, modules, if constexpr, ranges,...), even if in a more clunky way, as always. Then GPGPU programming has made it the SQL of graphics programming.
While many argue that Go isn't a systems programming language, others ship compilers, GC, unikernels, Nintendo Switch games, and even firmware written in Go.
Rust has been gaining steam across Linux kernel, the OSes from Amazon, Google, Microsoft, ARM.
Meanwhile D is still trying to find its niche, without offering the ecosystem of the languages above.
The community is great, the language could have been a deal changer 10 years ago, specially when Facebook and Remedy Games played with it (imagine Unity with D instead of C#), but now I fear it has lost the opportunity.
IMHO beginning with the addition of Linq C# walks the way of C++. It is increasingly becoming a language of many faces / aspects. Don't know if this is a good thing.
Even C23 isn't the same as K&R C.
My only gripe with the language I think is async/await but that isn’t a deal breaker considering only Go and Java (eventually) have decided against it.
AOT C# has existed since 2002 in various forms actually.
I wouldn't bet too much on MAUI, in fact I would kind of bet on older GUI stacks until the UI political wars at Redmond kind of settle down on what they actually want to bring forward.
Uno and Avalonia are safer bets for cross platform .NET applications.
At the time there was an alternative standard library called Tango that was more object oriented like Java or .NET, combined with a desktop UI library (desktop apps were my focus at the time) that was similar to .NET's Windows.Form (I think it was called DFL, and surprisingly the site seems to be still online [0]), plus the native speed & simple approach of D1 I really thought it was going to stay relevant for years.
Sadly, then D2 appeared, the community fragmented over time, then Tango was disbanded, and at some point I think I moved on to web development with Flash.
Here's a project I wrote in Nim that even if you've never even seen Nim before you would understand what's going on. https://github.com/sergiotapia/torrentinim