Areas of D usage
This list highlights a selection of applications written in D from various areas.
For an overview of D's differentiating features, have a look at the
D Overview page.
Binary compatibility with existing libraries is important in large-scale
projects.
Remedy Entertainment has successfully shipped the first
AAA game to use D code for XBox One and Windows 10.
For more details, see Ethan Watson's
presentation.
Many pure-D open source projects show the rising popularity
of D among game developers.
Examples are the 3D game engine
Dagon and the cross-platform D game development engine
HipremeEngine.
D's ability to combine low and high-level code in one language, asynchronous
features like Fibers, and compile-time function execution, makes it well suited
for high-performance asynchronous I/O, concurrency and web applications.
The
vibe.d framework is D's
flagship solution for all needs pertaining to networking and asynchronous
event handling.
For an example success story, see the DConf presentation
Mobile Game Server Backend in D.
D's high productivity is also beneficial when creating GUI applications.
Some examples are the Linux tiling terminal emulator
tilix,
the D development environment
DLangIDE, which is itself based
on the cross-platform D library
dlangui.
Thanks to binary compatibility, all existing GUI libraries written in C, C++,
and other languages can be
easily accessed.
D is used in the reference DMD compiler itself, Facebook's fast C/C++ preprocessor
warp, the Higgs JavaScript Virtual Machine, and more.
D's compile time function execution allows generating custom grammar parsers
at compile time - see e.g. Pegged
as an example.
D is a systems programming language and is well suited for bare metal
or kernel development. It's easy to write an Operating System in D, and many
project have proven so. To name a few:
- PowerNex - A kernel written in D
- XOmB - Exokernel operating system
- Trinix - Hybrid operating system for x64 PC
Using
LDC (the LLVM D compiler)
enables targeting most popular CPU architectures,
starting from ARM and MIPS-based embedded systems and smartphones,
ranging to server systems based on POWER and Sparc, and up to the "big iron" z Systems.
D is similar to popular scientific languages like Python in that it provides
the conveniences of a modern language with a friendly syntax, and is
garbage collected by default. Convenience features allow spending time on rapid prototyping,
rather than fighting memory issues that few scientific programmers need to worry about.
However, it is also a compiled, statically typed language that can produce code as fast as C,
allows easily parallelizing algorithms and pipelines,
and, as a system language, provides complete control (including manual memory management)
to get those last few extra cycles.
A few specific spotlights:
Like NumPy, D is convenient and offers the ability to bind to existing C libraries.
Unlike NumPy, D does not become slow for computations not covered by preexisting libraries,
and does not force its user to escape into another language.
Additionally, due to its compile-time introspection capabilities, D enables
further optimizations for superior performance. See Andrei's talk
Fastware on this topic.
There is excellent support for multidimensional arrays with third-party libraries
such as
mir.
For most programmers used to developing for a modern CPU,
working with GPUs for general purpose computation can appear daunting and laborious.
Even seasoned users will admit that the performance improvements are often not worth the extra effort.
Thanks to the power of D’s type system and static introspection,
GPU Programming is
safer and easier to use than traditional APIs with no compromise in performance.
D's high-level abstraction and fast execution make it well-suited for scientific
analysis. For example,
D's ranges
are a natural fit for pipes and data streams.
One can start from a small D script with a small subset of data for
an analysis, and easily switch to the full set by enabling optimizations
for superior performance.
Read Adroll's testimonial
"D is for Data Science"
on why D is a keystone language for their critical infrastructure.
eBay recently open-sourced their internal
data processing utilities
used in their large-scale data mining environment.
D's multi-paradigm (imperative, structured, object oriented, generic, functional programming
purity, and even assembly) approach allows teaching in one language and gradually
explaining new features without needing to switch to a different language.
At universities, interpreted languages are commonly taught because of their memory safety.
SafeD, a memory-safe subset of D, provides
safety and ease of use comparable to interpreted and JIT-compiled languages
while retaining the efficiency of native code.
Beginners will also benefit from garbage collection, which helps
write simple code without requiring any knowledge of explicit memory management.
More sophisticated memory management can be introduced in an advanced
learning stage.
D's blazingly fast compilation allows it to be used as a high level,
productive scripting language, but with the
advantages of static type checking.
Last but not least, there are books and tutorials freely available online
which can be used as resources.