D Programming Language
Ownership, Memory Management, and Safety
- Several commenters praise D’s ownership/borrowing model as far simpler than Rust’s while still offering good safety options (GC,
@safe,@nogc, “betterC”). - D is described as “systems programming with optional GC”: you can prototype with GC, then selectively replace hot paths with manual allocation, even down to C interop.
- Others argue this flexibility fragments the ecosystem (GC vs
@nogc, SafeD, betterC) and makes it unclear what “idiomatic D” is. - Debate over GC:
- One camp says including a GC in core pushed D into the Java/C#/Go space and cost it the chance to be the C++ replacement.
- Another camp calls GC D’s “superpower,” noting fine-grained GC control and the ability to eagerly free memory, plus seamless C compilation/interop.
- Side discussion reframes Rust’s lifetimes/refcounting as a kind of GC in academic terms, and distinguishes many different GC/runtime tradeoffs.
Metaprogramming, Compile Times, and Expressiveness
- D gets consistent praise for compile-time features: CTFE,
static if,static foreach, mixins, and relatively friendly templates. - Compile times are repeatedly highlighted as “Turbo Pascal–like” despite C++-level power.
- Compared to Rust, D’s compile-time reflection and metaprogramming are seen as more direct and less macro-heavy, though template-heavy code can still be opaque.
Adoption, Ecosystem, and “Missed Moment”
- Many feel D “missed its window”: early confusion around D1 vs D2, Phobos vs Tango, GC vs no-GC, plus late FOSS compiler licensing and slow GCC integration.
- Lack of strong corporate backing is contrasted with Rust’s Mozilla origin and Zig’s current hype.
- Some argue no “old” language ever really gains traction; others counter with Python’s slow burn to mainstream.
- Concerns include: small community, limited tooling around popular domains (e.g., WASM, cross‑platform GUI, major platform UIs), and almost no high-salary job market.
Where D Shines (According to Commenters)
- As a “modern, sane C++” with modules, fast compiles, and better ergonomics.
- As glue around C libraries: binary compatibility, low FFI overhead, no heavy VM, and more guardrails than C/C++.
- For teams that value pragmatism and escape hatches over strongly opinionated paradigms.
LLMs and D
- Some worry about “lack of LLM training data”; others report major LLMs generate D code surprisingly well, sometimes cleaner than their C++ output, with the main limit being project-size/context, not the language itself.