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).
- 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)