{{{ #!html }}} {{{ #!html
}}} = About DDL = {{{ #!html
}}} 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)