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