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.