Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

D tools

GitHub tag Bugzilla Issues Buildkite license

This repository hosts various tools redistributed with DMD or used internally during various build tasks.

Program Scope Description
catdoc Build Concatenates Ddoc files.
changed Internal Change log generator.
chmodzip Build ZIP file attributes editor.
ddemangle Public D symbol demangler.
detab Internal Replaces tabs with spaces.
dget Internal D source code downloader.
dman Public D documentation lookup tool.
dustmite Public Test case minimization tool.
get_dlibcurl32 Internal Win32 libcurl downloader/converter.
rdmd Public D build tool.
rdmd_test Internal rdmd test suite.
tests_extractor Internal Extracts public unittests (requires DUB)
tolf Internal Line endings converter.
updatecopyright Internal Update the copyright notices in DMD

To report a problem or browse the list of open bugs, please visit the bug tracker.

For a list and descriptions of D development tools, please visit the D wiki.


On a Posix system all tools can be built with:

make -f posix.mak all

Using DUB as a build tool

Most tools can also be built with DUB:

dub build :ddemangle

Running DUB tools

Some tools require D's package manager DUB. By default, DUB builds a binary and executes it. On a Posix system, the source files can directly be executed with DUB (e.g. ./tests_extractor.d). Alternatively, the full single file execution command can be used:

dub --single tests_extractor.d

Remember that when programs are run via DUB, you need to pass in -- before the program's arguments, e.g dub --single tests_extractor.d -- -i ../phobos/std/algorithm.

For more information, please see DUB's documentation.