}}}
DDL stands for D Dynamic Libaries, and represents a bold step forward for D programming.
(for more information about the D Programming Language, please visit http://www.digitalmars.com/d)
DDL is a multi-faceted technology. It can be used as a plugin architecture, a replacment for DLL files or as a means for working with intermediate files. It is presently in Beta, with a release scheduled for late 2006 as an SDK and Utilities bundle (both suitable for library users).
== DDL Features ==
* Loading intermediate (binary) files in OMF and ELF formats
* Runtime linking of binary files, under Windows and Unix environments
* A common wrapper format (.ddl) that will accelerate runtime linking and binary file management
* Command-line utilities for examining and manipulating binary files
* Interface for examining binary file contents at runtime
* Completely D-coded library, suitable for use under Windows or Unix
== No more DLL Files? ==
Generally speaking, the current state of affairs with Dynamically Loaded Library support under Windows is only useful for certain applications. One cannot expect the same kind of fluid host-to-client integration one gets from other technologies. To that end, DDL aims to level the playing field between D and other technologies, as well as offer something far more superior in the end.
To those who are familiar with the pitfalls of working with DLL's under C++ and D, you will be happy to know that DDL support will provide a workaround for the following:
* Type information is shared in both the host and the loaded library
* Seamless class interop between dynamic libraries (runtime dynamic inheritance for example)
* Smaller dynamic library sizes (no more compiled-in runtimes)
* No more faults when exceptions are thrown from dll code (all loaded modules use the same exception hooks)
* Unified GC model - no more premature collections when 'new'-ing from within a loaded module
* Self-contained resource model - say goodbye to agressive file handle locking, common with windows dll files
(many of these are in response to the DLL best practicies on the D wiki: http://www.prowiki.org/wiki4d/wiki.cgi?BestPractices/DLL)