awesome-d
A curated list of awesome D documents, frameworks, libraries and software. Inspired by awesome-python.
https://github.com/dlang-community/awesome-d
Last synced: 16 days ago
JSON representation
Alternative / WIP Compilers
- OpenD - A fork of the D language focused on practical and incremental improvements.
Articles
Bare metal / kernel development
- Purity in D - An article that explains the design principles behind D's purity feature.
- Hidden treasures in the D standard library - An article talking about several useful functions and templates in Phobos.
- D is for Data Science - A great post about how D is suitable for data science, particularly, replacing the role of python scripts for fast prototyping.
- D Functional Garden
- Origins of the D programming language - By Walter Bright, Andrei Alexandrescu, Michael Parker. The history and development of D language.
- Porting D Runtime to ARM - A study about porting a minimal D runtime to ARM Cortex-M preprocessors.
- Hidden treasures in the D standard library - An article talking about several useful functions and templates in Phobos.
Basic
Bare metal / kernel development
- 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.
Blog Engine
Language Processing
Blogs
Bare metal / kernel development
- /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.
- GTK-D coding - Simple examples of how to use GtkD to build GUI applications.
- 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.
- Tasty D - A blog about learning the D programming language and various D language trivia.
- GTK-D coding - Simple examples of how to use GtkD to build GUI applications.
- Planet D - A repository of co-authored D-specific blogs maintained by Vladimir Panteleev.
Books
- Books
- 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.
- 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.
- TDPL - The D Programming Language by Andrei Alexandrescu.
Build Tools
Bare metal / kernel development
- scons-d - Scons has built-in support for building D projects, thanks to Russel Winder.
- button - A universal build system to build your software at the push of a button.
- dub - De facto official package and build management system for D. Will be included officially soon.
- 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
- wild - Wild build system, used to build the PowerNex kernel
- wox - A highly flexible recipe build system inspired by Make
- XMake - XMake is a crossplatform build system, that incorporated the D language and also has support for DUB repositories.
CLI Applications
- Soulfind - Soulseek server implementation in D.
CLI Libraries
Status page
- dexpect - A D implementation of the expect framework. Handy for bash emulation.
Command Line
XML
- 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.
- terminal.d - Part of Adam Ruppe's arsd library supporting cursor and color manipulation on the console.
- argparse - Flexible parser of command line arguments.
- hunt-console - Hunt console creation easier to create powerful command-line applications.
- tilix - A tiling terminal emulator for Linux using GTK+ 3.
- scriptlike - Utility library to aid writing script-like programs in D.
- todod - Todod is a command line based todo list manager. It also has support for shell interaction based on linenoise.
- 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.
- argsd - A command line and config file parser for DLang
- darg - Robust command line argument parsing for D.
- commandr - A modern, powerful commmand line argument parser.
- luneta - A command-line fuzzy finder.
- dlog - extensible logging framework with message transformation support and custom loggers and contexts
- gogga - simple easy-to-use colorful logger for command-line applications
Compilers
Bare metal / kernel development
- 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.
Configuration
Language Processing
- 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
- sdlang - An SDL (Simple Declarative Language) library for D.
- arsd.ini - A configurable INI parser with support for multiple “dialects” of the format.
Containers
Bare metal / kernel development
- 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
Cryptography
Language Processing
Database clients
XML
- 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.
- 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.
- 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.
- 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.
- hibernated - HibernateD is an ORM for D (similar to Hibernate).
- 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
Database Clients
- Tiny Redis - Redis driver for D. Fast, Simple, Stable. Has no dependencies.
Data serialization
Binary Serilization
- flatbuffers - D Programming Language implementation of the google flatbuffers library.
- cerealed - Serialisation library for D
- dproto - Google Protocol Buffer support in D.
JSON
- vibe.data.json - JSON functions in Vibe.d. Currently the best implementation I used.
- std.json - D's standard library JSON module. Needs refinement.
- fast.json - A library for D that aims to provide the fastest possible implementation of some every day routines.
- 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
- dom.d - an xml/html DOM based on what Javascript provides in browsers
- orange - General purpose serializer (currently only supports XML)
- std.experimental.xml - Phobos candidate for a XML serialization
Data Serialization
- newxml - Successor of std.experimental.xml. DOM compatible, and also has a SAX parser.
Dependency Injection
Language Processing
Dev Tools
Bare metal / kernel development
End-user applications
XML
- Cryptic-Resolver - Manage cryptic commands' names, acronyms and your own knowledge base (a command line utility)
- Inochi Creator - Tool to create and edit Inochi2D puppets
- Literate - A literate programming tool for any language
- onedrive - #1 Free OneDrive Client for Linux
- tshare - fast file sharing from cli, using transfer.sh
Events
Game Bindings
XML
- bindbc-loader
- bindbc-opengl
- bindbc-glfw
- bindbc-sdl
- bindbc-sdlgfx
- bindbc-sfml
- bindbc-imgui
- bindbc-nuklear
- bindbc-raylib
- bindbc-bgfx
- bindbc-wgpu
- bindbc-zstandard
- bindbc-nng
- bindbc-openal
- bindbc-soloud
- bindbc-kiwi
- bindbc-nanovg
- bindbc-blend2d
- bindbc-lua
- bindbc-jsl
- bindbc-newton
- bindbc-freeimage
- bindbc-freetype
- bindbc-harfbuzz
- 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.
-
BindBC
- Bindings compatible with
-betterCand@nogc, using bindbc-loader. - raylib3 - Game library
- OpenGLES - Graphics API
- ENet - Networking library
- libtheora - Video codec
- libogg - Audio codec
- libvorbis - Audio codec
- libpq - PostgreSQL library
- PhysicsFS - Virtual file system
- Open Dynamics Engine (ODE) - Physics library
- ALURE - Audio library
- DevIL - Image library
- Imgui - Immediate mode GUI
- WebGPU - Modern GPU API
- SoLoud - Audio library
- sokol-d - D bindings for the sokol headers.
Game Engine Bindings
XML
- Godot-D - D language bindings for the Godot Engine's GDNative API
Game Frameworks
XML
- DAllegro5 - D binding/wrapper to Allegro 5, a modern game programming library.
- DGame - A 2D framework for the D programming Language. see http://dgame-dev.de/.
- gfm - D gamedev toolkit.
- Dagon - 3D game engine for D. see https://gecko0307.github.io/dagon/
- Dash - A free and open 3D game engine written in D. see https://circularstudios.com/dash/.
- DSFML - A static binding of SFML in a way that makes sense for D. see http://dsfml.com/.
- Voxelman - Plugin-based client-server voxel game engine written in D language
- PolyplexEngine - libpp is an XNA like framework written in D.
- rengfx - lightweight, expressive, extensible 2D/3D game engine.
Game Libraries
Status page
- PixmapPresenter - High-level display library for blitting fully-rendered frames to the screen (→ software-rendering, retro graphics).
- InMath - Games math library for D.
- Parin - A delightfully simple 2D game engine.
- PixelPerfectEngine - 2D graphics engine written in D.
- HipremeEngine - Cross Platform D-Lang Game Engine with scripting support.
- godot-math - A D port of Godot's linear algebra with unchanged semantics.
- text-mode - Virtual text mode with 8x8 Unicode font and markup language.
Games
Status page
- Would you still save the world with me if I were a worm? - Help your wormy partner find the exit of each of the 20 puzzles to eventually save the world that has fallen into a wormhole.
- K, Merge With Me - Hide-and-run game with pretty pixel art.
- Game of life - Recreation of Conway's Game of Life in D.
XML
- Spacecraft - A 3d multiplayer deathmatch space game written in D 2.0.
- Dtanks - Robot Tank Battle Game.
- Electronvolt (formerly Atrium) - FPS game with physics based puzzles using OpenGL.
- Backgammony - A Backgammon GUI for Linux built with Gtk.
- Worms Within - A bite-sized escape room game.
- Clean & Haunted - Clean a spooky haunted house.
- Runani - An endless runner game where you help cute animals.
- A Short Metamorphosis - A cute visual novel about looking at an egg.
Getting Help
- Official D Forum Learn Group - Highest-traffic site for getting D questions answered.
- D on Stack Overflow - Less traffic than the forums but possibly easier to search.
- D on Rosetta Code - Examples of how to do many basic things in D.
- D on Discord - Another very active community for D conversations and question.
- D on Discord - Another very active community for D discussions and questions.
GitHub Actions
Bare metal / kernel development
- setup-dlang - Install D compilers & DUB inside GitHub Actions
-
dub-upgrade
- Run
dub upgradetrying to repeat on network failure and using package cache on GitHub Actions
GUI Applications
Status page
- Sorting Algorithms - sorting algorithms visualizer.
- Crimson - Simple text editor.
- Inochi Session - Application that allows streaming with Inochi2D puppets.
GUI Libraries
- giD - GObject Introspection D Package Repository.
- Fluid - A declarative cross-platform user interface library for D.
- minigui - A smallish GUI widget library, aiming to be on par with at least HTML4 forms and a few other expected gui components.
- microui-d - A tiny immediate-mode UI library.
- minigui - A smallish GUI widget library, aiming to be on par with at least HTML4 forms and a few other expected gui components. It's part of the arsd libraries.