Awesome D 
A curated list of awesome D frameworks, libraries and software.
Inspired by awesome-python.
Most documents and links are collected from the D forum, the D wiki, and the D package repository. Exploring GitHub
is also helpful, as many libraries are hosted there. If you know of an
interesting D project, please let us know via GitHub
issues or by editing
this file.
Contents
- Basic Information
- Documents
- Language Related
- Continuous Integration
- Compiler for Other Languages
- OS
- Common
- Networking/Web
- Database
- CLI
- GUI
- Game Development
- Internationalization (i18n) / Globalization
- Image Processing
- Machine Learning
- Scientific
- Others
Official Website
Official Website URLs.
Getting Help
For when you’re stuck.
People
The people that made D the language it is.
- Walter Bright - Father
of D. Walter Bright is the creator and first implementer of the D
programming language and has implemented compilers for several other
languages.
- Andrei Alexandrescu, PhD - C++
guru. Author of The D Programming Language and Modern C++
Design. With Walter Bright, Andrei co-designed many important
features of D and authored a large part of D’s standard library. Andrei
works as a trainer in advanced C++ programming and algorithms and is now
actively evangelizing D in the organization.
- Átila Neves - Deputy
Leader of D.
- YOU - Please add your information if you’ve done
something interesting in D. It is you, the awesome people that made D
awesome.
Events
- DConf - the premier event where D
luminaries exchange knowledge, insight, and inspiration on everything
related to the D language and its ecosystem.
Organizations
Organizations that contribute to D projects.
- D Programming Language -
Official Organization, hosts DMD, Phobos and other official tools and
libs.
- LDC Developers - LDC
releated projects.
- DerelictOrg - A GitHub
organization hosting all Derelict bindings including OpenGL and other
multimedia/game related library bindings. (OpenGL 3, Bgfx, ENet, SDL 2,
GLFW 3,OpenGLES, Free Image, Assimp3, libtheora, libogg, libvorbis,
SFML 2, libpq, PhysicsFS, Open Dynamics Engine, Lua, DevIL, OpenAL,
ALURE).
- DlangScience -A focal
point and first port of call for scientific libraries and tooling for
D.
- Circular Studios -
We are a group of game developers at Rochester Institute of Technology
building games and game tech. Hosts Dash, a 3D game
engine written in D, and other related libs.
- EMSI - A Career
building company that uses D as their main language. Hosts their
opensource projects.
- infognition -
Infognition is a self-funded and self-sustained company specializing in
video processing and compression technologies for end-users and
developers. They provide several opensource video related applications
& tools written in D, hosted on bitbucket. They are also
porting their main product–Video Enchanser
from C/C++ to D.
- libmir - D’s numeric library
development team
- sociomantic labs - Berlin
based company specializing in real-time bidding for online advertising.
Main sponsor of the annual D language
conference. Has open-sourced large parts of their codebase as part
of the tsunami
organization.
- Symmetry Investments
- Symmetry Investments LP is an investment management company with
approximately US$4.7 billion in assets under management as of 31
December 2018. Main sponsor of the Symmetry Autumn
of Code. Have sponsored the development of excel-d,
dpp, autowrap, mir-algorithm, and
various other projects.
- HuntLabs - A technology group
using DLang. Have pure D language implementation of quickly develop
server-side applications and build distributed system services.
Books
D related books. You can find another list of books on the
Books D wiki page.
- TDPL
- The D Programming Language by Andrei Alexandrescu.
- Programming in
D - A very detailed book about programming in D by Ali Çehreli
covering many areas of the language. Has a free online version and is
suitable for beginners.
- D
Cookbook - A recipe-packed reference guide filled with practical
tasks that are concisely explained to develop and broaden the user’s
abilities with the D programming language. by Adam D. Ruppe. Here is an
interesting review
of the book.
- Learning
D - This book is intended for those with some background in a
C-family language who want to learn how to apply their knowledge and
experience to D. (…) This book will help you get up to speed with the
language and avoid common pitfalls that arise when translating C-family
experience to D.
- D
Web Development - Whether you are new to the world of D, or already
have developed applications in D, or if you want to leverage the power
of D for web development, then this book is ideal for you.
Tutorials
D related tutorials.
Blogs
D related blogs.
- blog.dlang.org - Official
blog.
- /r/d_language on
Reddit - A feed of news and blog posts about D.
- This week in
D - A weekly overview of activity in the D community and brief
advice columns to help you get the most out of the D Programming
Language.
- Planet D - A repository of
co-authored D-specific blogs maintained by Vladimir Panteleev.
- D Idioms - A great
blog for many useful idioms with D programming.
- GTK-D coding - Simple examples
of how to use GtkD to build GUI applications.
- Tasty D -
A blog about learning the D programming language and various D language
trivia.
Articles
D related Articles.
Package Management
Libraries for package and dependency management.
- code.dlang.org - Official D
library repository. Backed by dub.
- dub - Official package
and build management system for D.
Compilers
Compile software from source code.
- dmd - The reference
compiler for the D programming language. Stable, builds insanely fast,
very good for learning and rapid prototyping/development. Currently the
frontend is implemented in D, and shared between dmd, ldc and gdc, the
backend is implemented in C++.
- ldc - The
LLVM-based D compiler. Uses the DMD frontend and LLVM backend. Builds
slower than dmd, but generates more optimized code than DMD. It supports
all the target platforms of LLVM.
- gdc - GNU D
Compiler. Use DMD frontend and GCC backend. Currently targets the most
platforms due to the use of GCC. Generated code runs faster than DMD in
most cases, on par with LDC. In the process of integration with the
official GCC toolchain.
WIP Compilers
- sdc - The Snazzy D
Compiler. Written in D. Grows Smarter every day.
Tools for more productive D development.
- D-Scanner
- Swiss-army knife for D source code (linting, static analysis, D code
parsing, etc.)
- dfmt -
formatter for D source code
Manage projects and compile software from source code.
- dub - De facto official
package and build management system for D. Will be included officially
soon.
- scons-d - Scons has built-in
support for building D projects, thanks to Russel Winder.
- premake -
Premake has built-in support for D projects
- reggae - meta
build system in D
- Makefile -
Makefile template for D projects
- cmake-d - CMake D
Projects
- cook2 - Fast
incremental build tool intended for projects in D
- button - A universal
build system to build your software at the push of a button.
- wild - Wild build system,
used to build the PowerNex kernel
- XMake - XMake is a crossplatform
build system, that incorporated the D language and also has support for
DUB repositories.
- wox - A highly
flexible recipe build system inspired by Make
IDEs & Editors
Integrated Development Environment.
- Visual D - Visual
Studio extension for the D programming language.
- IntelliJ D
Language - Support for the D programming language within IntelliJ
IDEA.
- Dexed - IDE for the
D programming language, its compilers, tools and libraries.
- Dutyl - Vim
plugin that integrates various D development tools
- code-d
[open-vsx]
- Visual Studio Code extension using serve-d
- ide-d - Atom extension
for D using serve-d
- DCD -
Independent auto-complete program for the D programming language. Could
be used with editors like vim, emacs, sublime text, textadept, and zeus.
See editors
support.
- serve-d - Language
Server Protocol (LSP) implementation for D. Adds modern IDE features to
any editor with LSP support (VSCode, Atom, Vim/Neovim and others)
Lexers, Parsers, Parser
Generators
- libdparse
- A D language lexer and parser, (possibly) future standard D
parser/lexer.
- Martin Nowak’s
Lexer - A lexer generator.
- Mono-D’s DParser -
A D parser written in C# and used in Mono-D.
- Pegged - A
Parsing Expression Grammar (PEG) module written in D.
- Goldie
- Goldie Parsing System.
- ctpg - Compile-Time
Parser (with converter) Generator written in D.
- dunnart - LALR(1)
Parser Generator written in D.
Preprocesors
- warp - A fast
preprocessor for C and C++ used in Facebook infrastructure. Written by
Walter Bright.
Version Managers
- dvm - A small
tool to install and manage DMD (self-hosting) compiler.
- ldcup - A small tool
to install and manage LDC2 (LLVM backend) compiler.
GitHub Actions
- setup-dlang -
Install D compilers & DUB inside GitHub Actions
- dub-upgrade
- Run
dub upgrade trying to repeat on network failure and
using package cache on GitHub Actions
Testing Frameworks
- unit-threaded -
Multi-threaded unit test framework
- silly - Better test
runner for the D programming language. No nonsense.
Javascript
- higgs - Higgs
JavaScript Virtual Machine, implemented in D.
Operating Systems
Operating Systems written in D.
General Containers
Data structures and container libraries.
- EMSI
containers - Containers that do not use the GC
- memutils -
Overhead allocators, allocator-aware containers and lifetime management
for D objects
- dlib.container -
generic data structures (GC-free dynamic and associative arrays and
more)
- std.rcstring -
A reference counted string implementation for D’s build in string
construct
Core Utilities
General-purpose utility libraries.
- NuMem - No-GC memory
managment utilities for DLang.
- NuLib - D “standard”
library built ontop of numem.
- Joka - A nogc utility
library.
Web Frameworks
Networking libraries.
- dlang-requests
- HTTP client library inspired by python-requests
- Handy-Httpd
- A simple, lightweight, and well-documented HTTP server that lets you
bootstrap ideas and have something up and running in minutes.
- serverino - Small
and ready-to-go http server, in D
- libasync -
Cross-platform event loop library of asynchronous objects
- libhttp2 - HTTP/2
library in D, translated from nghttp2
Full stack web frameworks.
- vibe.d - Asynchronous I/O Web
Framework that doesn’t get in your way, written in D.
- arsd - Adam D.
Ruppe’s web framework.
- cmsed - A component
library for Vibe that functions as a CMS.
RPC libraries.
- Apache
Thrift - A lightweight, language-independent, featureful RPC
framework. Thrift provides clean abstractions for data transport, data
serialization, code generation, and application level processing. Apache Thrift Page
- Hprose - A very
newbility RPC Library for D, and it support 25+ languages now.
Static Site Generator.
- DSSG - A static site
generator with a different approach.
Data Serialization
JSON, XML, protobuf and other data serialization
libraries.
- cerealed -
Serialisation library for D
- dproto - Google
Protocol Buffer support in D.
JSON libraries.
- vibe.data.json -
JSON functions in Vibe.d. Currently the best implementation I used.
- fast.json - A library
for D that aims to provide the fastest possible implementation of some
every day routines.
- std.json - D’s
standard library JSON module. Needs refinement.
- painlessjson -
Convert between D types and std.json.
- std.data.json
- Phobos candidate for JSON serialization (based on Vibed)
- asdf - Cache oriented
string based JSON representation for fast read & writes and
serialisation.
XML libraries.
- orange -
General purpose serializer (currently only supports XML)
- std.experimental.xml
- Phobos candidate for a XML serialization
- arsd dom.d -
an xml/html DOM based on what Javascript provides in browsers
- newxml -
Successor of std.experimental.xml. DOM compatible, and also has a SAX
parser.
Database Clients
Clients and bindings to C bliencts for relational and nosql
databases.
- vibe.d - Vibe.d has
internal support for Redis and MongoDB, which are very stable. Soon, the
database drivers will be separated into independent projects.
- arsd - Adam D.
Ruppe’s library; in addition to a Web backend, it also has support for
database access with database.d, sqlite.d, mysql.d and postgres.d.
- hibernated -
HibernateD is an ORM for D (similar to Hibernate).
- mysql-native -
A MySQL client implemented in native D.
- ddb - Database access
for D2. Currently only supports PostgreSQL.
- ddbc - DDBC is a DB
Connector for D language (similar to JDBC). HibernateD (see below) uses
ddbc for database abstraction.
- dvorm - An ORM for D
with Vibe support. Works with vibe.d and mysql-d, giving it the ability
to access MongoDB and MySQL.
- Tiny Redis -
Redis driver for D. Fast, Simple, Stable. Has no dependencies.
- libpb - INteract with
a PocketBase database
CLI Libraries
- terminal.d
- Part of Adam Ruppe’s arsd library supporting
cursor and color manipulation on the console.
- commandr - A modern,
powerful commmand line argument parser.
- argsd - A command line
and config file parser for DLang
- luneta - A
command-line fuzzy finder.
- argparse -
Flexible parser of command line arguments.
- gogga - simple
easy-to-use colorful logger for command-line applications
- scriptlike -
Utility library to aid writing script-like programs in D.
- d-colorize -
A port of the ruby library colorize. It add some
methods to set color, background color and text effect on console easier
using ANSI escape sequences.
- dexpect - A D
implementation of the expect framework. Handy for bash emulation.
- Argon - A
processor for command-line arguments, an alternative to Getopt, written
in D.
CLI Applications
- Literate - A
literate programming tool for any language.
- onedrive - #1
Free OneDrive Client for Linux.
- tshare - Fast file
sharing from cli, using transfer.sh.
- todod - Todod is a
command line based todo list manager. It also has support for shell
interaction based on linenoise.
GUI Libraries
Libraries for working with graphical user interface
applications.
- giD - GObject
Introspection D Package Repository.
- Fluid - A
declarative cross-platform user interface library for D.
- DLangUI - Cross
Platform GUI for D programming language. My personal favorate, because
it is written in D(not a binding), and is cross platform. DLangUI also
has a good showcase in the IDE DLangIDE.
- GtkD - GtkD is
a D binding and OO wrapper of GTK+. GtkD is actively maintained and is
currently the most stable GUI lib for D.
- tkD - GUI
toolkit for the D programming language based on Tcl/Tk.
- dqml - Qt Qml bindings
for the D programming language.
- Sciter-Dport - D
bindings for the Sciter - crossplatform
HTML/CSS/script desktop UI toolkit.
Note: You can also find a list of GUI libs on wiki.dlang.org,
but not all of the libraries are actively maintained now.
GUI Applications
- tilix - A tiling
terminal emulator for Linux using GTK+ 3.
- Inochi
Creator - Inochi2D Rigging Application.
- Inochi
Session - Application that allows streaming with Inochi2D
puppets.
Game Bindings
Bindings to game development related libraries in C, C++, and
other languages.
- raylib-d - D
bindings for raylib.
- sokol-d - D
bindings for the sokol headers.
- DAllegro5 - D
binding/wrapper to Allegro 5, a modern game programming library.
- DSFML - A static
binding of SFML in a way that makes sense for D. See http://dsfml.com/.
- Godot-D - D
language bindings for the Godot Engine’s GDNative API.
- BindBC - Bindings compatible
with
-betterC and @nogc, using bindbc-loader.
- DerelictOrg - Bindings,
now largely outdated. BindBC is its modern successor.
Game Libraries
D libraries for game development.
- InMath - Games math
library for D.
Libraries for 2D-related projects.
- gfm - D gamedev
toolkit.
- Parin - A
delightfully simple 2D game engine.
- PixelPerfectEngine
- 2D graphics engine written in D.
- HipremeEngine
- Cross Platform D-Lang Game Engine with scripting support.
Libraries for 2D/3D-related projects.
- rengfx -
lightweight, expressive, extensible 2D/3D game engine.
Libraries for 3D-related projects.
Games
Internationalization
- bindbc-icu - bindbc
bindings for the unicode ICU library.
Image Processing
- ArmageddonEngine
- Vladimir Panteleev’s ae library has a package for image processing in
functional style, which is described in the article Functional
Image Processing in D.
- Blogsort - A
simple Windows app for viewing photos and preparing them for a
blog.
- dlib.image - image
processing (8 and 16 bits per channel, floating point operations,
filtering, FFT, HDRI, graphics formats support including JPEG and
PNG)
- color.d
+ bmp.d,
jpg.d,
png.d
- basic color struct, HSL functions and reading and writing image
files
- opencvd -
Unofficial OpenCV binding for D
Machine Learning
- vectorflow -
Nexflix’s opensource deep learning framework.
- bindbc-onnxruntime
- bindbc bindings to Microsoft’s cross-platform, high performance ML
inferencing and training accelerator
- grain2 -
Autograd and GPGPU library for dynamic neural networks in D
- tfd - Tensorflow
wrapper for D
Parallel Computing
Scientific
Scientific programming.
- scid - Scientific
library for the D programming language
- dstats - A
statistics library for D.
- mir - Sandbox for some
mir packages: sparse tensors, Hoffman and others.
- mir-algorithm -
N-dimensional arrays (matrixes, tensors), algorithms, general purpose
library.
- mir-random -
Advanced Random Number Generators.
- decimals - Decimal
library for D.
Language Processing
- bindbc-mecab -
bindbc MeCab binding (Part-of-Speech and Morphological Analyzer for
Japanese)
Text Processing
- hunt-markdown - A
markdown parsing and rendering library for D programming language.
Support commonMark.
- eBay’s TSV
utilities - Filtering, statistics, sampling, joins and other
operations on TSV files. Very fast, especially good for large
datasets.
Logging
Print with care.
- dlog - extensible
logging framework with message transformation support and custom loggers
and contexts
- std.experimenatal.logger
- Phobos’s upcoming standard logging facility.
- dlogg - Logging for
concurrent applications and daemons with lazy and delayed logging, logrotate support.
Configuration
Parsing configuration files.
- sdlang - An SDL
(Simple Declarative Language) library for D.
- D:YAML -
YAML parser and emitter for the D programming language.
- inifile-D - A
compile time ini file parser and writter generator for D
Blog Engine
Hosting blogs yourself.
- mood - simple
vibe.d based blog engine
Dependency Injection
Apply inversion of control.
- Poodinis - A
dependency injection framework for D with support for autowiring.
Unmaintained
Old or archived projects saved for reference.
- dunit -
Advanced unit testing & mocking toolkit
- hunt - A refined core
library for D programming language. The module has concurrency /
collection / event / io / logging / text / serialize and more.
- hunt-time - A
time library and similar to Joda-time and Java.time api.
- hunt-validation -
A data validation library for DLang based on hunt library.
- collie - An
asynchronous event-driven network framework written in dlang, like netty
framework in D.
- hunt-net -
High-performance network library for D programming language,
event-driven asynchonous implemention(IOCP / kqueue / epoll).
- hunt-http -
HTTP/1 and HTTP/2 protocol library for D.
- Hunt
Framework - Hunt is a high-level D Programming Language Web
framework that encourages rapid development and clean, pragmatic design.
It lets you build high-performance Web applications quickly and
easily.
- grpc - Grpc for
D programming language, hunt-http library based.
- kissrpc - Fast and
light, flatbuffers based rpc framework.
- hunt-gossip -
A Apache V2 gossip protocol implementation for D programming
language.
- hunt-cache - D
language universal cache library, using radix, redis and memcached.
- flatbuffers -
D Programming Language implementation of the google flatbuffers
library.
- hunt-entity -
Hunt entity is an object-relational mapping tool for the D programming
language. Referring to the design idea of JPA, support PostgreSQL /
MySQL / SQLite.
- hunt-database -
Hunt database abstraction layer for D programing language, support
PostgreSQL / MySQL / SQLite.
- hunt-console
- Hunt console creation easier to create powerful command-line
applications.
- DWT - A
library for creating cross-platform GUI applications. GWT is a port of
the Java SWT library to D. DWT was promoted as a semi-standard GUI
library for D, but unfortunately didn’t catch up popularity yet.
- LibUI -
Dynamic Binding for libui
d.md
Github