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

lightbulb_outline View ideas list

Technologies

  • dlang
  • linux
  • windows
  • osx
  • bsd

Topics

comment IRC Channel
email Mailing list
mail_outline Contact email

D Programming Language 2019 Projects

  • Prateek Nayak
    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...
  • Eduard Staniloiu
    Header generation for C/C++
    Automated C/C++ header generation from D files
  • Stefanos Baziotis
    Independency of D from the C Standard Library
    An effort to decouple D from the C standard library.
  • lesderid
    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...
  • Dan Printzell
    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...
close

2019