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.

Articles

More articles can be found on the corresponding wiki page.

FAQ

Frequently answered questions about D.

const(FAQ)

Frequently answered questions about D's const and immutable.

Floating Point

Don Clugston goes into detail about floating point numbers in D and the pitfalls one may encounter.

Warnings

This is about compiler warnings in general, and dmd's warnings in particular.

Rationale

Questions about the reasons for various design decisions for D often come up. This addresses many of them.

Builtin Rationale

D offers several capabilities built in to the core language that are implemented as libraries in other languages. This article answers why.

C to D

Coming from C? Here are various examples comparing the D way to the C way.

C++ to D

Coming from C++? Here are various examples comparing the D way to the C++ way.

C Preprocessor vs D

D doesn't have a preprocessor. This article shows how to do in D what would be a task for the preprocessor in C.

Code coverage analysis

D compilers come with a builtin code coverage analyzer. This article explains why and how to use it.

Exception Safety

This article is about exceptions and how RAII and scope guard statements relate to them.

Hijacking

Function hijacking is when old code accidentally calls a newly added or changed function because it shadows the intended one. This article is about how D prevents different kinds of hijacking.

Introduction to std.datetime

Jonathan M Davis presents std.datetime which was added in version 2.052 (Jul 10, 2011), and compares it to the superseded std.date.

Lazy Evaluation

Walter Bright goes into the details of lazy parameters in D.

Migrating to Shared

Since version 2.030 (May 11, 2009) D uses thread local storage (TLS) by default for static and global variables. The article shows the alternatives to TLS that are available in D.

Mixins

A short article about D's mixin statement which allows to insert arbitrary code from a string, and how it compares to the C preprocessor.

Regular Expressions

Dmitry Olshansky shows how to use regular expressions in D with std.regex.

SafeD

Bartosz Milewski writes about SafeD, the memory-safe subset of D.

Templates Revisited

Walter Bright writes about how D improves upon C++ templates.

Compile-time Argument Lists

A compile-time list is a list of compile-time entities - types, symbols (names) and expressions (values). This article shows how to work with them.

Variadic Templates

This article is about the D idiom of implementing variadic functions with variadic templates.

D Slices

Steven Schveighoffer writes about slices and dynamic arrays in D. Unfortunately, this article uses slightly different terminology than the language reference: What the article calls a slice is a dynamic array in the language reference, and what the article calls a dynamic array is not named specifically by the language reference. Still, the article is a great help in getting a good understanding of D's array semantics.

D's Contract Programming vs C++'s

A comparison between D's and C++'s contract programming.

Template Comparison

A comparison between D's and C++'s templates.

Writing Shared Libraries on Linux

A guide to writing shared libraries with D on Linux.