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:

http://www.dsource.org/projects/ddmd/browser

http://hg.dsource.org/projects/ddmd/

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

# hg clone http://hg.dsource.org/projects/ddmd/

Project status

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 http://www.dsource.org/forums/viewtopic.php?p=24262#24262 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

Windows:

BuildInstructions/Windows

Linux:

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 http://www.dsource.org/forums/viewtopic.php?p=24262#24262.

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.

IRC

Join us at irc://irc.freenode.net, channel #ddmd

Questions?

Ask your questions in forums: http://www.dsource.org/forums/viewforum.php?f=250 or contact me directly via 2korden[@]gmail.com