D scripting

Andre Pany via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Sep 6 02:07:18 PDT 2017


On Tuesday, 5 September 2017 at 21:41:35 UTC, EntangledQuanta 
wrote:
> On Tuesday, 5 September 2017 at 19:59:27 UTC, Andre Pany wrote:
>> On Tuesday, 5 September 2017 at 19:44:40 UTC, EntangledQuanta 
>> wrote:
>>>> 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 ;)
>>
>> It is possible without modifying the compiler. In every class 
>> you want enable for runtime reflection you need to add a 
>> generic method which generates for all public 
>> properties/methods coding to fill/call them. It is a mix of 
>> templates and mixins.
>> In the end compile time reflection capabilities of D are so 
>> powerful that you can write runtime reflection with it.
>>
>> Thanks for the tip!
>>
>> Kind regards
>> André
>
> Thanks, Yeah, that is essentially what I was going to do with 
> attributes, but rather than having a member do it, have a free 
> function that tries to do the same thing...
>
> But then the question remains how to output that information so 
> it can then be used to link in to the "script" that will be 
> compiled?

While thinking about it I only remember the points which makes 
the story quite hard at the moment on windows:
The garbage collector is not shared between your exe and the 
shared libraries. There is a D Wiki which explains how to 
overcome this issue, but it seems it only works for statically 
linked libraries. For dynamically linked libraries I didn't get 
it working.
https://wiki.dlang.org/Win32_DLLs_in_D

The export attribute might also get into your way on Windows . 
There is a D Conf video about it, I think from 2016.

I do not know wheter it helps you. There is a module jsvar which 
is used in the script engine from Adam Ruppe. It is used for 
getting access to the D functionality out of the script. He also 
written a good book with information how to build runtime 
reflection with D.

Kind regards
André



More information about the Digitalmars-d-learn mailing list