The D language is statically typed and compiles directly to machine code.
It's multi-paradigm, supporting many programming styles: imperative, object oriented, and meta-programming.
It offers features such as design by contract, garbage collection, first class arrays, closures, templates, and more.
This release includes several significant standard library updates, support for template function literals, documentation and bug fixes.
It's a member of the C syntax family, and its appearance is very similar to that of C++.
The downloads sections provides a Scripting language (ECMAScript implementation in D), a D compiler and a C/C++ compiler for D.
Here are some key features of "Digital Mars D":
· Function delegates
· Function overloading
· Out function parameters
· Nested functions
· Function literals
· Typesafe variadic arguments
· Lazy function argument evaluation
· Compile time function evaluation
· Lightweight arrays
· Resizeable arrays
· Built-in strings
· Array slicing
· Array bounds checking
· Array literals
· Associative arrays
· Strong typedefs
· String switches
· Object Oriented
· Operator overloading
· Nested classes
· Inner (adaptor) classes
· Covariant return types
· Inline assembler
· Direct access to hardware
· Lightweight objects
· Explicit memory allocation control
· Independent of VM
· Direct native code gen
· Class Templates
· Function Templates
· Implicit Function Template Instantiation
· Partial and Explicit Specialization
· Value Template Parameters
· Template Template Parameters
· Variadic Template Parameters
· Template Constraints
· Implicit Type Inference
· Contract Programming
· Unit testing
· Static construction order
· Guaranteed initialization
· RAII (automatic destructors)
· Exception handling
· Scope guards
· try-catch-finally blocks
· Thread synchronization primitives
· C-style syntax
· Enumerated types
· Support all C types
· 80 bit floating point
· Complex and Imaginary
· Direct access to C
· Use existing debuggers
· Struct member alignment control
· Generates standard object files
· Macro text preprocessor
· Conditional compilation
· Unicode source text
· Documentation comments
What's New in This Release: [ read full changelog ]
· Constructor qualifiers are taken into account when constructing objects.
· Struct members which require non-bitwise comparison are now properly compared.
· Array copy operations now always require using the slice syntax.
· Types no longer act as arguments in typeof expressions.
· The index variable in a foreach range is no longer implicitly a reference.
· Associative array entries are no longer default-initialized before assignment.
· The const attribute is no longer inherited in overriden methods.
· typeof(null) no longer implicitly converts to T.
· The Template This Parameter now changes the member function qualifier.
· Array slices are now r-values.
· Accessing a non-static field without a this reference is only allowed in certain contexts.
· Arrays no longer implicitly convert to a pointer.