Status of Dynamically Loadable D Libraries

Martin Nowak code at dawg.eu
Wed Feb 13 09:59:40 PST 2013


On 02/10/2013 11:11 PM, Nick Ulle wrote:
> What's the current status of dynamic loading (and/or linking) for D
> libraries?
>
No dynamic loading in sight yet. We need to extend the GC, find 
semantics/techniques for TLS initialization, provide tools to load 
symbols ...
What is on the way but will take some more weeks is link-time support 
for shared libraries.
https://github.com/D-Programming-Language/druntime/pull/395

> I've been playing with this a bit in hopes of calling a D shared library
> from R through the C ABI, and noticed that on Windows it seems fine, but
> on Linux dmd won't build my library unless it includes main(), and it
> segfaults if I call writeln().
>
The reasons for your crashes are missing initialization.
You could experiment with calling rt_init/rt_term which are exported 
from your shared library, but only if you're not threaded.

> What I gather is that right now, DLLs work on Windows, but on *nix,
> shared libraries cannot yet use anything from Phobos.
>
Yes, there is rudimentary support on Windows, but you'll inevitably run 
into ODR issues.
http://d.puremagic.com/issues/show_bug.cgi?id=7020#c4

> Am I correct that it's safe to dynamically load a D library on Windows?
> How out-of-date is the information in the tutorial for making DLLs on
> dlang?
>
AFAIK it should work.

> Is supporting dynamically loadable libraries a priority for the
> developers, or something that might not happen for a while?

It's a huge priority but also a huge undertaking.


More information about the Digitalmars-d mailing list