D scripting
Andre Pany via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Sep 5 12:19:19 PDT 2017
On Tuesday, 5 September 2017 at 18:37:17 UTC, EntangledQuanta
wrote:
> On Tuesday, 5 September 2017 at 08:13:02 UTC, Andre Pany wrote:
>> On Tuesday, 5 September 2017 at 07:32:24 UTC, EntangledQuanta
>> wrote:
>>> I would like to use D as a "scripting" language for my D app.
>>> There seems to be no such thing.
>>>
>>> Since we can include the D compiler in our distribution, it
>>> is easy to enable "plugin" capabilities, but directly
>>> interfacing with the source code seems like it would require
>>> a bit of work(duplicating the code that one wants to include
>>> so it can be linked in and "hot swapping").
>>
>> Which OS do you use? I had a similiar idea but failed on
>> windows due to some strange effects. I think they were caused
>> by the known windows dll unload bug, discussed here:
>> http://forum.dlang.org/thread/rreyasqnvyagrkvqrjos@forum.dlang.org
>>
>> At the end I decided to use the script engine from Adam Ruppe
>> (arsd) until this bug is fixed.
>>
>> Kind regards
>> André
>
>
> Yes, windows ;/ Seems that thread has some answers! Maybe bug
> him enough to fix the bug?
>
> How far did you get with it?
>
> "The problem seems to only manifest when a proper DllMain()
> method is exported from the library. If none is provided, or
> if the given implementation can be optimized away, the error
> does not ocurr."
>
> Was that the case for you too? That could be overcome with just
> using a normal function that is called right after loading?
>
> I'm curious how the exporting of code as that seems to be the
> biggest challenge(so that we don't have to hand write the
> exports ourselves).
>
>
> Thanks.
My issue was that after unload the shared library, the dll file
was still locked for deletion on the file system. Therefore I was
not able to change something in my "script" and restart it.
Somehow even after terminating in task manager, the dll file was
still locked. I assume this reproducable effect is caused by the
known issue.
I already give up at this point ):
Just an idea for you: in delphi you can set the properties of a
component (a class with runtime reflection enabled) on runtime.
You can even call the methods and events of a component. I build
a Delphi Bridge for D (see recent post on announce). It is almost
the same scenario as here are also dll calls involved.
What I want to say, you could build something like the Delphi
rtti for your D classes and make generic methods available via
the dll interface.
Kind regards
André
More information about the Digitalmars-d-learn
mailing list