Compiler as dll
Nick Sabalausky
a at a.a
Wed Jan 28 10:10:33 PST 2009
"grauzone" <none at example.net> wrote in message
news:glpha0$dg3$1 at digitalmars.com...
> Alexander Pánek wrote:
>> grauzone wrote:
>>> John Reimer wrote:
>>>> ddl does not work for memory sharing like normal dll's, where multiple
>>>> applications have access to a single dll at runtime. It appears that
>>>> such support would be quite difficult to implement and moves in the
>>>> direction of operating system features.
>>>
>>> Couldn't this be achieved by simply mmap()-ing the file contents into
>>> memory? mmap() normally shared the memory pages with other processes.
>>>
>>> Of course, this wouldn't work if the code both isn't position
>>> independent, and needs to be relocated to a different base address. But
>>> that's also the case with operating system supported dynamic shared
>>> objects.
>>>
>>>> It does do runtime linking, however, which is extremely useful for
>>>> certain situations... specifically any sort of application that needs a
>>>> plugin architecture for D (ie.. it can link with libraries and object
>>>> files at runtime) that is gc and exception friendly.
>>>
>>> I never understood why this is needed. Can't they simply compile the
>>> plugins into the main program?
>>
>> Well, compiling them directly into the main program kinda defeats the
>> purpose of runtime-pluggable plugins, wouldn't it?
>
> But why do you want them in the first place? For Open Source projects,
> this seems to be completely pointless to me.
>
With runtime-pluggables:
1. A program can download, install and use a plugin without the program
needing to be restarted.
2. Out of all existing plugins, any arbitrary subset can be enabled without
requiring an exponential number of pre-compiled executables, without
requiring the user (or the program itself) to recompile anything, and
without needing to install any build tools on the user's system.
More information about the Digitalmars-d
mailing list