D scripting

EntangledQuanta via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Sep 5 12:44:40 PDT 2017


On Tuesday, 5 September 2017 at 19:19:19 UTC, Andre Pany wrote:
> 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 ):

Hmm, I used to have that problem with windows and visual studio. 
It was a Visual studio issue. Not sure if that is what you were 
using.  Sometimes it's just programs that lock on to it for no 
good reason.

There are ways around that: Use "unlocker" to unlock the file 
before deletion. Possibly rename the file to a random name 
opening up the space. Remove the generated files later when they 
build up. Load the DLL from memory(There are some online memory 
DLL loaders).

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

But that would be quite a bit of work? Modifying the compiler? 
I'm just looking for something relatively straightforward and 
simple ;)




More information about the Digitalmars-d-learn mailing list