Note: This website is archived. For up-to-date information about D projects and development, please visit

Welcome to DDMD

DDMD is a direct port of the official Digital Mars D compiler to the D Programming Language.

It is designed with 2 goals in mind: to be a drop-in replacement for DMD, and to be capable of being integrated into other projects written in D (source-code analyzer or an IDE, for example).

It attempts to be binary compatible with DMD (i.e. produce identical binaries) for a very simple reason - following this makes it much easier to identify bugs.

DDMD is written in D2/Phobos, initially based on DMD2.032, now updated to DMD2.040.

Browse source code online:

Or check it out using the following command (requires Mercurial client installed):

# hg clone

Project status

As of 04-28-2015, the code is in this project's repository hasn't been updated for about 2 years. On the other hand, code to autogenerate D code for the DMD frontend has been integrated into the official DMD repository at

This project is currently in an alpha stage. It successfully compiles druntime and Phobos. I'd say it's a huge progress, but don't hold your breath too much if you are looking for a drop-in DMD replacement - complex programs are unlikely to compile (yet).

The port is almost complete, but some methods are stubbed-out (with assert(false); as their implementation). It means that you can use it as if it were complete, but it will terminate as soon as first unimplemented method is invoked, giving you a nice stack trace just before it crashes. Which is a good thing - you know exactly what method needs to be ported in order to advance.

Go on, grab it and give it a test. Or come back in a while once it goes out of an alpha.

Currently, there are 427 unimplemented methods in DDMD (last updated on October, 30)

Known Bugs/Limitations

* Only Win32/x86 platform is supported
* Only Linux32 and Win32 on x86 are supported (See for getting started on linux)
* -g flag is not supported
* Garbage collector is temporarily disabled (it causes the compiler to malfunction for some reason)
Found a bug? Consider submitting a ticket!

Future plans

The code is currently too C/C++-ish. Arrays of void* are used all over the place to store Objects (type unsafe), casts everywhere, no templates, variables are declared at the top of functions, etc. Some parts will hopefully be rewritten using modern and cool D features to improve code readability and safety.

Other goals include structural changes into the code for stability, multi-threading support, absence of memory leaks, etc.

Build instructions




For revisions from October 3, 2010 onward, Linux users should be able to use the new build instructions here: BuildInstructions/Windows

For older revisions, or to build manually, see

Help wanted

Interested in a project? Consider contributing to it! The is a lot of tasks that need to be done before a release, ranging from elemental to moderate in difficulty. Code is open to everyone, just make sure your changes won't break other peoples' improvements.


Join us at irc://, channel #ddmd


Ask your questions in forums: or contact me directly via 2korden[@]