Compiling D inside of a D program

John Colvin john.loughran.colvin at gmail.com
Sat Dec 21 14:07:41 PST 2013


On Saturday, 21 December 2013 at 21:58:16 UTC, Mineko wrote:
> On Saturday, 21 December 2013 at 10:00:10 UTC, Kelet wrote:
>> On Saturday, 21 December 2013 at 08:55:04 UTC, Mineko wrote:
>>> This is a fairly basic question but I can't find any good 
>>> answers, so I'm asking..
>>>
>>> Anyways, I want to be able to invoke the D compiler, 
>>> whichever that might be from inside of a D program, so I can 
>>> say, compile a D script on-the-fly in some game, it's just an 
>>> idea though.
>>>
>>> To be even more to the point, how can I invoke the D compiler 
>>> inside of a D program, also, do I need to bundle said D 
>>> compiler with my program or does D have some compilation 
>>> feature inside of an already compiled program (Which I doubt)?
>>
>> Hi, I was also interested in this topic. My research suggests
>> that there is no easy or safe way to do this at the moment, as
>> thedeemon suggests. Although I think it's worth offering a
>> possible alternative: using a scripting language binding like
>> LuaD[1], DerelictLua[2], or pyd[3]. From here, you can expose
>> some functions/variables between them, and solve a lot of the
>> same problems.
>>
>> That being said, I think it would be useful to have something
>> like JavaCompiler[4]. It's not an optimal solution, but 
>> combined
>> with a minimal compiler package it could help a lot.
>>
>> As far as I know, you need to ask permission to distribute DMD
>> with your application, so it may be safer to include GDC or LDC
>> if you want to go this route. Or ask Walter, of course.
>>
>> [1]: https://github.com/JakobOvrum/LuaD
>> [2]: https://github.com/DerelictOrg/DerelictLua
>> [3]: https://bitbucket.org/ariovistus/pyd
>> [4]:
>> http://docs.oracle.com/javase/7/docs/api/javax/tools/JavaCompiler.html
>>
>> Regards,
>> Kelet
>
> Would it be legal to have my program automatically download 
> some dmd binary, that way I could always keep it up to date? 
> Given Walter here doesn't absolutely forbid my program does 
> that.

To the best of my knowledge it's totally ok to have your program 
download the latest zip from dlang.org on the client machine and 
use that.


More information about the Digitalmars-d-learn mailing list