D Programming Language

Fast code, fast.

Technologies
linux, osx, windows, bsd, dlang
Topics
programming languages, functional programming, web programming, object-oriented programming, system programming
Fast code, fast.

D is a programming language with an emphasis on powerful metaprogramming facilities on top of a robust, efficient core. Idiomatic D programs are commonly as fast as hand-optimized C code, while being reportedly shorter and easier to write, read, and change. A gradual approach to memory safety allows safe programs to be largely automatically checked, whilst relying on small and fast manually-verified primitives.

Metaprogramming in the D language relies on three core features. First, compile-time evaluation allows user code to evaluate most D code (except calls into opaque functions or certain casts) during compilation. This allows for unparalleled compile-time processing abilities, without the need to learn a different metalanguage. Second, static introspection allows D artifacts (such as modules, types, functions) to be inspected during compilation. This allows for component designs that adapt to one another at assemblage time, eliminating the rigidity of fixed interfaces - a paradigm becoming increasingly known as "Design by Introspection". Third, the D language allows strings computed during compilation to be fed back to the compiler. This allows arbitrarily complex code to be built from compact specifications such as regular expressions, EBNF/PEG grammars, SQL, automata, and many other DSLs. Each of these three pillars is enabled by the others, and the absence of any one of them would hamstring the power of the others.

D's rich feature set offers many opportunities to a variety of projects, without them being ostensibly related to advanced metaprogramming facilities. High-performance code can be terse and highly optimized without the tedium of repeated coding patterns or hand-written specializations. Highly dynamic code can combine static and dynamic language features in an expressive whole. The best, most innovative ways to use the D language are yet to be discovered.

You can learn more about D's feature set and design at dlang.org

2019 Program

Successful Projects

Contributor
lesderid
Mentor
Russel Winder, wilzbach, Andrei Alexandrescu
Organization
D Programming Language
Reference-Counted Data Structures for D
Currently, D’s built-in data structures (arrays and associative arrays) and Phobos collections (e.g. std.container.rbtree) rely on garbage...
Contributor
Prateek Nayak
Mentor
Nicholas Wilson, Ilya Yaroshenko
Organization
D Programming Language
Dataframes for D
This project aims at bringing native dataframes to D Programming Language. The main task would be to implement a dataframe which supports...
Contributor
Eduard Staniloiu
Mentor
RazvanN, Jacob Carlborg
Organization
D Programming Language
Header generation for C/C++
Automated C/C++ header generation from D files
Contributor
Dan Printzell
Mentor
Michael Franklin, Johannes Pfau, wilzbach
Organization
D Programming Language
Replace Runtime Hooks with Templates
D’s betterC mode is an important tool to be able to use D on bare-metal and embedded platforms. By disabling, for example the class support, the...
Contributor
Stefanos Baziotis
Mentor
Michael Franklin, Johannes Pfau, wilzbach, Ilya Yaroshenko, Nicholas Wilson, rainers
Organization
D Programming Language
Independency of D from the C Standard Library
An effort to decouple D from the C standard library.