Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

Areas of D usage

Industry
Systems Programming
Research
Academia

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.

Industry

Companies usually have codebases that are considerably larger than most hobbyist projects, thus an important goal is to write elegant code that is easy to understand, and therefore maintain. In comparison to other languages, D has many features that help keep a codebase clean and boilerplate-free - thus increasing productivity. Some examples of simple and yet powerful D features are templates and Uniform Function Call Syntax.

Pure functions, the memory-safe subset SafeD, special unittest blocks, contracts and a sane approach to error handling aid in shipping a bug-free product. If at the end of the day performance matters  —  D has you covered! You can tune your code with tools starting from conditional compilation over SIMD vector optimizations to inline assembler, and many more.

D has been used in numerous diverse domains. A short selection is presented below. For a complete overview, see the list of organizations using the D Language.

Games

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 cross-platform 3D game engine Dash and the D game development toolkit gfm.

Web applications

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.

GUI Applications

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.

Systems Programming

Compilers

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.

Operating systems

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

Embedded applications

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.

Cutting-edge research

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:

Numerical computing

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.

GPU Programming

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.

Data science

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.

Academia

Teaching

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.